tag:blogger.com,1999:blog-69226089482941684332024-03-18T11:27:07.670-07:00sweissblaugsamhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.comBlogger62125tag:blogger.com,1999:blog-6922608948294168433.post-77614673352432332482023-08-16T17:41:00.004-07:002023-08-18T16:12:06.531-07:00From Blood to Oil: A techies perspective on how the USAAF's pragmatism destroyed the Luftwaffe, dropped the A, and yet failed on it's Grandest Ambitions<p><span style="font-family: arial;"> <i style="box-sizing: border-box; caret-color: rgb(34, 34, 34); color: #222222; font-size: 17px;"> “<a href="https://reconstrategy.com/2014/05/boiling-the-ocean-or-not-2/">I’ve given you the solution. It’s up to you to work out the details.</a>” </i></span></p><span id="docs-internal-guid-aaf2cb59-7fff-d85b-5f55-22d38482fd95" style="font-family: arial;"><div><br /></div></span><div><span id="docs-internal-guid-5feaf122-7fff-c58c-eb7e-1af13357a376" style="font-family: arial;"><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">August 1943 marked a pivotal moment in the USAAF's air campaign against Nazi Germany. Over Belgium, just shy of German borders, American fighter planes reached their maximum range and were forced to turn back. This left the bombers to continue their treacherous journey unescorted — a dangerous situation as bombers, historically, had been susceptible to enemy interceptors. But the USAAF had a tactic in mind, one that didn't depend on fighter escorts.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">Rather than relying on fighters, these bombers adopted a close 'box' formation. This allowed each plane's machine guns to cover its neighbors, creating a tight web of interlocking defensive fire. With over 300 bombers flying together, this formidable defensive approach aimed to fend off enemy air attacks and reach crucial targets. Their mission was twofold: cripple the Nazi economy and decimate the German Air Force (Luftwaffe). Central to this goal were the ball bearing plants and airfield manufacturing hubs in Schweinfurt and Regensburg.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">The concept of using air power to devastate an enemy wasn't exclusive to the USAAF. World War I, marked by grueling attrition warfare, had armies searching for alternatives. With the birth of aviation, theorists across nations believed they had found their answer.</span></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><img height="39" src="https://lh5.googleusercontent.com/2XrJqutn3naQ5lCqmEluiU6Ems0dTcAOzivY5jNqgmbl4aONrRBv49n9b_1jh103XO3sVXiIFm-uryAqxZQSdQh1SjKiF0dRgaYXFXy_FAx6TJBneHCRd1OYJ0xCJBABOL70WimKHO5PYW7J5sXQXp0" style="margin-left: auto; margin-right: auto; margin-top: 0px;" width="624" /></td></tr><tr><td class="tr-caption" style="text-align: center;"><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt; text-align: left;"><span face="Arial, sans-serif" style="font-size: 12pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">Imagine attrition warfare like two heavily-supported armies battling at the frontlines.</span></p></td></tr></tbody></table><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; white-space: pre-wrap;">By targeting the enemy's economy and supply chains, it was theorized that one could debilitate an entire army. Some even suggested going a step further — attack the civilian population to break their will to fight. This doctrine, known as strategic bombing, was embraced not only by the US but also by Germany and the UK during WWII.</span></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><img height="101" src="https://lh3.googleusercontent.com/qYzwqm6T40yM5uAJmNYUPf5Tdf1pBjDEeryqppkKR0XG51_kATaTpm8r0zxBY5cztIbp1SqB9VBGtrA0gvjQbaihvw0OsJaZ22hoZ29o4wyqvoEcXwuRmHq9Qq_WIR8QYdi1VQnmYfbhashi1nCDlQE" style="margin-left: auto; margin-right: auto; margin-top: 0px;" width="624" /></td></tr><tr><td class="tr-caption" style="text-align: center;"><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt; text-align: left;"><span face="Arial, sans-serif" style="font-size: 12pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">Strategic bombing aimed to render front-line warfare redundant by directly attacking industry or civilian populations.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt; text-align: left;"><span face="Arial, sans-serif" style="white-space: pre-wrap;">What set the USAAF's approach apart were two distinctive features. Firstly, they persisted with daylight raids on specific targets. Both the UK and Germany had initially attempted similar daytime strikes, notably during the early stages of the Battle of Britain, but abandoned them due to substantial fighter-induced losses. Secondly, the US Air Forces, unique among WWII's strategic air campaign entities, remained under the Army's jurisdiction. This probably meant they had more to prove, fueling their determination.</span></p></td></tr></tbody></table><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">The Schweinfurt was costly. Sixty bombers, each carrying ten crew members, didn't return. Despite the damage inflicted on the target, German reserves ensured production wasn't halted. Another attempt on Schweinfurt was made in October, once again without escorts, relying on the 'box' formation. Sadly, the outcome was much the same: heavy bomber losses amounting to 77 lost, nearly 20% of the attacking force.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">Throughout this post, I’ll delve deeper into the strategies employed in the air war over Europe from 1943 to 1945, using aerial claims data from both the USAAF and Luftwaffe. This analysis will highlight how the USAAF weakened the Luftwaffe's relative and then absolute fighting capabilities.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">Furthermore, a broader narrative emerges: the challenges institutions face when adapting to novel technologies. As a data scientist with experience in AI and machine learning, I've observed parallels in how teams within organizations navigate new technological terrains. The overarching lesson is the importance of adaptability and results-oriented strategies, as exemplified by the USAAF's pivot in 1944. (This thesis taken from <a href="https://www.uapress.ua.edu/9780817353469/to-command-the-sky/">To Command the Sky</a>).</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">Aerial Claims Data</span></p><div><span><br /></span></div><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">Luftwaffe Claims can be found <a href="http://don-caldwell.we.bs/jg26/claims/tonywood.htm">here</a>. USAAF claims can be found <a href="https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwjExvjRpOCAAxXlHEQIHWqZCyAQFnoECBIQAQ&url=https%3A%2F%2Fww2aircraft.net%2Fforum%2Fthreads%2Fusaaf-victory-credits.41321%2Fpost-1142839&usg=AOvVaw05GupzeSysD6zZ9WLrPTIP&opi=89978449">here</a>.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 12pt; white-space: pre-wrap;">Code for this post can be found <a href="https://github.com/samcarlos/luftwaffe_locations">here</a> and <a href="https://github.com/samcarlos/eighth_air_force_blog/tree/main">here</a>.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">The foundation of this analysis is anchored in the aerial claims data from both the USAAF and the Luftwaffe during WWII. These claims, often referred to as 'victories' or 'kills,' are considered 'confirmed' based on the respective criteria set by each air force. Both datasets mention the pilot lodging the claim and the associated date.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 12pt; white-space: pre-wrap;">However, recording methods between the two reveal discrepancies. The Luftwaffe's claims list seems incomplete, especially with noticeable gaps in the Eastern Front post-1945. Such gaps may be a result of lost records during the war's chaos. Furthermore, the Luftwaffe's standards for confirming claims appeared to be more lenient than those of the USAAF, potentially becoming even more relaxed as the war dragged on.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">It's worth noting that aerial claims have a notorious history of exaggeration, sometimes by multi-fold, due to issues like double-counting or in-battle confusion. Despite this, I believe they offer a useful metric for comparing relative changes, shedding light on the evolving combat capacity of the opposing forces. My specific focus will be on the number of pilots logging claims within specific time frames.</span></p><p dir="ltr" style="line-height: 1.38; margin: 0pt 11pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 468px; overflow: hidden; width: 624px;"><img height="468" src="https://lh4.googleusercontent.com/Fopv7YilrQw-iEFHFLQfrNzP3djnWgOxU5hD7Svg80uIigyU8moI5m9mGfc_oBwyz2Binq_RgbCvS4s49dFepPFaXcJerAF88yEgfMUe2UHgp7TrB4cHl7myYKaFH7uVNg8syyfs4INVtNHCQDmFKus" style="margin-left: 0px; margin-top: 0px;" width="624" /></span></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">The chart above provides a breakdown of the Luftwaffe's claims throughout WWII, with color-coding based on the nationality of the targeted aircraft. This data presents a comprehensive chronicle of the air war. After significant engagements like the fall of France and the Battle of Britain, the Luftwaffe's primary theater of operations transitioned to the Eastern Front in June 1941. This remained the focus until around the summer of 1943, after which the Luftwaffe began reallocating resources to counter the USAAF assaults over Western Europe.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">A noteworthy observation is that the peak monthly claims occurred in the summer of 1943. Yet, a bulk of these were against the Soviet forces. Soviet planes were, on average, easier targets compared to those of the Western Allies. Hence, a decline in raw numbers doesn't directly equate to diminished combat proficiency. The Luftwaffe sustained formidable fighting prowess up until mid-1944, post which there was a precipitous decline in claims.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">The questions this poses are intriguing: How did the Germans sustain their aerial efficacy for so long? And what transpired post mid-1944 that saw them receding from the skies?</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">A shift in the mental model</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">The setbacks during the Schweinfurt raids highlighted the USAAF's need for escorts. Several technological innovations were fast-tracked, including the introduction of drop tanks to extend fighter range and the P-51 Mustang, a longer-range escort that outperformed German propeller planes during the conflict.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">However, tactical changes were equally vital. Initially, fighters were tasked with the primary duty of ensuring bombers returned safely. In effect, this meant they had to stay close to bombers, defending them. Strict regulations, like the rule preventing fighters from descending below 18,000 ft, gave German pilots an escape route: simply dive below that altitude. But by granting the fighters more flexibility, the USAAF could take the battle to the Germans.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">These shifts resulted in a significant uptick in USAAF aerial claims, evident in the graph below.</span></p><p dir="ltr" style="line-height: 1.38; margin: 0pt 11pt; text-align: center;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 468px; overflow: hidden; width: 624px;"><img height="468" src="https://lh3.googleusercontent.com/d5XDvgwxc9o56ZCh1-PWZQb0cIqo2vftSG52H3YPxqkgnml_xHE2JU41Qi7cYoY7jSuCXKMz7mgOj9R3GEl-z8Wxbj5_G4NtY3aOvlkcORkXuo5UPL7F2dx2Geb_FYO87aY8pzpitOrQd06-SngNUNc" style="margin-left: 0px; margin-top: 0px;" width="624" /></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">The claims are categorized into the European (ETO) and Mediterranean (MTO) theaters of operations and color-coded by aircraft type. The bulk of these claims targeted German aircraft, although planes from Italy and other Axis powers are also included.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">The 'first duty change' saw the USAAF claims in the ETO surge. Interestingly, this increase wasn't just due to the introduction of the P-51, indicating that the tactical shift alone provided a significant advantage.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">While the USAAF did lose more planes in the first half of 1944, the proportion of losses relative to their total numbers declined sharply, attributable to the new tactics and the sheer volume of USAAF aircraft.</span></p><p dir="ltr" style="line-height: 1.38; margin: 0pt 11pt; text-align: center;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 468px; overflow: hidden; width: 624px;"><img height="468" src="https://lh3.googleusercontent.com/2L9igjxs48JN2AWJXcB9vr4EFQCso5i_1VVfiEMq-_HbZ1_cVv9BGwGo1XFI3bjXPt2x4RLMwuY98LgQYgTnhS_-5V20uAXpiuKW1A6tdi_ZgtBuNwP4eMJeaVQR9cearcXPy6-GdfB6iMNY7hLzqOg" style="margin-left: 0px; margin-top: 0px;" width="624" /></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">A pivotal realization was that high-altitude precision bombing wasn't as effective as hoped. Many bombs missed their targets. In response, the USAAF devised a new strategy: using bombers as bait to draw out and then decimate enemy fighters in the air.</span></p><p dir="ltr" style="line-height: 1.38; margin: 0pt 11pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 414px; overflow: hidden; width: 488px;"><img height="414" src="https://lh4.googleusercontent.com/ivQ1jGjem3FUBjOftxIjDeO5E0mb_ztTD411da8XUfvbNr5TKxZ3_3s1qoCmMUNfgCPa75fdrlTXRRIbua-erSVXMJY5lVAVwQIqWaKS1azDKdvSTz1QtJxArIHUUtLhPxiST0usspj0uiRFZacIjVI" style="margin-left: 0px; margin-top: 0px;" width="488" /></span></span></p><br /><p dir="ltr" style="line-height: 1.38; margin: 0pt 11pt; text-align: center;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">(Schematic of new strategy was focusing on destroying enemy fighters in the air and using bombers as ‘bait’).</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">To compare the relative combat capabilities of the air forces, I've analyzed the number of pilots with claims over the last 30 days - a timeframe that offers a balance between reducing noise and highlighting short-term trends.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">For the USAAF, I considered pilots making claims within the ETO/MTO, primarily against German aircraft, especially post-mid 1943 when Italy exited the war. For the Luftwaffe, I divided the data between those who downed a USAAF plane and their overall claims, given their multifront engagements.</span></p><p dir="ltr" style="line-height: 1.38; margin: 0pt 11pt; text-align: center;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 468px; overflow: hidden; width: 624px;"><img height="468" src="https://lh3.googleusercontent.com/xtaecxF5xnqYWDH-GS91TnGlli_9XowG1dtGxtjNND6iOj2SQ41E05Ifzr8G4_r-hv1hXIEumNlh8mAJ-ia-AntqFejcf4m-K-eYrKclTpleNzjXfzq_gD-DTKcB-Z2mpfGEEp2VRhyvKpxuxZ2Eu2k" style="margin-left: 0px; margin-top: 0px;" width="624" /></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">The above plot indicates that, by early 1944, the USAAF had roughly matched the number of Luftwaffe pilots making claims against them. Considering the USAAF's more stringent claim standards, this could suggest an even more significant relative strength.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">A subsequent plot detailing the first and last claim dates of Luftwaffe pilots reveals a stark contrast to the USAAF approach. While USAAF pilots were rotated out to train newcomers, German pilots mostly flew until they were incapacitated or killed. Thus, a pilot's last claim can potentially indicate their exit from the war.</span></p><p dir="ltr" style="line-height: 1.38; margin: 0pt 11pt; text-align: center;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 468px; overflow: hidden; width: 624px;"><img height="468" src="https://lh4.googleusercontent.com/oUZEPFZEQwIKCWpsVmVr1j6xpzUaEu7n3moZOlPd7yYqIzT2Gl1ong6zAu7JAoKxv9Gkmf5QHYeU9p257E3D5s_Gw6cCIphQ6Jf2WpSDEa3uGrXYKpSjAoAeK2mVz2hvwpfqrNtpwgV4KatAil36_Mg" style="margin-left: 0px; margin-top: 0px;" width="624" /></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">A conspicuous surge in attrition is visible in early 1944, marked by pilots making both their first and last claims. This suggests that inexperienced pilots were hastily deployed.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">A deeper analysis suggests that most of the pilot attrition during this period involved recent claim-makers. While German pilots in WWII were famed for their high claim counts (the top 100 fighter pilots are all WWII Germans), how did their elite fare?</span></p><p dir="ltr" style="line-height: 1.38; margin: 0pt 11pt; text-align: center;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 468px; overflow: hidden; width: 624px;"><img height="468" src="https://lh5.googleusercontent.com/XY_dAsdE4hmA6zEpH7o5fXlVXqtwfHtXdEklG0dpS4NoSxkJpPyNaEo6FiP2xxwAU6qvbSTN36vDNkRcEBklR2Y5NVHfoewBtl-Fhmf17sT0Zg6lLAFY5FqJqrXLBY0v1s5Gsyr_RHioxVtH1uCNeBI" style="margin-left: 0px; margin-top: 0px;" width="624" /></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">When sorting pilots into categories based on their claims - 1-3, 3-5, 5-10, and over 10 - we observe that the USAAF had more pilots in the 0-3 and a similar number in the 3-5 category in early 1944. By the end of 1945, the USAAF matched the Luftwaffe in the 5-10 claims category but trailed in the over 10 category. Notably, the count of Luftwaffe pilots with over 10 claims surpassed other categories, save for 0-3. This discrepancy might arise from data preservation biases, where records of high-scoring aces were more likely preserved.</span></p><p dir="ltr" style="line-height: 1.38; margin: 0pt 11pt; text-align: center;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 468px; overflow: hidden; width: 624px;"><img height="468" src="https://lh6.googleusercontent.com/zjUXbQPSJbZ0_FxBZ_tE0_ZK-kCTvAaq0T5KBTZE5pXvZrko6rsJmamPimKkrSTk8JERZcZliHq7Wz916EVsmvZhU8ZGrLmDNkE9Fm_veQdeP1A-DMZ2cqiDM8PUGdxZ_oqsvHXKfnylf1HfTPOx-qY" style="margin-left: 0px; margin-top: 0px;" width="624" /></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">The data suggests that while the USAAF didn't boast as many top-tier aces as the Luftwaffe, the majority of claims were made by pilots with fewer than five claims. Elite pilots, while significant, weren't the deciding factor. Instead, the key was having a large contingent of competent pilots rather than a handful of elites.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">The USAAF's strategy during this time was to wear down the Luftwaffe's vast pool of average pilots, thereby curbing their overall combat capability, if not outright defeating them.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">Oil Campaign</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">Oil remained a pivotal resource throughout the war. Germany, lacking abundant domestic oil reserves, primarily imported its oil, notably from Romania, and also sought to seize it from Russia. In response to these challenges, Germany devised methods to convert coal into oil. This process, though costly, provided a crucial buffer against oil shortages. However, this lifeline became vulnerable when the USAAF began targeting these coal-to-oil facilities.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">Starting in May 1944, the USAAF initiated a relentless campaign against German oil infrastructure, with significant impacts on German oil stocks and production manifesting within just a few months.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-right: 11pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 440px; overflow: hidden; width: 624px;"><img height="440" src="https://lh6.googleusercontent.com/dSsE6hB3KSW3rrojbTFnHXCe9q27Z3oz73F3oUZw92EpfkRnQ9DIf7-1g4EfVXRJj0ykfrQ_abuc3XkJCGrrvr-FYwzvhfkZfKAwRIHy2_A3kb67xsUno01bRdeiYZEoLqDOQO-691pkmncWUG9vHlw" style="margin-left: 0px; margin-top: 0px;" width="624" /></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">The above plot, sourced from the US Strategic Bombing Surveys, displays the interplay between consumption, production, stocks, and the USAAF's sustained assaults on oil facilities. There was a pronounced decline in production beginning in May.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">Oil production facilities presented an optimal target for Allied bombers. These plants were large, making them easier to target from the air. Their intricate machinery was susceptible to damage and challenging to repair quickly. More crucially, oil was indispensable to the German war effort, and any disruption in its supply would significantly cripple their operational capabilities.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">The strategy shifted to resemble a domino effect: by crippling primary (upstream) processes, subsequent (downstream) processes would inevitably collapse. This approach yielded stark results, evident in the noticeable dip in both the number of Luftwaffe pilots with recent claims and overall claims during this period.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><b>Conclusions</b></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">This analysis has delved into three central strategic models the USAAF employed over Europe during WW2:</span></p><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: none; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 15pt;"><span style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">- The belief that bombers could penetrate enemy defenses without escorts, primarily by targeting and decimating German factories.</span></p></li><li aria-level="1" dir="ltr" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: none; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">- The strategy of using escorts to directly combat and suppress the Luftwaffe in aerial battles.</span></p></li><li aria-level="1" dir="ltr" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: none; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 0pt;"><span style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">-The oil campaign, which identified and exploited a significant vulnerability in the German war machine.</span></p></li></ul><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">Individually, these strategies might not have been sufficient to bring about Germany's defeat. In hindsight, certain foundational assumptions underlying these tactics were flawed. Yet, that's not the ultimate takeaway. What stands out is the USAAF's adaptability and pragmatism. Even in the face of overarching strategic challenges, they maximized their available technology and resources. These significant contributions and the evolving role of airpower in warfare paved the way for the USAAF to transition into an independent military branch. By 1947, they had dropped the "Army" designation, leading to the formation of the United States Air Force (USAF).</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">Appendix Plot</span><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><br /></span><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">Targets and Losses of 8th Air Force 1943-1944</span><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 640px; overflow: hidden; width: 560px;"><img height="640" src="https://lh6.googleusercontent.com/EmMp6hl6pcfz5I88cCVynt0lfrRx3IJxoOqFdHk3AQGCpPlw9bfuoAq4JrbCaL6RP5BPsIKGUvDlT7-NfiPIRn7lBzEeHMYAOLdYZHdwKzPUI6GrDrDC9UAausy0sLGIOtylkfX_PhIPzII2rgZR780" style="margin-left: 0px; margin-top: 0px;" width="560" /></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 640px; overflow: hidden; width: 560px;">Are claims Accurate?</span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 640px; overflow: hidden; width: 560px;"></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 640px; overflow: hidden; width: 560px;">Looking at monthly figures of B-17 losses for the eighth Air Force between 6/43 - 7/44 (for which I have data for) I plot against claims of B-17s in Luftwaffe database. I use B17s since the majority of these were specifically used by the 8th Air Force in Europe and I have data on the 8th Air Force losses. Below we can see they track each other reasonably well. It should not align perfectly as the losses data are for all causes (accident, weather, flak, etc) not just fighters.</span></span></p><div class="separator" style="clear: both; text-align: center;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 640px; overflow: hidden; width: 560px;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvbCiR-kcBDSm0lnSTOr5wQpB58Vzvlr0sKqEC-ZUfR2tpwB400pkGXJiVcAyOJHOJGBAap_5hO_nK4Q2QRLlPXjnUOMAi7DIfW_VtnFVDCaa8SYpjcQAPc6aGvvlI-2avzNpW_SZ1ZESTnDZ5NgU3ecMOIPF2Eg_T5yMqpwjfE6rsUvCh6ARFNx1EDao/s800/Claims_vs_actual_scatter.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="700" data-original-width="800" height="350" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvbCiR-kcBDSm0lnSTOr5wQpB58Vzvlr0sKqEC-ZUfR2tpwB400pkGXJiVcAyOJHOJGBAap_5hO_nK4Q2QRLlPXjnUOMAi7DIfW_VtnFVDCaa8SYpjcQAPc6aGvvlI-2avzNpW_SZ1ZESTnDZ5NgU3ecMOIPF2Eg_T5yMqpwjfE6rsUvCh6ARFNx1EDao/w400-h350/Claims_vs_actual_scatter.png" width="400" /></a></span></span></div><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 640px; overflow: hidden; width: 560px;"><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc_UD--2O45m7MsUS_HIrGQGWJjqvYLI3gMzqtG9S1118tja2qa0X2h3tUtlJLUTHe4NKctZJCO7yJl4MemERnDvhE2mBx7ucKZ1KhiDom2UYrCdoN8QjLS9LEuSXapcgWm-zR_PtV9CjgFYOC5iS3bMM3hnpVxwUjoTYPcN35juCVNOKIb--A5BKM2KU/s800/Monthly%20losses%20b17%20vs%20claims%20by%20date.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="700" data-original-width="800" height="350" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc_UD--2O45m7MsUS_HIrGQGWJjqvYLI3gMzqtG9S1118tja2qa0X2h3tUtlJLUTHe4NKctZJCO7yJl4MemERnDvhE2mBx7ucKZ1KhiDom2UYrCdoN8QjLS9LEuSXapcgWm-zR_PtV9CjgFYOC5iS3bMM3hnpVxwUjoTYPcN35juCVNOKIb--A5BKM2KU/w400-h350/Monthly%20losses%20b17%20vs%20claims%20by%20date.png" width="400" /></a></div><br /></span></span><p></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 640px; overflow: hidden; width: 560px;">Interestingly regression analysis shows claims are ~half of losses so Luftwaffe is roughly double counting. </span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 640px; overflow: hidden; width: 560px;"><br /></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 640px; overflow: hidden; width: 560px;"><br /></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><br /></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 640px; overflow: hidden; width: 560px;"><br /></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 15pt; margin-top: 15pt;"><span face="Arial, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 640px; overflow: hidden; width: 560px;"><br /></span></span></p></span><br class="Apple-interchange-newline" /></div>samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com0tag:blogger.com,1999:blog-6922608948294168433.post-44891912239948987082023-05-04T09:10:00.005-07:002023-05-04T09:10:57.577-07:00USAAF Claims by Fighter Type and Theater in WW2<p>Using data from the types of fighter planes a specific fighter group flew and USAAF aerial claim victory I was able to get the number of aerial victories by the USAAF by plane flown. Below is a time series showing this for separated by European Theater of Operations (ETO) and Mediterranean Theater of Operations (MTO).</p><p>One can see that between the heavy fighting months of early 1944 (especially after Feb) the P-51 had a majority of claims compared to P-47's and P-38s in the ETO.</p><p><br /></p><p><br /></p><p> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3Puzpg8ktrSPYZvWra_HI8aDdTKCldHaVXHuVTTVGgijX0tGC7WZrwUONAWBp2U2SoFZR1nSrmkrbwR3w0yOwBnqv-ZqjHsRAqpMYMeZp7I9llM7xtmzzmGWvSApVAuTKfV6EvkOvUmwVeO1GUjitIKs-ZaeY_2vuOP2aFsRc3TR725RgQsAMghBB/s1000/USAAF%20Claims%20by%20Fighter%20Type%20and%20Theater.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="800" data-original-width="1000" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3Puzpg8ktrSPYZvWra_HI8aDdTKCldHaVXHuVTTVGgijX0tGC7WZrwUONAWBp2U2SoFZR1nSrmkrbwR3w0yOwBnqv-ZqjHsRAqpMYMeZp7I9llM7xtmzzmGWvSApVAuTKfV6EvkOvUmwVeO1GUjitIKs-ZaeY_2vuOP2aFsRc3TR725RgQsAMghBB/s16000/USAAF%20Claims%20by%20Fighter%20Type%20and%20Theater.png" /></a></div><br /><p></p>samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com0tag:blogger.com,1999:blog-6922608948294168433.post-81163097318872509022022-08-22T00:30:00.001-07:002022-08-22T00:30:00.207-07:00Monthly Movement and Losses of the Luftwaffe 1939-1945 Infographic<p></p><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXqds8lMP1VJD07gp2Cqy3rX1V5f861wyDwsDh_G17AS-Z7mMnJ7CnbB2hpJYY2bb_YikNtpjVmYv3KPcUjwSGt5zRB5lUb6j_j5lR9-ymOkWdGSQOn58BDfcjD5rL3KjmCzgn4Q5PaOekgu1nVDIsiu-GzKKt84LWZR4bMYgQdMzTKZjFYXSB2bfu/s1169/1944-01-15__1944-05-15_attrition_over_reich.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1169" data-original-width="1050" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXqds8lMP1VJD07gp2Cqy3rX1V5f861wyDwsDh_G17AS-Z7mMnJ7CnbB2hpJYY2bb_YikNtpjVmYv3KPcUjwSGt5zRB5lUb6j_j5lR9-ymOkWdGSQOn58BDfcjD5rL3KjmCzgn4Q5PaOekgu1nVDIsiu-GzKKt84LWZR4bMYgQdMzTKZjFYXSB2bfu/s16000/1944-01-15__1944-05-15_attrition_over_reich.gif" /></a></div></div><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><div class="_3cjCphgls6DH-irkVaA0GM " data-testid="comment" style="border: 0px; font-family: IBMPlexSans, Arial, sans-serif; font-size: inherit; font-stretch: inherit; line-height: inherit; margin: 0px; padding: 2px 0px; text-align: start; vertical-align: baseline; width: 659px;"><div class="_292iotee39Lmt0MkQZ2hPV RichTextJSON-root" style="border: 0px; color: var(--newCommunityTheme-bodyText); font-family: "Noto Sans", Arial, sans-serif; font-size: 14px; font-stretch: inherit; font-style: inherit; font-variant-caps: inherit; line-height: 21px; margin: 0px 0px -1px; overflow: auto; padding: 0px 0px 1px; vertical-align: baseline; word-break: break-word;"><p class="_1qeIAgB0cPwnLhDF9XSiJM" style="border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant-caps: inherit; line-height: inherit; margin: 0px; padding: 0px 0px 0.25em; vertical-align: baseline;">I created this infographic where you can see the monthly locations, movements, and for the middle of the war losses of the German Air Force in WWII. I cut the map into 2 latitude by 2 longitude squares and counted the number of aircraft within that square. I then color coded it by different type of aircraft. In the lower left of each square are the number of fighters (these include single engine, twine engine, and night fighters) and in the upper right of each square there are the number of bombers (either ground attack or general bombers).</p><p class="_1qeIAgB0cPwnLhDF9XSiJM" style="border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant-caps: inherit; line-height: inherit; margin: 0px; padding: 0.8em 0px 0.25em; vertical-align: baseline;">Before February 1942 I estimate the sizes of groups as the data for number of planes are not available before than. Each vertical line heigh shows the number of planes maxing out at 100 before flowing over into subsequent lines. There can be 10 lines each representing a max of 1000. Starting February 1942 through December 1944 we not only have accurate data on the monthly number of planes at each location but we also see the monthly losses during that time period as well.</p><p class="_1qeIAgB0cPwnLhDF9XSiJM" style="border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant-caps: inherit; line-height: inherit; margin: 0px; padding: 0.8em 0px 0.25em; vertical-align: baseline;">In order to visualize the movements and losses I based the graphic as if the data came from a turned-based strategy game. Here I visualize two phases; a movement phase followed by a ‘battle phase’ which consists of two additions to the original visualization showed. 1) the hot spots of the war and 2) the planes destroyed fall off into place in this time series plot at the bottom.</p><p class="_1qeIAgB0cPwnLhDF9XSiJM" style="border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant-caps: inherit; line-height: inherit; margin: 0px; padding: 0.8em 0px 0.25em; vertical-align: baseline;">The full infographic can be found on YouTube (I cannot load the entire GIF on blogger). All data collection, formatting, and plotting was done in R. </p><p class="_1qeIAgB0cPwnLhDF9XSiJM" style="border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant-caps: inherit; line-height: inherit; margin: 0px; padding: 0.8em 0px 0.25em; vertical-align: baseline;"><br /></p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/wnMIx-DsD6g" width="320" youtube-src-id="wnMIx-DsD6g"></iframe></div><br /><p class="_1qeIAgB0cPwnLhDF9XSiJM" style="border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant-caps: inherit; line-height: inherit; margin: 0px; padding: 0.8em 0px 0.25em; vertical-align: baseline;"><br /></p><p class="_1qeIAgB0cPwnLhDF9XSiJM" style="border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant-caps: inherit; line-height: inherit; margin: 0px; padding: 0.8em 0px 0.25em; vertical-align: baseline;">Luftwaffe Data came from ww2.dk</p><p class="_1qeIAgB0cPwnLhDF9XSiJM" style="border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant-caps: inherit; line-height: inherit; margin: 0px; padding: 0.8em 0px 0.25em; vertical-align: baseline;">and Map data came from <a href="https://web.archive.org/web/20210304022330/https://web.stanford.edu/group/spatialhistory/cgi-bin/site/pub.php?id=51">here</a></p><p class="_1qeIAgB0cPwnLhDF9XSiJM" style="border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant-caps: inherit; line-height: inherit; margin: 0px; padding: 0.8em 0px 0.25em; vertical-align: baseline;">Code can be found here: <a class="_3t5uN8xUmg0TOwRCOGQEcU" href="https://github.com/samcarlos/luftwaffe_locations" rel="noopener nofollow ugc" style="border: 0px; color: var(--newCommunityTheme-linkText); font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant-caps: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">https://github.com/samcarlos/luftwaffe_locations</a></p><p class="_1qeIAgB0cPwnLhDF9XSiJM" style="border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant-caps: inherit; line-height: inherit; margin: 0px; padding: 0.8em 0px 0px; vertical-align: baseline;">For further information on this graphic please see this <a href="https://youtu.be/fnLJOYIe1bU?t=1">presentation</a></p></div></div></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><br /> <p></p>samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com0tag:blogger.com,1999:blog-6922608948294168433.post-16807257668252522912022-06-22T11:00:00.007-07:002022-06-22T11:00:00.201-07:00Visualizing the Invasion of the Soviet Union with Luftwaffe Locations <p>On June 22 1941 (81 years ago) Nazi Germany invaded the Soviet Union with the largest military force assembled in history. Behind the ground troops the Luftwaffe (German Air Force) quickly setup forward bases to support the campaign. Using data from http://ww2.dk I put together an infographic visualizing the monthly movements of the Luftwaffe during this time (map borders are current not the ones that existed in 1941). </p><p>One can see planes flying into Poland from the west (Denmark, Norway, France, Belgium, and The Netherlands were conquered the previous year) and Greece (conquered the previous month) right before the campaign. As the Germans advanced along the Northern, Central, and Southern fronts one can also see the indecisive plan of attack. First they locate more planes to the North to attack Leningrad and then shift focus to the attack on Moscow. </p><p>Stopped outside of Moscow in the winter of 41/42 the invasion did not succeed in taking over the USSR. Instead the conflict lasted another three and a half years and ended in May 1945 when the USSR took over Berlin - about 1000 miles from Moscow.</p><p>Code can be found here https://github.com/samcarlos/luftwaffe_locations</p><p><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6Rb2A4Oy2ZZKwddKBI6KG9GLSyXpQGk3IBhMLwNnX0H60O87op_KjIW7r1aoyonHMx-D_Hb5WyeCAhwRXvjNVxfgJU1fDV26rLCwSayjFDdq3mX3WGdsuM2a81smjsUguTwbZmqgMzEnhGSZoVFBy9Ob3oMCkYjCsYB6Xy9_D_JnkoFJhQeeSCfb8/s1000/barbarosa.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="829" data-original-width="1000" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6Rb2A4Oy2ZZKwddKBI6KG9GLSyXpQGk3IBhMLwNnX0H60O87op_KjIW7r1aoyonHMx-D_Hb5WyeCAhwRXvjNVxfgJU1fDV26rLCwSayjFDdq3mX3WGdsuM2a81smjsUguTwbZmqgMzEnhGSZoVFBy9Ob3oMCkYjCsYB6Xy9_D_JnkoFJhQeeSCfb8/s16000/barbarosa.gif" /></a></div><br /><p></p><div>If you like this plot and want to see the first two years of the war through plane movements check out this post I wrote up <a href="https://scweiss.blogspot.com/2022/06/wip.html">here</a>. </div>samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com0tag:blogger.com,1999:blog-6922608948294168433.post-34606092702912007472022-06-06T17:03:00.056-07:002022-06-21T09:11:59.308-07:00Nazis, Data, and Planes: A Data Science Tour of the Luftwaffe in WW2 Part I 1939-1942<div class="separator" style="clear: both; text-align: center;"><i>"What now?" Adolf Hitler - September 1939 upon learning UK will declare </i><i>war on Germany</i></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><span id="docs-internal-guid-ce61935a-7fff-7865-c65d-d5fae7aa6518" style="text-align: start;"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">June 6, 1944. Imagine you’re Nazi Germany. The western allies just launched the largest amphibious operation in history and landed in Normandy France. What do you do? </span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">Send in the navy? Yea, that's a good idea against an amphibious landing. Better to sink the ships carrying the troops than fight the troops on land. Except you don't have much a navy at this point. Certainly not one that can travel to northern France and make a dent against the invading armada. </span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">What about the army? Yea, not a bad idea either. But the vast majority of your army is on the eastern front fighting the soviet union. What forces you do have can't travel too quickly due to incessant air attacks and the damage they've done to roads, bridges, and trains. It will take time to get large amount of tanks and artillery necessary for a counteroffensive to reach the area. Time you don't have. </span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">Perhaps you see the writing on the wall. With the Russian's coming from the East, western allies from the south through Italy, and now a force in France it ... doesn't look good. </span><span style="font-family: Arial; white-space: pre-wrap;">Maybe you suggest surrender? HA! After what you’ve done? No, you have no choice but to fight this one out till the end. </span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; white-space: pre-wrap;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; white-space: pre-wrap;">So what does Nazi Germany do? They send in </span><span style="font-family: Arial; white-space: pre-wrap;">the</span><span style="font-family: Arial; white-space: pre-wrap;"> force relied </span><span style="font-family: Arial; white-space: pre-wrap;">on time and again. Whether it's providing support during an offensive, hastily sending them in defense, or resupplying units encircled by the enemy. They send in the </span><span style="font-family: Arial; white-space: pre-wrap;">Luftwaffe</span><span style="font-family: Arial; white-space: pre-wrap;">.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; white-space: pre-wrap;"> </span></p></span></div><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr4fpSBVUAmwI9aNY_f-DGZeTX0Um1yrHIVbAlUn2fD9C1aWxbZdOsoobCeGpTOgvRadowKFNNxx9s9VgLohYACZcsDRAc5rtjn7I-bZRJ4d9kITZw-kKKuIhYC8J4YDQsDsNmA91I8WqceJuR04pTHsgjcIkHM05zuy39fUSP20NEwuZ1HC62Yv2i/s1000/normandy_invasion.gif" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="500" data-original-width="1000" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr4fpSBVUAmwI9aNY_f-DGZeTX0Um1yrHIVbAlUn2fD9C1aWxbZdOsoobCeGpTOgvRadowKFNNxx9s9VgLohYACZcsDRAc5rtjn7I-bZRJ4d9kITZw-kKKuIhYC8J4YDQsDsNmA91I8WqceJuR04pTHsgjcIkHM05zuy39fUSP20NEwuZ1HC62Yv2i/s16000/normandy_invasion.gif" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Luftwaffe Sizes, Types, and location by Month<br /></td></tr></tbody></table><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><span style="text-align: start;"><span style="font-family: Arial;"><span style="white-space: pre-wrap;"><br /></span></span></span></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: start;"><span style="font-family: Arial;"><span style="white-space: pre-wrap;"><br /></span></span></span></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: start;"><span style="font-family: Arial;"><span style="white-space: pre-wrap;"><br /></span></span></span></div><div class="separator" style="clear: both; text-align: center;"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: start;"><span><span style="font-family: arial; white-space: pre-wrap;">In one of the largest air movements of the war the Germans send hundreds of planes from Germany to France leaving the heartland temporarily exposed to allied bombers. With most of the specialized ground attack aircraft awaiting the upcoming summer offensive in the east the plan was to attach bomb racks to the fighter planes in order to provide ground attack support. </span></span></p><div><span style="font-family: Arial;"><span style="white-space: pre-wrap;"><br /></span></span></div></div><div class="separator" style="clear: both; text-align: center;"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: start;"><span style="font-family: Arial;"><span style="white-space: pre-wrap;">In preparation of the fight a Luftwaffe field Marshal sent his pilots the message: </span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: start;"><span style="font-family: Arial;"><span style="white-space: pre-wrap;"><br /></span></span></p></div><div class="separator" style="clear: both;"><span style="text-align: start;"><i>"Men of Luftflotte 3! The enemy has launched the long-announced invasion. Long have we waited for this movement, long have we prepared ourselves, both inwardly and on the field of battle, by untiring, unending toil. Our task is now to defeat the enemy. I know that each one of you, true to his oath to the colors, will carry out his duties ... Great things will be asked of you, and you will show the bravest fighting valor. Salute the Fuhrer." [1, </i></span><span style="text-align: start; text-indent: -37.79527282714844px;"> </span><span style="text-align: start; text-indent: -37.79527282714844px;">p.280</span><i style="text-align: start;">]</i></div><div class="separator" style="clear: both;"><span style="font-family: Arial; text-align: start; white-space: pre-wrap;"><br /></span></div><div class="separator" style="clear: both;"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: start;"><span style="font-family: Arial;"><span style="white-space: pre-wrap;">And the military effect of moving hundreds of planes, pilots, and material from Germany into France was ... bubkus.</span></span></p><div><span style="font-family: Arial;"><span style="white-space: pre-wrap;"><br /></span></span></div></div><div class="separator" style="clear: both;"><span style="text-align: start;"><span style="font-family: Arial;"><span style="white-space: pre-wrap;"><br /></span></span></span></div></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNZ9PO0vsgHZZ-WtM2EY0fmP_VFuSz_CrtBqrWAL2LI6QbbOVX03kfHo56DpNlo922YNot9vyYxojOIoZJ1MKhw7droqiJKS8YxYmoTCqIeygTA2VcYnvI2hebrsehL_oUEwX501ERil_JzvlGR_GPcWOf0VOQq02-ASc5eLj7Xrb6c0Gy0jQZbi1h/s1000/first_half_44_fighters_lost_france.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="618" data-original-width="1000" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNZ9PO0vsgHZZ-WtM2EY0fmP_VFuSz_CrtBqrWAL2LI6QbbOVX03kfHo56DpNlo922YNot9vyYxojOIoZJ1MKhw7droqiJKS8YxYmoTCqIeygTA2VcYnvI2hebrsehL_oUEwX501ERil_JzvlGR_GPcWOf0VOQq02-ASc5eLj7Xrb6c0Gy0jQZbi1h/s16000/first_half_44_fighters_lost_france.png" /></a></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">The planes landed in airfields without ammunition or supplies. Closer to England, the western allies were able send short range fighters that were previously unable to fly to Germany and fight the Luftwaffe there. </span></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both;"><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">The idea that sending the air force into a region where allied fighters were in great strength, with little supplies, and lack of fighter-bomber training demonstrates the disconnect with reality that became common among Germans decisions towards the end of the war.</span></div><div style="text-align: left;"><span style="font-family: arial;"><br /></span></div><div style="text-align: left;"><span style="font-family: arial;">The result was something of a rout with the Germans losing hundreds of planes and pilots with essentially no effect on the allies ground invasion. It was part of the reason why June 1944 saw the largest number of fighter planes lost in a month up to that point. </span></div></div></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7SjeD-MrtiM1AM-H13LH5SNeVayFz-87KxyM8Za5DlTmvC0BrjDcYOfqGFfPYJ8WDzqBwrSpYgV55v4EcBc46E_4zpzaHjesqehcUFMDMD4WMD3dzzD6Kny4sDM3W0zeWWIn3IbXtnvqRlpr4PE6ecD3iGDtcuR3bA0Mj6UsPOlOCRz_xfs3MFf3x/s1000/first_half_44_fighters_lost.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="618" data-original-width="1000" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7SjeD-MrtiM1AM-H13LH5SNeVayFz-87KxyM8Za5DlTmvC0BrjDcYOfqGFfPYJ8WDzqBwrSpYgV55v4EcBc46E_4zpzaHjesqehcUFMDMD4WMD3dzzD6Kny4sDM3W0zeWWIn3IbXtnvqRlpr4PE6ecD3iGDtcuR3bA0Mj6UsPOlOCRz_xfs3MFf3x/s16000/first_half_44_fighters_lost.png" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><span>Not that the Luftwaffe pilots were well trained at this time. After months of attrition fighting over Germany the Luftwaffe increasingly sent barely trained pilots into combat. The US strategic campaign against oil was began to effect aviation </span>fuel<span> supplies at this point. And while production of fighter planes increased to keep up with the attrition the limited number of trained pilots and aviation fuel decreased the </span>effectiveness<span> of the Luftwaffe as a fighting force. </span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><span>It wasn't like this the previous year. Indeed for the first four years of war it maintained it's combat effectiveness and routinely displayed its </span>adaptability<span> to </span>influence<span> the battle field. By attaining and maintaining air </span>supremacy<span> the Luftwaffe was one of the key reasons the Nazi's were able to take over Europe (and beyond). It then became an important part of maintaining this empire as it was capable of moving large amount of forces (itself and supplies) across large distances on short notice. </span></span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><span><span style="white-space: pre-wrap;">This is the story of how the most technologically advanced country at the time developed and used a new kind of warfare ultimately succumbing to </span></span><span style="white-space: pre-wrap;">warfare's crudest strategy: attrition. Due to the economic nature of attrition warfare I think it's best to start this story with the economics the Germany economy in the 1930s. But first a brief overview of the geolocation data I use for this post. </span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial; white-space: pre-wrap;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><b><span style="font-family: arial;">The dataset</span></b></div><div class="separator" style="clear: both; text-align: center;"><p class="_1qeIAgB0cPwnLhDF9XSiJM" style="border: 0px; caret-color: rgb(26, 26, 27); color: #1a1a1b; font-stretch: inherit; line-height: inherit; margin: 0px; padding: 0px 0px 0.25em; text-align: start; vertical-align: baseline;"><span style="font-family: arial;">The Germans kept records every 10 days on Luftwaffe strength. Online I found <a class="_3t5uN8xUmg0TOwRCOGQEcU" href="https://www.ww2.dk/air/jagd/jg52.htm" rel="noopener nofollow ugc" style="border: 0px; color: var(--newCommunityTheme-linkText); font-stretch: inherit; font-style: inherit; font-variant-caps: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">locations</a> and <a class="_3t5uN8xUmg0TOwRCOGQEcU" href="https://www.ww2.dk/oob/bestand/jagd/bijg52.html" rel="noopener nofollow ugc" style="border: 0px; color: var(--newCommunityTheme-linkText); font-stretch: inherit; font-style: inherit; font-variant-caps: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">monthly aggregates</a> at <a class="_3t5uN8xUmg0TOwRCOGQEcU" href="https://ww2.dk/" rel="noopener nofollow ugc" style="border: 0px; color: var(--newCommunityTheme-linkText); font-stretch: inherit; font-style: inherit; font-variant-caps: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank">ww2.dk</a>. Below are some examples of the location and dates data along with the monthly aggregates of sizes and losses of these groups. </span></p><p class="_1qeIAgB0cPwnLhDF9XSiJM" style="border: 0px; caret-color: rgb(26, 26, 27); color: #1a1a1b; font-stretch: inherit; line-height: inherit; margin: 0px; padding: 0px 0px 0.25em; text-align: start; vertical-align: baseline;"><span style="font-family: arial;"><br /></span></p><p class="_1qeIAgB0cPwnLhDF9XSiJM" style="border: 0px; caret-color: rgb(26, 26, 27); color: #1a1a1b; font-stretch: inherit; line-height: inherit; margin: 0px; padding: 0px 0px 0.25em; text-align: start; vertical-align: baseline;"><span style="font-family: arial;">The lowest form of a group was a staffel or squadron which consisted of about 16 planes. Three staffel generally made a Gruppe and three Gruppe's generally made a geschwader. Each geschwader had a lead pilot and a few additional pilots, generally around four total, known as a Stab. In general we have good data on the Gruppe level and sometimes at the Staffel level. As the war progressed the Germans included additional Gruppes and Staffels to an individual </span><span style="font-family: arial;">geschwader</span><span style="font-family: arial;">.</span></p><p class="_1qeIAgB0cPwnLhDF9XSiJM" style="border: 0px; caret-color: rgb(26, 26, 27); color: #1a1a1b; font-stretch: inherit; line-height: inherit; margin: 0px; padding: 0px 0px 0.25em; text-align: start; vertical-align: baseline;"><br /></p><div style="caret-color: rgb(26, 26, 27); color: #1a1a1b; font-family: arial; text-align: left;">The main type of groups analyzed here are single engine fighter groups, twin-engined fighter groups, night fighter groups, bomber groups, and ground attack aircraft groups. The groups were split into intended role of the aircraft in combat, not necessarily the plane itself. For instance a JU-88 was designed as a medium bombers and those that were used as such were attached to bomber groups. But they were also successful as night fighters and those were attached to night fighter groups.</div><span style="color: #1a1a1b; font-family: arial;"><div style="text-align: left;"><br /></div></span></div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhklRIYDBWFj31vWRTJhRG2WcEiK-RWGCJ3HEd2vF1G6UaEtpXVMW-U4lp1QIVJpASRhQ8SiavcpcHggN1o6jWqulORjbBk16tnfIfqd9wDUiHHpex7i6D2JwFy2IBCOf6IeXp_FNuepSzm1CH9o9SKYTViWdq0DWjcm5HWQq_J_R4N1KUAs2KiXlmu/s1734/example_location_data.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1734" data-original-width="972" height="713" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhklRIYDBWFj31vWRTJhRG2WcEiK-RWGCJ3HEd2vF1G6UaEtpXVMW-U4lp1QIVJpASRhQ8SiavcpcHggN1o6jWqulORjbBk16tnfIfqd9wDUiHHpex7i6D2JwFy2IBCOf6IeXp_FNuepSzm1CH9o9SKYTViWdq0DWjcm5HWQq_J_R4N1KUAs2KiXlmu/w399-h713/example_location_data.png" width="399" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Example Location Data http://ww2.dk/air/jagd/jg27.htm</td></tr></tbody></table><br /><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">Here we can see a particular gruppe location for the first few years of the war. It began the war in Germany, flew to France, back to Germany, on to Greece, and then to North Africa. These exists for fighters (day fighters, night fighters, and twin engined fighters), bombers and ground attack aircraft. Unfortunately not all location data - particularly transport planes information is lacking - but what exists constitutes the bulk of the Luftwaffe throughout the war.</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">Geolocating the data proved to be difficult and inexact. In part this is due to the nature of recording the dataset itself. Germans would land in fields and generally describe a village or hamlet and not generally care about the spelling. Moreover the location names also highlight how different cities were named over time by different peoples and underscores that different ethnicities coexisted throughout Europe for hundreds of years. Where possible I made guesstimates and tried to get within the generally area. If a particular location is not found I use the previous known location.</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">In addition the dates are sometimes available at the monthly level eg a particular squadron landed at a place sometime in May 1940 and not 15 May 1940. This has the effect that some groups appear in a location before or after they should be there. I trust the reader understands the limitations of using this data and can understand how this error will be displayed in the visualization. </span></div><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgly_p_SNv-sDIgf-2K-78DiIqeloWackdXpXbfKMM6-51At-w0XXYf4USd5_rXZ7y09eFppiCQPnfCGb_LQxRjJBKzne1cPMkpyg9_gE3Hi569g9qLsMlAVAU4jDSqpxxeqCWyv7_o-BTYu70qKWWZSA2b0kef1LTDdlAYZOLJtFxgj1XAEpcgLG_G/s2556/example_sizes_data.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="736" data-original-width="2556" height="275" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgly_p_SNv-sDIgf-2K-78DiIqeloWackdXpXbfKMM6-51At-w0XXYf4USd5_rXZ7y09eFppiCQPnfCGb_LQxRjJBKzne1cPMkpyg9_gE3Hi569g9qLsMlAVAU4jDSqpxxeqCWyv7_o-BTYu70qKWWZSA2b0kef1LTDdlAYZOLJtFxgj1XAEpcgLG_G/w955-h275/example_sizes_data.png" width="955" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Example Size and Loss Data http://ww2.dk/oob/bestand/jagd/biijg27.html</td></tr></tbody></table><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">While the location data exists for most units throughout the war the sizes and losses data exists mainly staring in early 1942 through 1944. If the size or loss is not available I impute the size based on the group being analyzed (gruppe, staffel, or stab size) and the losses based off of the loss rate available in the same region. Here I refer to losses as total losses including those planes lost not in combat. Due to the dangerous nature of flying non-combat losses were a sizable part of overall losses especially in severe weather conditions. </span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">I understand that potentially the incorrect dates, locations of individual squadrons, imputed sizes and losses, and lack of size data before 1942 and after 1944 limits the precision we can analyze this data. However, all together I think this constitutes a powerful dataset that can be used to recreate large sections of the WWII in the European Theater. </span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">Finally, one area that will be somewhat ignored is the Battle of the Atlantic. This was an important campaign that was a central focus of the allies in 1941-1943. Allied airpower was one of the reasons why the allies won agains the U-boats (German submarines). For instance, in 1943 78 U-boats were sunk by warships while a 147 were sunk by aircraft (<a href="https://uboat.net/fates/losses/1943.htm">see here</a>). However, the Luftwaffe was increasingly tasked with supporting the army and its effect on battle of Atlantic was relatively small. </span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><h2><b>Economic and Politics of 1930s Germany</b></h2><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifa4IwyGmFjBV0gQrske6VUTqcXkheQLBfgzxhjYmbAiB-S5mwy_jdH8ubJLQ7wE4JEewqdyHZ4GurfdtmgQVmUdE5EcIsOT2giZCx3jxox8sER1IuFUy1ao4DlNV2X9-LqdV_6Wg6K9pVX-5bxdyYhgO7r1R9rRCOSg0t4zWnELt9_J1m6-D8wyNc/s1000/unemployment_great_depression_plot.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="618" data-original-width="1000" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifa4IwyGmFjBV0gQrske6VUTqcXkheQLBfgzxhjYmbAiB-S5mwy_jdH8ubJLQ7wE4JEewqdyHZ4GurfdtmgQVmUdE5EcIsOT2giZCx3jxox8sER1IuFUy1ao4DlNV2X9-LqdV_6Wg6K9pVX-5bxdyYhgO7r1R9rRCOSg0t4zWnELt9_J1m6-D8wyNc/s16000/unemployment_great_depression_plot.png" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Unemployment Data p.6 <a href="https://www.irle.berkeley.edu/files/1998/Interwar-Unemployment-In-International-Perspective.pdf">here</a><br /><br /></td></tr></tbody></table><div class="separator" style="clear: both; text-align: center;"><span id="docs-internal-guid-6968c874-7fff-073d-d056-acb8430b29ae" style="font-family: arial; text-align: start;"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">In the November election of 1932 - the last free one - the Nazis (the German abbreviation of NSDAP or Nationalist Socialist German Worker Party) won 33% of the vote, a plurality</span><span><span style="white-space: pre-wrap;">. </span></span><span style="white-space: pre-wrap;">Hitler becomes Chancellor of Germany </span><span style="white-space: pre-wrap;">January 30, 1933</span><span style="white-space: pre-wrap;">. Many countries in Europe during this time had a, not unfounded, fear of communism and voted for conservatives. The Nazis were radical not conservative. </span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="white-space: pre-wrap;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="white-space: pre-wrap;">At its core the Nazi ideology was inherently racist and embraced the idea of eugenics. There was a racial hierarchy with Aryans (white and generally German) at the top. Given their racial superiority it was German people's destiny to expand into and colonize land needed for their own "living space" (Lebensraum). </span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span><span style="white-space: pre-wrap;"><br /></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span><span style="white-space: pre-wrap;">But with unemployment reaching a maximum of over 40% (one, if not the worst of the Great Depression) and the country on the verge of civil war those in power thought his radicalism would temper with power and be useful. </span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span><span style="white-space: pre-wrap;"><br /></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span><span style="white-space: pre-wrap;">While initial Nazi ideology was initially a hodgepodge of incoherrent ideas there were some items that resonated with German society at the time. The Prussian aristocracy constituting the old military guard respected his ideas to increase the size of the military and Germany's previous glory. Big business liked the idea of large government spending and contracts that military buildup entailed. And spend they did.</span></span></p></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJKfta3hI3TjHCP4r8DirA-8Mu57qnk3dGTDaj8lGP0ls8HohJKBGRI9a3FH1XgVXOFzGm-7Wn-ntrYZBnyTgo3CBewgL3WoqoydOvZM1448igTJT47t4ZN0bhqqhS7WKIRn9KA7uyp2A2oYNLGgyb8XYSa_7P21RHjZCqbzRR9zeFSsaOiqRhag7r/s1000/ac_prod_30s.png" style="font-style: italic; margin-left: 1em; margin-right: 1em;"><span style="font-family: arial;"><img border="0" data-original-height="618" data-original-width="1000" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJKfta3hI3TjHCP4r8DirA-8Mu57qnk3dGTDaj8lGP0ls8HohJKBGRI9a3FH1XgVXOFzGm-7Wn-ntrYZBnyTgo3CBewgL3WoqoydOvZM1448igTJT47t4ZN0bhqqhS7WKIRn9KA7uyp2A2oYNLGgyb8XYSa_7P21RHjZCqbzRR9zeFSsaOiqRhag7r/s16000/ac_prod_30s.png" /></span></a></div><div class="separator" style="clear: both; text-align: center;"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: start;"><span style="font-family: arial; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: start;"><span style="font-family: arial; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"></span></p><div style="text-align: start;"><span style="font-family: arial;"><span style="white-space: pre-wrap;">Before Keynes wrote the General Theory of Unemployment, Interest, and Money and before FDR had his New Deal, Nazi Germany spurred growth through deficit backed spending. The vast amount government spending during this time was on the military. Indeed</span> the aircraft industry was a central part of this with production increasing from effectively nothing to over 8000 planes by 1939. [2, location 173] </span></div><div style="text-align: start;"><span style="font-family: arial;"><br /></span></div><div style="text-align: start;"><span style="font-family: arial; white-space: pre-wrap;">The result was a dramatic decrease in unemployment and an economy back to running at full employment by 1939. In contrast to the USA which still had a large unemployment rate of over 25% and France and England around 10%.</span></div><div><span style="font-family: Arial; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1Uz25lWKKWK3O7cSFz_djpGrGfuHvf4e0udFOUCC9C_YoenqIHkvrM-V97ZMXQZp-pzKf8Zz2ZCouRmztNj77cjFVTfTjHjuSMFN3fyK5PTwfemxwCTfJV3dcV5a1dnK3lIQQ89ev2vIpIczIrqQpphud78fnU1HLnwDzUa60spqIaLPLP7daWdJ_/s1000/airplaine_speed_records.png" style="font-style: italic; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="618" data-original-width="1000" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1Uz25lWKKWK3O7cSFz_djpGrGfuHvf4e0udFOUCC9C_YoenqIHkvrM-V97ZMXQZp-pzKf8Zz2ZCouRmztNj77cjFVTfTjHjuSMFN3fyK5PTwfemxwCTfJV3dcV5a1dnK3lIQQ89ev2vIpIczIrqQpphud78fnU1HLnwDzUa60spqIaLPLP7daWdJ_/s16000/airplaine_speed_records.png" /></a></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">Airplane technology was changing rapidly during this time going to monocoque aluminum production. The Nazis kept up by </span><span style="font-family: arial;">investing </span><span style="font-family: arial;">heavily in R&D and by the end of the decade were producing some of the best aircraft around. Germany effectively leapfrogged to the state of the art airplane technology during this time as shown by airplane speed records above (data <a href="https://en.wikipedia.org/wiki/Flight_airspeed_record">here</a>).</span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg96ZfABGiLOBSNUK39g35DZa5pk_Q_qcSDweMB5l0tXTIkSfCspQ3-EX_tYA5uq4EDqe4QA69kvRHR6O2MGo7G71Ns3peI3ypHL0nrmQ07yOBHWNRDCYaB75fuCy_S7_DRqUeJuMwbtAEb4Zupe5iDeqJtqcmxxjY_S6vEg9nNXad8DuxgnOi9FIgU/s1000/gdp_capita_1938_plot.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="618" data-original-width="1000" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg96ZfABGiLOBSNUK39g35DZa5pk_Q_qcSDweMB5l0tXTIkSfCspQ3-EX_tYA5uq4EDqe4QA69kvRHR6O2MGo7G71Ns3peI3ypHL0nrmQ07yOBHWNRDCYaB75fuCy_S7_DRqUeJuMwbtAEb4Zupe5iDeqJtqcmxxjY_S6vEg9nNXad8DuxgnOi9FIgU/s16000/gdp_capita_1938_plot.png" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Data Found in [3, p.10, Table 1.3]</td></tr></tbody></table><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">However, it's worth noting that Germany wasn't as productive or efficient as the UK or USA. Even with substantially more unemployment the USA still had a GDP per head ~20% greater than Germany. To a large extent this was because Germany was a much more agrarian society with 27% of employment as farmers in contrast to the USA of <a href="https://www.nber.org/system/files/chapters/c1567/c1567.pdf">17%</a>. But it was also because many German factories did not apply state of the art techniques in manufacturing like moving assembly lines. </span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">Overall, the German economy appears to be somewhat bifurcated at the start of the war. On the one hand it had some of the best engineers and tech. But on the other it was less efficient and crude. </span></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">One thing is clear is that the combined economies of France and England were much larger than Germany's in 1939. How then did Germany win a ware of attrition over France in WW2 when it couldn't in WW1? The answer is that they didn't need to fight a war of attrition. With new tactics and technology the Nazis were able to take over Europe quickly without resorting to attrition. </span></div><div class="separator" style="clear: both; text-align: center;"><br /></div><h2><b>The Ascent (1939 - 1942): An Air Force's Air Force</b></h2><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">The Germans deploy a new kind of warfare known as 'blitzkrieg' (lightning war) to take over Europe. Using concentrated formations tanks, planes and mechanized forces the Germans would attack deep into enemy territory, bypass strong defenses, and encircle the enemy. </span><span style="font-family: arial;">This warfare was only possible with newer technologies like tanks and planes. </span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">However, note that the mechanized forces represented a small percentage of the Germany military. The vast majority of the army relied on horses and and slow moving artillery. It was these forces that would come up after the tanks encircled the enemy to finish the job. In this regard the Germany military mirrored its economy: it had a very technologically advanced elite but the majority was still partially agrarian. </span></div><div><span style="font-family: arial;"><br /></span></div><div style="text-align: left;"><span style="font-family: arial;">And at the top of that technologically elite hierarchy was the Luftwaffe. While the tanks role was to encircle the enemy the Luftwaffe had a distinct role separate from the main battlefield. While it made a large contribution as a 'mobile artillery' to help the advance it would often leave the battle alone due to the threat of friendly fire. The Luftwaffe generally struck independently of other forces behind the front lines by attacking troop movements, logistics, communications, factories, and cities. [4]</span></div><div style="text-align: left;"><span style="font-family: arial;"><br /></span></div><div style="text-align: left;"><span style="font-family: arial;">This independence was clearly valued by the Luftwaffe and would be in other air forces too. In the 1920's and 1930's there were military theorists that debated the role of the airplane in the next war. Many airmen from different countries (USA, UK, Italy) came to similar conclusions: that a new form of strategic air warfare can be used against the economic machine of the enemy. </span></div><div style="text-align: left;"><span style="font-family: arial;"><br /></span></div><div style="text-align: left;"><span style="font-family: arial;">This is keeping with the idea of a super-battlefield [6]. If one can bomb an economy enough cripple it one doesn't need to fight them (at least as much) on the battlefield. Propenents of this idea optimistically thought it would require few resources to complete destruction of enemy infrastructure and economic movements. For instance one study created by the US Army in the 1920s on a potential air campaign against New York City concluded that by attacking a mere 17 targets the city would be unable to function. (Fun fact, due to the restrictions placed on the war department at the time no offensive plans could be drawn up so it had to be defensive in nature. This was keeping in line with America's pacifism at the time.)</span>[5]</div><div style="text-align: left;"><span style="font-family: arial;"> </span></div><div style="text-align: left;"><span style="font-family: arial;">But why stop only at the factories, railways, and infrastructure of the enemy? They could be rebuilt if the population wasn't harmed. The logical next step was viewing the civilian population of the enemy as an enemy combatant to target. The potential dueling air forces aimed against civilians lead some theorists to think war wouldn't happen because the destruction would be so complete (a precursor to nuclear MAD). </span></div><div style="text-align: left;"><span style="font-family: arial;"><br /></span></div><div style="text-align: left;"><span style="font-family: arial;">These concepts of a long strategic air campaign only existed once during the period of 1939-1942 during the Battle of Britain. For the rest of the first six months the campaigns generally wouldn't last long at the start of WWII.</span></div><div style="text-align: left;"><br /></div><span style="font-family: arial;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbwQbHF2jz4zF7H2Oal6bK2f2bwEZKmqPKRsdOHBqUBnUjvilVtBvzwF_PjTU2j9gFI72s3FPEaf1SOMSGRgeQP4FZ-Gh8t99vfBr0xJgW-KSgRDbH9B0DZwb5_w9AZGfJDaC9i13og1g0IgiuT61gvgYl2SAHVpPjwdC5IPTBA9EM6tUhyWJs8d5S/s1000/norway_invasion.gif" style="margin-left: 1em; margin-right: 1em;"></a></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">Nominally WWII started similarly to WWI; Germany fighting on two fronts immediately both east and west. In reality the first couple of years (give or take a few months) saw Germany take over the continant through a sequence of distinct and serial campaigns. Below are the movements of each</span><span style="font-family: arial;">. </span></div><div class="separator" style="clear: both; text-align: center;"><br /></div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq_eKBNk1OoYkNYo3s-i8xWeE13Btx3OMMGlYI_F1qV2mn8gIwLxelygR40Uv2KO4LP975DZpkojMF1Dxt9SCbuz5tCiiG-B0rGK09J8WpOWjS_FXT9EgCFqGr8_aG6Uuj_m2HRMzvfMPcwntFGQsrcwXyzIq8Nm0DV4_456zCfrN5i5_S5jIvznDj/s1000/poland_movement.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="480" data-original-width="1000" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq_eKBNk1OoYkNYo3s-i8xWeE13Btx3OMMGlYI_F1qV2mn8gIwLxelygR40Uv2KO4LP975DZpkojMF1Dxt9SCbuz5tCiiG-B0rGK09J8WpOWjS_FXT9EgCFqGr8_aG6Uuj_m2HRMzvfMPcwntFGQsrcwXyzIq8Nm0DV4_456zCfrN5i5_S5jIvznDj/s16000/poland_movement.gif" /></a><br /><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">August 23 1939 Germany and the Soviet Union, lead by Stalin, reach a deal to partition Poland. September 1 1939 Germany declares war on Poland citing a (false flag) attack on it's border. Two days later France and England declare war on Germany. After declaring war the allies ... sat and waited (there was a strategically irrelvant offensive by the French). </span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">Germany's forces were divided at this point with most of its forces in the East fighting Poland. The UK and France could have invaded but they decided to wait it out and launch more small scale offenses while the Poles wore down the advancing Germans. </span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">The Polish army was the fourth largest in Europe and it was expected to hold out for some time. People were surprised at the speed, if not the outcome, that Poland fell. The USSR invaded from the East and on October 6 1939 Poland surrendered. Shortly after Germany positioned just about all its forces on the West. For the next eight months not much happens. This period from October 1939 to April 1940 is called the 'sitzskreig' or 'phoney war'. </span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">The USSR continued it's territorial expansion and attacked Finland in November 1939. Showing military ineptitude, the Russians eventually won a long campaign against a much smaller force. The poor performance of the Russian military was a lesson the Germans would not forget. </span></div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbwQbHF2jz4zF7H2Oal6bK2f2bwEZKmqPKRsdOHBqUBnUjvilVtBvzwF_PjTU2j9gFI72s3FPEaf1SOMSGRgeQP4FZ-Gh8t99vfBr0xJgW-KSgRDbH9B0DZwb5_w9AZGfJDaC9i13og1g0IgiuT61gvgYl2SAHVpPjwdC5IPTBA9EM6tUhyWJs8d5S/s1000/norway_invasion.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1000" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbwQbHF2jz4zF7H2Oal6bK2f2bwEZKmqPKRsdOHBqUBnUjvilVtBvzwF_PjTU2j9gFI72s3FPEaf1SOMSGRgeQP4FZ-Gh8t99vfBr0xJgW-KSgRDbH9B0DZwb5_w9AZGfJDaC9i13og1g0IgiuT61gvgYl2SAHVpPjwdC5IPTBA9EM6tUhyWJs8d5S/s16000/norway_invasion.gif" /></a></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">Germany initially expected a long campaign against France. In order to assure the iron ore shipments from Sweden it preemptively invaded Norway (and en route needed Denmark) to protect the transportation of the raw material from English attack. </span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">The Germans had amphibious landings at several locations and the Luftwaffe proved instrumental in bombing the coastal defenses allowing the troops to land safely. Paratroopers landed and took key locations too and Norway's strategic situation was hopeless within the first day. The English and French did manage to land but had to evacuate as the situation in France grew worse. </span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">This operation was tactical success but something of a strategic failure for Germany. </span><span style="font-family: arial;">While minimal costs to in terms of troops the German navy lost a significant part its surface fleet reducing the chances of a channel invasion of England in the future. In addition it required the germans to places hundreds of thousands of troops to defend against potential invasion throughout the war. Finally, the loss of Norway caused Chamberlain, the English prime minister, to lose a vote of no confidence. In his place a man dedicated to the destruction of the Nazi's is made Prime Minister - Winston Churchill. </span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCGVC_hlY5IwBp-cukZl5_fgbWbbGUlxy0_3FcS_Yl24o07jA2I3EID_QQoXkYNlwXqDaglNTy3gueajTQ-gTagPgK40tvQjBO0fhR5yA9QtRPYAunAHIkB-KP_gWerKXanUN57o5piqDbvc32br4Lg_j68q1L1vLMju0KniZInA-99jsrsoa8wmb0/s1000/france_invasion.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="800" data-original-width="1000" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCGVC_hlY5IwBp-cukZl5_fgbWbbGUlxy0_3FcS_Yl24o07jA2I3EID_QQoXkYNlwXqDaglNTy3gueajTQ-gTagPgK40tvQjBO0fhR5yA9QtRPYAunAHIkB-KP_gWerKXanUN57o5piqDbvc32br4Lg_j68q1L1vLMju0KniZInA-99jsrsoa8wmb0/s16000/france_invasion.gif" /></a></div></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">The Battle of France was the main event during the period of 1939 - mid 1941. If France held out then there would most likely have been a long campaign potentially lasting years. If that happened it's hard to see the dystopian reality of 1942-1945 unfolding as it did. Instead France, with a much larger and better equipped army than Poland, lasted about the same time in the battlefield and surrendered in about six weeks. </span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">France thought it was playing an updated WWI. With the horrors of trance warfare fresh in its mind, it invested heavily on a fortification system known as the Maginot line during the interwar years. It ran from Switzerland to Belgium and consisted of underground railroads, bunkers, and artillery with the goal of lasting a few weeks of defending a potential German invasion. The French strategy was to use this defense system in the south while placing its best troops in the north where the Germans were expected to attack (much like WWI). And while it had very good tanks France spread them out and attached them to units in support roles rather than use them as independent forces. </span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">Unfortunately for the French (and the world) the Germans were playing WW2. Unlike the French army the French Air Force was smaller with inferior planes compared with its adversary. The Luftwaffe established air supremacy in quickly after starting the invasion on May 10 1940.</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">Concentrated formation of tanks and mechanized infantry sliced through the Ardennes, a forest previously thought impenetrable to any army. These forces rushed across the Muese in part supported by dive bombers. </span><span style="font-family: arial;">French troops were particularly terrified from the siren fitted on Stuka dive bombers and further demoralized them. Scared refugees </span><a href="https://warfarehistorynetwork.com/2019/01/13/exhausted-caravan/" style="font-family: arial;">clogged the roads</a><span style="font-family: arial;"> making French military maneuvers difficult and easy targets from the air. </span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">As the Germans marched on we can </span><span style="font-family: arial;">see above that the Luftwaffe landed planes across the Meuse </span><i style="font-family: arial;">in the middle of the campaign</i><span style="font-family: arial;">. </span><span style="font-family: arial;">Historian Williams Murray details it:</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><div class="page" title="Page 65"><div class="layoutArea"><div class="column"><p style="text-align: center;"><i><span style="font-family: arial;">By the 17th, within 24 hours of the French evacuation, German fighters were establishing their operational base at Charleville, west of the Meuse. For several days, fuel, ammunition, parts, and ground personnel flew in by Ju 52's since the <span style="vertical-align: -1pt;">army's movement </span>into the ever-deepening pocket had choked the Meuse bridges . <span style="vertical-align: -1pt;">The forward operating </span>base was so short of fuel that ground personnel siphoned all but the minimum amount of gasoline <span style="vertical-align: 1pt;">from </span>every <span style="vertical-align: 1pt;">noncombat aircraft landing at </span><span style="vertical-align: -1pt;">Charleville.This rapid </span>deployment forward was due entirely to an air transport <span style="vertical-align: -1pt;">system of Ju </span>52's.58The system supported the army as well as the air force in its drive to the Channel. [1, p 38]</span></i></p></div></div></div></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">This is the first time we're seeing the Luftwaffe moving large forces of planes to continue an offensive campaign and is something of an under-appreciated hat-trick. We'll see the Luftwaffe do this kind of operation again and again over the years. </span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">As the English army retreated to the English Channel at the port city of Dunkirk the order was given to stop the German army's advance. The head of the Luftwaffe, Goring, claimed his force could destroy the English army being evacuated. Instead this was the Luftwaffe first defeat. The RAF was much closer to Dunkirk than the Luftwaffe, even with its forward bases in France. The RAF held off the Luftwaffe and </span><span style="font-family: arial;">England evacuated some 300,000 troops from continent thereby saving an already demoralized army. </span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">With Germany victorious in the north, Italy entered the war on June 10 and France surrendered on June 25 1940. Germany occupied the northern half of France and, with French collaborators, created the Vichy government in the South and North Africa. The </span><span style="font-family: arial;">English, understanding that the Germans could use undamaged ships of the French military, attacked and sunk a large part of the French Navy at </span><span style="font-family: arial;">Mers-el-Kebir killing almost 1300 sailors. This proved to the world that the English would fight on.</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">It's worth remembering that the English didn't have to fight at this point. Hitler respected the English and would have been happy to make peace. </span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"> </span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBMjsqRYr2q7Dj6iPRhtz8syJhfsIKoCZ0N7h_1wpgaFqDoKvD15Ruacs9Iz_6StikrA5-Ly4gQIjtfLbb9kjNQwaJQD92t0fMbafBmGxkVM1kx1Q7eFn1wX7_vXUwybhocSMHzzgJnVs20FzYoWcXaafqQNQ0N-0-yQncSfVoxuO2oLJr73qHUJJs/s1000/battle_of_britain.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="800" data-original-width="1000" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBMjsqRYr2q7Dj6iPRhtz8syJhfsIKoCZ0N7h_1wpgaFqDoKvD15Ruacs9Iz_6StikrA5-Ly4gQIjtfLbb9kjNQwaJQD92t0fMbafBmGxkVM1kx1Q7eFn1wX7_vXUwybhocSMHzzgJnVs20FzYoWcXaafqQNQ0N-0-yQncSfVoxuO2oLJr73qHUJJs/s16000/battle_of_britain.gif" /></a></div><br /><div><span style="font-family: arial;">The Battle of Britain was more than just <a href="https://en.wikipedia.org/wiki/Keep_Calm_and_Carry_On">a meme</a> or <a href="https://www.parliament.uk/about/living-heritage/transformingsociety/private-lives/yourcountry/collections/churchillexhibition/churchill-the-orator/human-conflict/">speech</a> generator. </span><span style="font-family: arial;">This was the first air campaign fought almost exclusively in the air. All the theories of air power could now be put into place. Practice is another. The luftwaffe's first mission was to gain air supremacy. But how do you do so and what targets should you hit? Should you attack the airfields, the factories, maybe the radar stations? Or maybe just try to go against the civilian population? </span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">The Luftwaffe did each of these not quite committing to a particular strategy but often changing course when they weren't seeing results quickly enough.</span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">The strategic air campaign highlighted the falsehood of the 1930s believe that "bomber would always get through". This idea proved wrong again and again. Bombers needed to be escorted by high performance fighters in order to defend against attack. </span></div><div><span style="font-family: arial;"><br /></span></div><div><div><span style="font-family: arial;">A particular technical problem was the short range of single engine fighter planes, in particular the BF-109. One can see this in the graph above with the fighters at the closest point to England while bombers with longer range were in airfields further away. Longer range twin engine aircraft such as the BF-110 did not have the maneurverability dogfights against English Hurricane's and Spitires required. Interestingly the Germans did know of drop tanks but for some reason did not use them here. Drop tanks were a particular advancement that help the USSAF achieve air supremacy over Germany later. </span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">The plans for the invasion of England were never really serious and the germans called off the attacks in the fall of 1941. The effects on the English production of aircraft was slight 96, p 124]. Level bombing, especially from high altitudes, had very poor accuracy and the relatively low numbers of German bombers contributed to the ineffectiveness of strategic air campaign and the UK</span><span style="font-family: arial;">. </span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">Here we have a case of strategic air power missing the mark compared with what its proponents believed. Without heavy escort the bombers were shot down. Even when they were able to hit the targets level bombing was very inaccurate and the damaged done was relatively small. These are problems the USAAF will have in 1943-1944. </span></div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWj7a8uiTmNka6LXDzLrGVAZQLPC6DShEy7B7MbuwTLa5a9emyWMFxe_xZYn-GYil9mSQTURJ3GbactauuoXE3vONmHoc9WLUp7y49NJ1JoAOI06I20tj1L03PUEffUTRTAWr91ovI8bAQPHp9LlwoK_qjZcnQdsN8CutZZlDs6e6MGMLGKBVkUjEW/s1114/invasion_of_greece.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1114" data-original-width="1000" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWj7a8uiTmNka6LXDzLrGVAZQLPC6DShEy7B7MbuwTLa5a9emyWMFxe_xZYn-GYil9mSQTURJ3GbactauuoXE3vONmHoc9WLUp7y49NJ1JoAOI06I20tj1L03PUEffUTRTAWr91ovI8bAQPHp9LlwoK_qjZcnQdsN8CutZZlDs6e6MGMLGKBVkUjEW/s16000/invasion_of_greece.gif" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><div style="text-align: left;"><span style="font-family: arial;">The period between November 1940 and April 1941 saw a lull in German major combat operations where its armed forces rebuilt its strength. After the fall of France the Romanians and Hungarians allied themselves with the axis powers providing Germany. Italy campaigned against the English in the Mediterranean and attacked Greece in October 1940. Neither campaign went well and German sent planes to Sicily to help Italy in the Mediterranean and to Romania to protect its oil. </span></div><div style="text-align: left;"><span style="font-family: arial;"><br /></span></div><div style="text-align: left;"><span style="font-family: arial;">In order to keep the English from creating a southern front and in order to protect Romanian oil from potential RAF attacks the Germans launched an offensive against Greece and Yugoslavia (which refused to ally itself with Germany) in the Fall of 1941. </span></div><div></div></div><div><span style="font-family: arial;"><br /></span></div><span style="font-family: arial;">Once again we see German planes moving quickly into the area and providing support. These campaigns followed the speed and efficiency of the previous western invasions and within weeks Yugoslavia and Greece fell. </span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">One particularly interesting operation was the invasion of Crete which was completely done by paratroopers. While the paratroopers managed to take over the island it proved to be extremely costly and the Germans would did not launch a large scale paratrooper operation for the rest of the war. <br /></span><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><br /></div></div><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJlAe9p6O57XfbrERLzuArXzSr-sPvKwNujjWVhLI5-HzhJ8wgbXLHq_kGoTa5-ze_iE_Fij18oFPQq9DNeTQieRsTKgiHZ0H70JWGAnG8LE8brQ7-4C_FWueLFztE_a4WeZfwjHqexA4GjNuEL0rJFJ4VxeelEFU-p9bq38ROdEf-3iOWFMScbw0i/s1000/barbarosa.gif" style="font-style: italic; margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="829" data-original-width="1000" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJlAe9p6O57XfbrERLzuArXzSr-sPvKwNujjWVhLI5-HzhJ8wgbXLHq_kGoTa5-ze_iE_Fij18oFPQq9DNeTQieRsTKgiHZ0H70JWGAnG8LE8brQ7-4C_FWueLFztE_a4WeZfwjHqexA4GjNuEL0rJFJ4VxeelEFU-p9bq38ROdEf-3iOWFMScbw0i/s16000/barbarosa.gif" /></a><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><span style="font-family: arial;">In the middle of June 1941 the Luftwaffe quickly assembled a major Luftwaffe force in Poland to attack another country (shown above). The campaign was expected to last between 6 and 12 weeks and ?? was to be similar in speed an outcome as the previous nine countries (by my count) it took the preceding two years. Instead it took near four years of continuous fighting that eventually lead to the defeat of the Nazi Germany. </span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">With <a href="https://encyclopedia.ushmm.org/content/en/article/invasion-of-the-soviet-union-june-1941">three million Germans and 650,000</a> troops from Finland and Romania, with over half a million horses, and ~2,500 planes the Invasion of Russia in </span><span style="font-family: arial;">on June 22 1941 was the largest land invasion of all time. This underscored the strengths and </span><span style="font-family: arial;">weaknesses of the German war machine. </span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">The initial results underlined the tactical superiority of the Germans during this time. The Germans had about the same number of planes on the eve of invasion of USSR as the invasion of France except now its forces would be divided (fought 2/3 of its planes would be in the east). Superior planes and pilots ensure that the Luftwaffe destroyed some 1800 aircraft <i>on the first day </i>and quickly gained air supremacy thereafter. Most of these planes were destroyed on the ground potentially saving Russian pilots from having to fly obsolete aircraft against a stronger opponent. It then continued to support the ground offensive by moving with the army throughout Russian territory.</span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">The tanks and army had tremendous success using Blitzkrieg tactics. The USSR did not believe initially did not use tactical retreats and were encircled again and again. Millions of soviets were captured by the Germans in the first few months of the war. </span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">In the above graph you can see the three main routes of attack; in the North to Leningrad, center to Moscow, and the south through Ukraine. There was a degree of indecvienss of where to attack. You can also see the shift of focus from Leningrad to Moscow halfway through the campaign.</span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">However, victory was</span><span style="font-family: arial;"> predicated on the belief that Soviet resistance crumble and the government would collapse (as they did in WW1). The soviets held firm and it wore down the invaders. The Germans struggled with supplies, oil, and manpower towards the end of the campaign culminating in the largest battle of WW2 the Battle of Moscow in December 1941. </span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">Here the Luftwaffe was worn down and without many supplies it couldn't sustain it's attack. Many units would have to fly back to Germany to refit and rearm while the campaign was reaching a climax. This was generally true of the military itself and was underscored but the fact that they did not initially have winter clothes during the Battle of Moscow. </span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">Barbarossa was the first real failure of the German army in WW2. The initial campaigns against western countries proved to have few casualties compared with WW1 battles; Poland killed 17k and France killed 27k German troops. In contrast the invasion of Russia killed over 180k German Troops. </span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">The failure of quickly taking out the USSR assured that WW2 became a war of attrition where economies and production featured more prominently than quick tactical success. Hitler's position waging a war of attrition was not helped by Germany declaring war on the US. </span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">Why did Germany invade Russia? Part of it was economics. Hitler wanted Ukrainian agriculture land for food and Russian natural resources to continue the fight against the Anglo world. But it was also ideological. Hitler's main reason for going to war in the first place was to create an empire in the East defined by race. </span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">Moreover on December 11 1941 Hitler declare war on the US. Military this wasn't a great idea. Scholars debate why he did so. However, one thread between invasion of USSR and declaration of war on US was Hitler's (nonsensical) belief that they were both controlled by and part of a Jewish world conspiracy.</span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">So in the Winter of 1941/1942 Germany found itself at war with the UK, USA, and the USSR. If you were in Germany's shoes what would you do? </span></div><div><span style="font-family: arial;"><br /></span><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: arial;"><b>The Holocaust and Atrocities </b></span></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">January 20, 1942 a group of high Nazi party and German officials met at a mansion (stolen by a Jewish businessman) outside Berlin. Among other documents they pass around <a href="https://ww2db.com/image.php?image_id=7447">a spreadsheet</a>. The discussion turns on how using new technology the Germans can minimize the final tally of eleven million. </span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">So began a new phase in the Holocaust where Jews were rounded up, put on cattle trains, and sent to death factories. This was more of a tactical change than the start of campaign against the Jews. The holocaust arguably started with the invasion of Russia. Behind the German advances were special German troops called Einsatzgruppen meant to shoot Jews, communists, other undesirables. This "</span><span style="font-family: arial;">holocaust by bullets"</span><span style="font-family: arial;"> was found to be inefficient and potentially damaging to troop morale. The Nazis therefore developed special gassing facilities to murder civilians in a more efficient manner.</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">The Death Factories really got going in the spring of 1942 going into overdrive in the summer. In the <a href="https://www.science.org/doi/10.1126/sciadv.aau7292">summer of 1942 about 1.5 million</a> men, women, and children were murdered. It seems like an apt metaphor that in the middle of WW2 both in terms of time (summer 1942 is ~ halfway mark of the war) and location (Auschwitz, the largest death factory, is about mid point between London and Moscow). This idea of racial superiority and domination was a central reason Hitler went to war.</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">While the holocaust against the Jews was at the pinnacle of the atrocities committed in WW2 the Germans didn't stop there. Those millions of Soviet prisoners captured ? They starved in open air prisons. A <a href="https://encyclopedia.ushmm.org/content/en/article/commissar-order">commissar order</a> given out before the invasion of the USSR declared that any communist could be shot. In practice this meant that in the east German soldiers could kill any civilian or soldier without repercussions. German atrocities against unarmed civilians happened throughout the its occupied terrorities.</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">There's a lot of good 'war porn' in WW2. Often it verges on <a href="https://www.wired.com/story/one-womans-mission-to-rewrite-nazi-history-wikipedia/">idolization of the Nazi war machine.</a> Even with the graphs above it's kind of fun to see movements throughout time of the military campaigns. But it's important to remember the devastation and attoricites that followed with each of those points expanding outward from Germany. It's important to remember that the German military, by and large, <a href="https://www.ushmm.org/outreach-programs/military/historical-resources/background/complicity">went along with the Holocaust</a> and the concept of a "clean" Wehrmacht is more bullshit myth than fact. That the military campaigns shown above enabled the largest genocide in human history.</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">never forget</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;"><div class="separator" style="clear: both;"><br /></div></div></div><div class="separator" style="clear: both; text-align: left;"></div><div class="separator" style="clear: both; text-align: center;"><p style="margin-left: 1cm; text-align: start; text-indent: -1cm;"><i>[1] </i>Murray, W. (1983). <i>Strategy for defeat: The Luftwaffe, 1933-1945</i>. Air University Press.</p><p style="margin-left: 1cm; text-align: start; text-indent: -1cm;">[2] Daniel Uziel. Arming the Luftwaffe: The German Aviation Industry in World War II (Kindle Location 176). Kindle Edition. </p><p style="margin-left: 1cm; text-align: start; text-indent: -1cm;">[3] <span style="text-indent: -1cm;">Harrison, Mark.</span><span style="text-indent: -1cm;"> </span><i style="text-indent: -1cm;">The Economics of World War II: Six Great Powers in International Comparison</i><span style="text-indent: -1cm;">. Cambridge University Press, 2005.</span><span style="text-indent: -1cm;"> </span></p><p style="margin-left: 1cm; text-align: start; text-indent: -1cm;"><span style="text-indent: -1cm;">[4] </span><span style="text-indent: -1cm;">Deane, J. R. (1947).</span><span style="text-indent: -1cm;"> </span><i style="text-indent: -1cm;">The Strange Alliance; the story of our efforts at wartime cooperation with Russia</i><span style="text-indent: -1cm;">. The Viking Press.</span><span style="text-indent: -1cm;"> </span></p></div>[5] <span face=""Arial Unicode MS", Arial, Helvetica, Verdana, sans-serif" style="text-indent: -40px;">Crane, C. C. (2016). </span><i style="font-family: "Arial Unicode MS", Arial, Helvetica, Verdana, sans-serif; text-indent: -40px;">American airpower strategy in World War II: Bombs, cities, civilians, and oil</i><span face=""Arial Unicode MS", Arial, Helvetica, Verdana, sans-serif" style="text-indent: -40px;">.</span><div><span face=""Arial Unicode MS", Arial, Helvetica, Verdana, sans-serif" style="text-indent: -40px;"><br /></span></div><div><span face=""Arial Unicode MS", Arial, Helvetica, Verdana, sans-serif" style="text-indent: -40px;">[6] </span><span style="font-family: MinionPro;">Phillips Payson O’Brien (2105) </span><span style="font-family: MinionPro; font-style: italic;">How the War Was Won: Air-Sea Power and Al- lied Victory in World War II, </span></div></div></div>samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com0tag:blogger.com,1999:blog-6922608948294168433.post-90110054299371928622022-02-06T23:48:00.008-08:002022-02-07T22:50:14.944-08:00A High Altitude Overview of the European Theater 1939-1945<p><span></span></p><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Intro:</div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><span id="docs-internal-guid-03c59621-7fff-17c0-a1aa-ccd1416e1b07" style="text-align: start;"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"></p><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">In this post I outline the infographic I made on the European theater in World War Two using Luftwaffe plane locations found on ww2.dk. This dataset includes both information on the location and size of individual plane groups throughout the war. While clearly not encompassing everything about WW2 I think using this dataset could be an effective way of describing the war for a few reasons.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><br /></span></p></span><span id="docs-internal-guid-446ddb67-7fff-83a7-054b-33daa54b5f4d"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">First, with the exception of the Battle of the Atlantic </span><span style="font-family: Arial; font-size: 14.666666984558105px; white-space: pre-wrap;">(which is missing from this infographic) </span><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">and the last few months just about all battles of WW2 in the European theater had some nominal Luftwaffe presence. Being experts in </span><span style="font-family: Arial; font-size: 11pt; font-style: italic; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">tactical</span><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"> air power (</span><span style="font-family: Arial; font-size: 14.666666984558105px; white-space: pre-wrap;">the ability to fight and influence the battlefield directly) </span><span style="font-family: Arial; font-size: 11pt; white-space: pre-wrap;">required the Luftwaffe required the planes to be located near the battlefield. Due to the range limitations of WW2 aircraft (particularly single engine fighters) the airfields needed to be very close to the front lines. Therefore, the airfields locations provide a fairly accurate representation of the front lines. Below is a plot of most airfields (I've excluded the airfields in the arctic in this plot due to size limitations) used in ww2 below. </span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjBKvTgflksrCsR1NX1MO1G8IGT8RUQamAIggw-AcvU01kRxfDBBI9Q_XQH0lLIG8MrAlFSW4HIGVJqxyfov-pEuK_r23AJHZjqv2HmjYVb3Vpwh-_bnwue8oASxPSD7lHygPUwcQVv4S_GzYKztJitZBd-DcK-vCMfk90QSB1A7iZH_pUJUKKl9uMh=s4266" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4266" data-original-width="3741" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEjBKvTgflksrCsR1NX1MO1G8IGT8RUQamAIggw-AcvU01kRxfDBBI9Q_XQH0lLIG8MrAlFSW4HIGVJqxyfov-pEuK_r23AJHZjqv2HmjYVb3Vpwh-_bnwue8oASxPSD7lHygPUwcQVv4S_GzYKztJitZBd-DcK-vCMfk90QSB1A7iZH_pUJUKKl9uMh=w562-h640" width="562" /></a></div></span><p></p></span><br class="Apple-interchange-newline" /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">Second, while the majority of the fighting casualties were on the eastern front the majority of military expenditures were not necessarily on the eastern front. More <a href="https://voxeu.org/article/how-war-was-won">recent research</a> has found that the belligerents of WW2 spent a large amount on producing aircraft. Germany, for instance, spent about 48% of its output on aircraft production in July 1944 compared with only 7.8% on tanks. Similar expenditures exist among American and Great British forces. </span></p><div style="text-align: left;"><br /></div><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">Finally, in I think in part because planes were so expensive there’s pretty good data on them. While there were certainly more men involved in large battles they’re aggregated at a fairly high level and no month-month data exists (to my knowledge) of strengths and locations. Ships on the other hand of very good data. I think you can geolocate a ships location by the day. But there were only a handful of large scale engagements. Airplanes have both good data and large number of observations making it a “sweet spot” for data analysis. </span></p><div style="text-align: left;"><br /></div><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">And finally the atrocities. Most military histories treat the holocaust as a side show. Something that happened in the background, undercurrents of the main tidal waves. However, that reading kind of misses the point of what WW2 was about. It was a war of annihilation. Of racial hierarchies and where certain people were better and therefore had the moral authority to impose their will. The German atrocities are well documented. To name a few; <a href="https://www.theguardian.com/commentisfree/cifamerica/2010/oct/21/secondworldwar-russia">starvation of millions of soviet prisoners</a>, <a href="https://en.wikipedia.org/wiki/Lidice_massacre">reprisal attacks against civilians</a>, <a href="https://en.wikipedia.org/wiki/Forced_labour_under_German_rule_during_World_War_II">slave labor</a> (to such an extent that it eventually amounted to 20% of its output in agriculture and industry), and <a href="https://en.wikipedia.org/wiki/Human_shield#World_War_II">human shields in combat</a>, and dark ways to maintain law and order. All of Europe suffered. At the apex of this was the systematic murder of Jews - the holocaust.</span></p><div style="text-align: left;"><br /></div><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">I’ve included markers (in yellow) that determine the holocaust events. Shown are four types of events. The first is general deportations of Western Jews to ghettos, generally in Poland. The second coincides with the invasion of USSR and is knows as ‘holocaust by bullets’. This is where special german troops einstatsgruppen followed the invading army and shot Jews and other undesirables.Then there were deportations to death camps starting in early 1942 lasting until the camps were liberated in early 1945. Finally, as the Soviets were about to liberate the camps Nazis forced survivors to march to Germany. Perhaps I have bit off too much on this infographic but I think it would be remiss of me not to include it. </span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;"><br /></span></p><span style="font-family: Arial; font-size: 14.666666984558105px; white-space: pre-wrap;"><div style="text-align: left;"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; white-space: normal;"><span style="font-size: 11pt; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">This history isn’t necessarily new (I follow the timeline of <a href="https://www.airuniversity.af.edu/Portals/10/AUPress/Books/B_0012_MURRAY_STRATEGY_FOR_DEFEAT.pdf">Strategy of Defeat by Murphy</a>). But I have not seen this information in one infographic. Airpower was very important to the conflict. While it may not have been as decisive as its proponents expected it to be (it didn’t win the war single handedly) It’s hard to imagine WW2 unfolding the way it did without it. Could Germany have gone so far without it using it as effectively as they </span><span style="font-size: 11pt; white-space: pre-wrap;">did? I don't think so. To a large extent the story of the European Theater between 1939-1945 is about planes and atrocities.</span></p><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;">Description of charts:</div><br style="white-space: normal;" /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; white-space: normal;"><span style="font-size: 11pt; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">Below shows a gif of two charts. The top one is the map that shows the allocation of Luftwaffe Forces by Fronts. There are bar plots for Bombers, Ground Attack, Fighters, Night Fighters, and Twin-Engined Fighters (abbreviations for each one). Arrows between maps show where large scale movements of planes are going to. </span></p><br style="white-space: normal;" /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; white-space: normal;"><span style="font-size: 11pt; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;">The second chart shows similar information but 'flattened' out into one dimension so as we can see movements through time. I have included the large plot below that as well. </span></p><br style="white-space: normal;" /><br style="white-space: normal;" /></div></span></div><div class="separator" style="clear: both; text-align: left;">Code and data in R can be found <a href="https://github.com/samcarlos/luftwaffe_locations">here</a> </div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg_7oQpLnrzQc_fryzo4ZivmjyB-coA72yCqF0t_3kMOgTsK3jxUyQ4Hmxmgp94iKWIFRmpf9PtavFoO-BmFo7vjnR4pxst7dSeELTMh8p3QstSxLtGSTMPqPQrSrMT3TixCfPlGILY_7uW5ydRLyjQZsFgUUjbA5UGMH-ymRKusLWaJNE79LzGoj2M=s2573" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2573" data-original-width="1440" src="https://blogger.googleusercontent.com/img/a/AVvXsEg_7oQpLnrzQc_fryzo4ZivmjyB-coA72yCqF0t_3kMOgTsK3jxUyQ4Hmxmgp94iKWIFRmpf9PtavFoO-BmFo7vjnR4pxst7dSeELTMh8p3QstSxLtGSTMPqPQrSrMT3TixCfPlGILY_7uW5ydRLyjQZsFgUUjbA5UGMH-ymRKusLWaJNE79LzGoj2M=s16000" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://drive.google.com/file/d/1lRC6tm9Wswwfo6W-rllotj5XRoudyORu/view?usp=sharing">Here is link if the above doesn't work</a><div class="separator" style="clear: both; text-align: center;"><a href="https://drive.google.com/file/d/1lRC6tm9Wswwfo6W-rllotj5XRoudyORu/view?usp=sharing"></a><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjxX8JClPomPx7FqSLrWyKmNnid9kjLvt4WPnAuJw1JbCNaUFx8HPk-8JwZyy3VHnPV_ru7yeTMc2foeODzAcajSLPwKrAvRRVBpPKuMODERka1s9EHFr2pi-k0B-FJ4y-JVdSQR5ooGeuZbY6Sogin9-a0-DDV0FTrloALfBgHmY1szCTpOt3A9mIK=s20000" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="20000" data-original-width="6000" height="6263" src="https://blogger.googleusercontent.com/img/a/AVvXsEjxX8JClPomPx7FqSLrWyKmNnid9kjLvt4WPnAuJw1JbCNaUFx8HPk-8JwZyy3VHnPV_ru7yeTMc2foeODzAcajSLPwKrAvRRVBpPKuMODERka1s9EHFr2pi-k0B-FJ4y-JVdSQR5ooGeuZbY6Sogin9-a0-DDV0FTrloALfBgHmY1szCTpOt3A9mIK=w1878-h6263" width="1878" /></a></div></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /></div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://drive.google.com/file/d/1qXf38IMVTXwUNC4S2zURrN6UpON_nECh/view?usp=sharing">Link to image is here</a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div></div><br /><br /><p></p><p><span><br /></span></p><p>Here are a couple of additional plots I made: </p><p><img height="480px;" src="https://lh6.googleusercontent.com/UgVQp2o1YZXpYvelcyUCidbdMZK2rjsdPEMbmLaQlFnAjIgSLffsGPy__eQ18C2p8eJn8We_b0YlVaalEEKVlukaPawfW5AAoe-IyIowBFUJCFnFdaiFK8JOOHoUFYWfUox-B06VRWN_" width="480px;" /></p><p><span><br /></span></p><p>Minard Plot:</p><p><img height="540px;" src="https://lh5.googleusercontent.com/JAAiOca5erck1_2flGZJ3Ir99u9CRZmEMxJ5NIbndJU_dilBk-dUFVDbE43vEq1ZQ9-5_e2rUzZb2RGtlUP16NfzYcgwbfxEqsmcrl0moJn3jS8oN1viJQU7O70AvCrUc_S4mIZEIXs6" width="432px;" /></p><p></p>samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com1tag:blogger.com,1999:blog-6922608948294168433.post-12077760418974243852020-12-21T15:10:00.001-08:002020-12-21T15:11:00.259-08:00Did the P-51 Mustang Defeat the Luftwaffe?<div class="separator"><div style="margin-left: 1em; margin-right: 1em;"></div></div><div><span id="docs-internal-guid-9eb5f558-7fff-7cc1-fa9b-c8736bfff952"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"><i>14 October 1943</i> - 291 US Army Air Force (USAAF) heavy bombers took off from England to attack a Ball Bearing factory in the heart of Germany. The goal was to destroy the Nazi war machine’s fighting ability and means of war production. As the bombers flew deeper into enemy territory their supporting escorts had to return to England due to the fighters’ shorter range. The unescorted bombers were vulnerable to enemy fighters and paid a heavy price. 60 did not return leading to a loss rate of over 20% thus cementing October 14, 1943 as </span><a href="https://en.wikipedia.org/wiki/Second_Raid_on_Schweinfurt" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">‘Black Thursday</span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">’. The ten crewmen on each of those planes had to survive 25 (later pushed to 30) missions to return home. They could not sustain losses like this indefinitely.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">But they wouldn't have to for long. Within a year similar missions could be completed with far fewer casualties - often well below 5%. </span></p><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"></span></span></p><div class="separator" style="clear: both; text-align: center;"><span><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh623g6_QH5QcK6FcCHBO-3rjgZNl_TK-ZtD29XQa1EOsmKY21r0fyrl80hYxTCwANtmzF1HuuGja5mvZ6lMmQbCLhtx9CyDnNBCrwhjz6Tidku5051qZolvmnhqoFhx6DJGC1mp8uPWdk/s2048/graph_by_time_cut.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1138" data-original-width="2048" height="356" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh623g6_QH5QcK6FcCHBO-3rjgZNl_TK-ZtD29XQa1EOsmKY21r0fyrl80hYxTCwANtmzF1HuuGja5mvZ6lMmQbCLhtx9CyDnNBCrwhjz6Tidku5051qZolvmnhqoFhx6DJGC1mp8uPWdk/w640-h356/graph_by_time_cut.png" width="640" /></a></span></span></div><p></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">The above plot shows raids for the Eighth Air Force during two time periods; on the left the second half of 1943 and the right July - Mid August 1944. Each point represents a raid’s distance and percentage of planes that did not return back to base. This does not count bombers scrapped after landing due to heavy damage. Nor does it account for wounded, killed, or POWs in a mission (even if a plane came back not all of the crew did). </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">In the chart on the left one can see a fairly strong if imperfect relationship between distance (I chose London as a starting point but airfields were scattered throughout southern England) and bomber losses. The second chart on the right shows this relationship is far less prevalent. The average loss rate of planes during the second half of 1943 was around 3.9% compared with 1% loss rate in the summer of 1944. Using these as proxies for survival probabilities and 30 as the number of missions required before a crew member finished a tour of duty the probability a member came home went from 30% to 74%. How did the loss ratio decrease by so much during this period?</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">The consensus story of those two plots goes something like this: after Black Thursday USAAF operations suspended long range attacks into Germany until a fighter was capable of escorting the bombers. Enter the P-51 Mustang. </span></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><img height="300" src="https://lh3.googleusercontent.com/B6gqPC6lk4Z4y4zpZpwKp7QyqIrgLSitjrjbAo9Mj8nRuqhd2xungFEFUG0Nzs64be7uvADoQI2fqwYKeziF1Fo3dPiCD2UxcekkgMUmyipsL-LtiQ749WElgjWYvpEL58KNb5x-=w400-h300" style="margin-left: auto; margin-right: auto; margin-top: 0px;" width="400" /></td></tr><tr><td class="tr-caption" style="text-align: center;"><span style="font-family: Arial; font-size: 8pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-align: left; vertical-align: baseline; white-space: pre-wrap;">A P-51 with drop tanks. Notice the Swastikas underneath the canopy - the </span><span style="font-family: Arial; font-size: 8pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; text-align: left; vertical-align: baseline; white-space: pre-wrap;">only </span><span style="font-family: Arial; font-size: 8pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-align: left; vertical-align: baseline; white-space: pre-wrap;">acceptable place to display a swastika - each indicating an aerial victory. Having met the criteria of five aerial victories this pilot has earned the moniker of “ace”.
</span></td></tr></tbody></table><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">An American aircraft (with an English designed engine) it was capable of flying to Berlin and back. Not only did it have the necessary range but also </span><a href="https://digitalcommons.lsu.edu/gradschool_theses/1219/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">outclassed the German interceptors</span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"> of the period. The P-51 was therefore able to ‘break the back’ of the Luftwaffe and gain air supremacy over europe. This allowed USAAF bombers to go into Germany and beyond without heavy losses.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">But the claims of the P-51’s importance often goes farther than that. With air superiority the Allies launched the D-Day landings of Normandy unencumbered. And with Allies now fighting Germany in the west a Nazi Defeat was inevitable. A causal line of reasoning is therefore established between the P-51 and the ultimate destruction of Nazi Germany. Perhaps this is why - somewhat uniquely for a fighter plane - it’s achieved something of a </span><a href="https://youtu.be/Ekv_mUb3yuo?t=81" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">totem status</span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">But did the P-51 Mustang “break the back” of the Luftwaffe? This post will go over the consensus history of operations between the summers of 1943 and 1944. It will go over Mission Level data. An index is created of German Pilot Strength over time. </span></p><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">This follows the history laid out by </span><a href="http://www.uapress.ua.edu/product/To-Command-the-Sky,2266.aspx" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">McFarland and Newton</span></a><span style="font-family: Arial; font-size: 11pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">. But it seems most histories are similar to this and conclude that the Luftwaffe was defeated prior to D-Day. </span></p><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Strategic Bombing and Pointblank</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Air power was still relatively new at the beginning of WW2. It wasn’t clear at the outset how best to use it in a military conflict. Broadly speaking there were two ways of thinking how the airplane could affect the course of the war. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">This first and most obvious use of airpower was as a tactical force. A precision armaments system that can provide ground support in real time to assist tank and infantry forces. The Germans seized on this use of airpower as a form of ‘mobile artillery’ with devastating effectiveness. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">In contrast the English and American Armies focused more on Strategic Bombing. Instead of focusing and directly influencing a battle the bombers would fly deep into enemy territory destroying the means of waging war. The target wasn’t tanks and enemy defenses but enemy factories, oil refineries, transportation networks, and even civilian populations. However, an enemy has never been subdued by strategic bombing before. The USAAF got their chance to see whether they could destroy the enemy from the air with Operation Pointblank. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">To prepare for the D-Day Landings in summer of 1944 the Allied command issued the Pointblank Directive in June 1943. The objective was to destroy German Morale and ‘capacity for armed resistance’. It was to do this by imposing ‘heavy losses on Germany day fighter force’ and draw German fighters ‘away from Russian and Mediterranean theatres of war’. Once completing the objective the heavy bomber forces would be put to use in a supportive role of the D-Day in the Spring of 1944. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">For a brief overview of tactics in the European Air War see </span><a href="https://docs.google.com/document/d/1Th-jp74SBRGiW9lELxEEOBIE7VEAzDo7Z5zRn3_5TLs/edit?usp=sharing" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">here</span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Attrition Warfare</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Between the summer and through the fall of 1943 US bombers attacked German factories with high losses. After regrouping forces in late 1943 the allied offensive continued in early 1944. The new P-51 Mustangs were thrown into combat as soon as they could arrive during this period thus providing some cover to bombers at long distances. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Despite the imminent need to destroy the enemy before the summer of 1944 they were often grounded due to poor weather. A break came through at the end of February with a forecasted week of clear weather. This was to be the start of Operation Argument (also known as “Big Week”) targeted specifically against the Luftwaffe in order to gain air supremacy. It’s objective was to minimise the ‘Production-wastage’ differential by attacking both the factories on the ground and Luftwaffe in the air. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">However, it became clear that the bombing offensive actually wasn't destroying industry at a rate where Germans could be kept up. Indeed during this period of increasing attacks German industry was put on a ‘war footing’ and increased fighter plane production despite the increase in bombing. In 1943 </span><a href="https://en.wikipedia.org/wiki/World_War_II_aircraft_production" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">Germany Produced</span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"> 25,500 planes. That number increased to 40,500 in 1944. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">But a realization occurred to US high command - even if the Germans could replace their fighters they could not replace their experienced pilots as easily. Instead of minimizing German ‘production’ they’d focus on maximizing the ‘wastage’ of german pilots in combat. They just needed to lure the enemy up to attack the bombers with the knowledge enough would be shot down by P-51s.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">This was the logic behind attacking Berlin in early March 1944. The bombers would be used more as bait for the Luftwaffe than the bombing of industry. The USAAF did so with enormous costs. The largest one day loss of the eight air forces occurred on the first Berlin Raid of march 6 1944 with 69 heavy bombers lost and known as “Black Monday”. Due to the large number of aircraft dispatched this amounted to a 10% loss rate. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">These were losses the US could sustain. Luftwaffe pilot losses weren’t. After the Battle of Berlin and heavy fighting the Luftwaffe changed tactics. They would only attack en masse and other times not confront the invading bombers at all. But ultimately they ceded air control to the USAAF. </span><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">The German Luftwaffe was defeated before D-Day. Or so the consensus history goes...</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">To look into this I gathered some data on Eight Air force missions and did some analysis. </span></p><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">Eight Air Force Data</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">The original data set came from </span><a href="http://www.8thafhsoregon.com/8th/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">8thafhsoregon.com/8th/</span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">. There is an excel spreadsheet that has missions broken out between the start of operations and August of 1944. This data includes (among many things) target location, number of planes dispatched and lost for both bombers and escorts. I used this as a template and then edited it as necessary, often looking at the WWII chronology on which it was based to fix any errors (also in that link). I’ve tried to be as accurate as possible but this was a manual process so there are probably errors. I appended Latitude and Longitude to the dataset using ggmap functionality in R. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Some problems with the dataset are:</span></p><ul style="margin-bottom: 0px; margin-top: 0px;"><li dir="ltr" style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Some names of places have changed since the original. German names are now in modern day Poland for instance.</span></p></li><li dir="ltr" style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">The location of dispatched planes are often ambiguous. Often there are several targets for a set of planes. I’ve no way to be sure which particular location each plane went to so I just chose one location for the lot. </span></p></li><li dir="ltr" style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">After July 1944 escort by plane type wasn't broken out so I am unable to show the relative distribution of fighter types per mission. </span></p></li></ul><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">Eight Air Force Analysis</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlUbhVm2IgDI2qkDyAJJJdhazzRSrQdXHg934xE_rrmteq2scqTW0Qej6DsqVsF0OZvdqcdPJGydX3WZJYFTdxU4tPuA1ilkQUZYT8B-o0tcUBoCtE2dBNcI3lC0Fof_3ukWsKcc8RXXE/s2048/raids_distance_plot.png" imageanchor="1" style="font-family: "Times New Roman"; font-size: medium; font-weight: 400; margin-left: 1em; margin-right: 1em; text-align: center; white-space: normal;"><img border="0" data-original-height="1707" data-original-width="2048" height="534" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlUbhVm2IgDI2qkDyAJJJdhazzRSrQdXHg934xE_rrmteq2scqTW0Qej6DsqVsF0OZvdqcdPJGydX3WZJYFTdxU4tPuA1ilkQUZYT8B-o0tcUBoCtE2dBNcI3lC0Fof_3ukWsKcc8RXXE/w640-h534/raids_distance_plot.png" width="640" /></a></span></p><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">As noted previously a key feature of bombing losses was the distance travelled to the target. The longer the distance the more likely there were</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">The above plot shows a scatterplot of Distance travelled by Date for a unique raid location between January 1943 and August 1944. It’s colored and numbers by percentage lossed (red is higher, blue is lower). I’ve also removed missions that exceeded 800 miles for readability as they were few in number. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">One can see that loss rates decrease in both the time and increase with distance. Heavy fighting before winter of 1943 for distances more than 400 miles were particularly costly for the USAAF. These raids included Hamburg and the first two Schweinfurt Raids. One can also see a decrease in activity at the end of 1943 as weather conditions were poor and USAAF regrouped after those costly raids. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Starting in February and March the USAAF went deeper into enemy territory - a period that covered both Operation Argument and the Battle of Berlin. While these raids sustained high losses they are represented in the low teens of percentages because of the larger number of bombers attacking. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">As Operation Pointblank ended focus shifted to targets in France and therefore smaller distances. In April, May, and June they attacked transportation targets, airfields, and sometimes more direct tactical support. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Overall one can clearly see that as time progressed it became less and less costly for USAAF forces to fly far into Germany as a percentage of aircraft dispatched. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Below is a plot of statistics by month to better see the aggregate losses more clearly. </span></p><br /><br /><br /><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0We9z4rCELygdrofIf4rkYQk47NVC_z12ABWZh_eLhfE786gOIOpWgO1G-ZKae5tITPsNfHP1YK0eFEa7TRAyraeUszgeEbqU0ezs6zL_Dsa1jAwy35oFVYHVwcypZfkXs-AO39cMMQ0/s2048/heavy_dispatched_loss_by_month_graph.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="1593" data-original-width="2048" height="498" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0We9z4rCELygdrofIf4rkYQk47NVC_z12ABWZh_eLhfE786gOIOpWgO1G-ZKae5tITPsNfHP1YK0eFEa7TRAyraeUszgeEbqU0ezs6zL_Dsa1jAwy35oFVYHVwcypZfkXs-AO39cMMQ0/w640-h498/heavy_dispatched_loss_by_month_graph.png" width="640" /></a></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">The above are aggregate statistics by month for heavy bombers: total dispatched, total lost and the lost ratio. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Heavy monthly loss ratio existed prior to 1944 with a maximum of over 7% in October of 1943 (Black Thursday was the culprit). In part this was due to the small number of planes dispatched. </span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"><br /></span><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Starting in February the number of planes dispatched increased to a maximum in June 1944 and then slightly back down in July 1944. Total lost planes increased throughout this period as well reaching a high point in April of 1944. Even in May 1944 the USAAF lost 300 heavy bombers. In June it dropped to 200 heavy Bombers. Why was there such a drop in losses between May and June? </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Looking at the increase in P-51 usage there was a sizable increase in escorts p-51 more than doubling from April (3151 to 6844) to May but only slightly from May to June. Moreover there doesn’t appear to be an obvious relationship between increased P-51 Escort usage and decrease in Heavy Bomber Losses (at least on the aggregate data - see below for further analysis). </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCYatuVGrl8OrSstjbkZxLaAuyewFogRfzU8RoytivHbiGls-xIrtpkT2537pd7Urllo55Rg67hGoriDGoN6pB6yudzjzOpW201c6m1tsg-O0zX4g8q8DrGKxjl8LJRW1uJvRB-sCnFuM/s2048/fighter_dispatched_by_month_graph.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="1138" data-original-width="2048" height="356" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCYatuVGrl8OrSstjbkZxLaAuyewFogRfzU8RoytivHbiGls-xIrtpkT2537pd7Urllo55Rg67hGoriDGoN6pB6yudzjzOpW201c6m1tsg-O0zX4g8q8DrGKxjl8LJRW1uJvRB-sCnFuM/w640-h356/fighter_dispatched_by_month_graph.png" width="640" /></a></p><br /><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">The history I’ve described above suggested that most of the fighting was done in February and March. After this period the Luftwaffe was supposedly defeated and air supremacy passed to the USAAF. Looking at the loss ratio statistics one can see they were much more acceptable range for USAAF forces - especially compared with 1943. In some sense the Luftwaffe may have been irrelevant at that point in that the USAAF could expect replacements at that point to replace any lost bombers. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">But the evidence suggests that the Luftwaffe was still inflicting heavy damage through May and didn’t cease after March as the original history suggested. What happened? I think we need to continue looking into data from the German perspective and its relative strength over time. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">Luftwaffe Data </span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"> </span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">I couldn’t find similar mission-level data for the Luftwaffe during WW2. (Who knows, maybe some of that data was destroyed by the Eighth Air Force?) I did find there is a good amount of data on Luftwaffe Pilot aerial claims and planes they shot down. Pilots had strong incentives to report the planes they shot down and such claims are probably overstated. However it’s a dataset that should provide some indication of fighting strength and activity over time. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">This </span><a href="http://don-caldwell.we.bs/jg26/claims/tonywood.htm" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">Dataset </span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">comprises two parts.The first are the aerial claims for a pilot that includes (among other information) date, aircraft destroyed, and fighter group. The second includes data on when a pilot was removed from the war either MIA, KIA, or POW. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Ater joining these two datasets to get precise entrance (first claim in database) and exit dates there are 2,565 pilots with a total of 50,419 combined claimed victories. As the average pilot in the dataset as over 19 claims it clearly is biased towards the elite pilots and doesn’t include those pilots who had no claims. However, this could still be a useful dataset to show relative strength over time. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">As an EDA I first looked at first entrances and exits by front over time. If a person transferred between fronts it would not show up in these charts. Note that I removed two entrance points from the graph as they were so extreme; May 1940 on West had 273 and June 1941 had 251 entries of pilots in the dataset. These correspond to the Battle of Britain and Invasion of Russia so we can expect a lot of pilots had their first claims during those periods. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi2VB8epiL9qhgQDjhhbxTu-SmfCI90-FvpaMwmfzRYyVNnL1A4qEwBlxjRKgGeWvZHWDQIp5D6Kst9lxfhgMFTXldOPut46j0wibAsKeUMp-jsmEnH5oobawgBqXEgo9EofjrYCs3-iI/s2048/entry_exits_by_month_front_plot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="1138" data-original-width="2048" height="356" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi2VB8epiL9qhgQDjhhbxTu-SmfCI90-FvpaMwmfzRYyVNnL1A4qEwBlxjRKgGeWvZHWDQIp5D6Kst9lxfhgMFTXldOPut46j0wibAsKeUMp-jsmEnH5oobawgBqXEgo9EofjrYCs3-iI/w640-h356/entry_exits_by_month_front_plot.png" width="640" /></a></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Also Note that the West involves mediterainan, north african, and southern europe where the Eight Air Force did not generally operate. They also include night fighters targeting against English bombing raids that were somewhat distinct from the day fighters against the USAAF.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">On the Eastern front one can see exits and entrance follow a seasonality pattern that corresponds to German offenses summer offenses: Invasion of Russia in 1941, road to Stalingrad in 1942, and Battle of Kursk in 1943. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">For both fronts the Germans had Entries higher than existed throughout most of 1943 and early 1944. Only after the summer of 1944 were losses consistently higher than entries for both fronts.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">On the Western form there was a lot of activity for the Battle of Britain - this was the Luftwaffe’s failed attempt at strategic bombing. Starting January 1944 there was a sustained increase in exits corresponding to the attrition warfare of the Eighth Air Force discussed above. While there was clear damage to the Luftwaffe during this time it reached a maximum loss of 66 pilots in July second only to losses in December 1944. If the Luftwaffe was defeated by the USAAF before D-Day then why were they losing so many pilots after that? </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">Luftwaffe Defeated at Normandy?</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">As mentioned above the Luftwaffe was a tactical air force designed to support ground offenses. German command clearly intended to use it as such during the expected Allied invasion of France as they moved a large number of Fighters towards France after June 6, 1944. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">To better understand this dynamic I created an index of fighter strength by day for Reich Defense with the pilot entrance / exit and claimed data. For a particular date a pilot was included in the dataset he had claimed an aerial victory before that date and did not exit by that time. We can also see, from the most recent claim, which fighter group he was in. Using this we can tie a particular pilot to a location and therefore if he was actually under the Reich Defense.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Determining which Fighter Group and squadron were actually defending the Reich at a particular point in time was a manual process greatly helped by </span><a href="https://asisbiz.com/luftwaffe/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">this website</span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">. It showed that most fighter groups defending Germany moved to France immediately after the allied invasion of Normany in June 1944. For </span><a href="https://asisbiz.com/luftwaffe/jg54.html" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">example III Gruppe of JG 54</span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"> went from Illesheim, Germany to Villacoublay, France on June 7 1944. Moreover one can see (but not shown here) the claimed planes shot down after June 6 changed from US heavy bombers to short range english fighters (Spitfires and Typhoons) adding further evidence of the shift in priorities. </span></p><br /><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFPxY1FCSifZ57vw_DKtHSoIBAgwh3OMKFCJDfJTGFnsfqP1rNbT7oZFgLTNfUfUMGydeFgcZe_n8Roz-qBAPR56vUgrCYt_EAepCr5UBQ1WfxscZ4Aiimxf8eivD6E-9EdSWhjU8kWCI/s2048/pilots_w_kills_by_day_front.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="1138" data-original-width="2048" height="356" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFPxY1FCSifZ57vw_DKtHSoIBAgwh3OMKFCJDfJTGFnsfqP1rNbT7oZFgLTNfUfUMGydeFgcZe_n8Roz-qBAPR56vUgrCYt_EAepCr5UBQ1WfxscZ4Aiimxf8eivD6E-9EdSWhjU8kWCI/w640-h356/pilots_w_kills_by_day_front.png" width="640" /></a></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Above is a plot of the number of Pilots defending the Reich compared to all other fronts combined between Summer 1943 to October 1944. I narrowed down the Dense of Reich to those that were likely to face the Eighth Air Force in Battle so did not include fighter groups in Italy or Nordic countries. One can see it remains relatively constant up through the spring of 1944 when it actually shows an </span><span style="font-family: Arial; font-size: 11pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">increase </span><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">in the relative number of pilots. By the early summer over half of the pilots in this sample were in Defense of the Reich. It then dropped dramatically when Day Fighter forces moved to France following the invasion of Normandy. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">But wait, an increase in pilots when there’s heavy attrition fighting in the first half of 1944? How is this possible? </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">To check I created a stacked barchart by time. If the Pilots exited it counted a negative number and if they entered it counted as a positive number. One could either enter from another front or be a new pilot. They could exit to another front or exit the war entirely. (For an additional check see 2) below in the appendix. )</span></p><br /><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj650ECwEaFmpOY5uak2-PFiU10YeEBcejco60ACLzPBveUMExKZBLl1r-LNrkTWkxwmjj-Pq7DSvcKAorxtT_7fbxwBwb1vc7ZPVyX4e3jH8MuGoeBPFvCZ8QhZUwF0zFegIOe6iljYg0/s2048/change_in_pilots_by_front.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="1138" data-original-width="2048" height="356" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj650ECwEaFmpOY5uak2-PFiU10YeEBcejco60ACLzPBveUMExKZBLl1r-LNrkTWkxwmjj-Pq7DSvcKAorxtT_7fbxwBwb1vc7ZPVyX4e3jH8MuGoeBPFvCZ8QhZUwF0zFegIOe6iljYg0/w640-h356/change_in_pilots_by_front.png" width="640" /></a></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">While there was an increase in pilots exiting throughout the first half of 1944 it appears that was offset by a combination of new pilots and reallocation of pilots from other fronts. There were few pilots exiting to other fronts until June of 1944. While it seems hard to imagine the fighting strength of the Luftwaffe increasing significantly during this time the evidence suggests that the USAAF did not destroy the Luftwaffe prior to D-Day.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">Assessment of P-51</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">But that doesn’t mean the P-51 wasn’t instrumental in defending the bombers. I created a regression for the time period before June 5 1944 using data from the Eighth Air Force and combined it with Luftwaffe data. The response variable of interest is the number of bombers lost in combat for each unique raid. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">The data generally gave precise locations of where the bombers went; it did not give similar information of where Escorts went for all missions. For example, Mission Number 367 on May 24, 1944 USAAF sent 616 bombers to Berlin and 490 bombers to French Airfields. They were escorted by 144 P-38’s, 178 P-47’s and 280 P-51’s. While USAAF would probably have sent a majority of P-51’s to Berlin there’s no way to encode that. Instead I assume an weighted percentage of fighters going to each location proportional to the relative size of the bomber fleet. In this case I calculate a weighted_p51 score of 156 (616/(616+490)*280 ) escorting the Berlin Bombers.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Using the Luftwaffe Claims Data I am able to calculate the sum of all claimed kills for pilots defending the Reich on any particular day. This is something akin to the </span><a href="https://afinetheorem.wordpress.com/2012/10/12/learning-and-liberty-ships-p-thompson/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">liberty ship</span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"> ‘learning by doing’ literature. I’ve found this to be the strongest predictor for any single Luftwaffe pilot data. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">I include date as a continuous feature and also include dummy variables if there were no particular escorts. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Below are the results. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 378px; overflow: hidden; width: 173px;"><img height="378" src="https://lh3.googleusercontent.com/28cNLEwHnc-R6QDWHTv3qBflWm6Mt64YuwaTghWe3UKZbDcnz2zjN6KKAsLpYnZ2tRXFh-SlXg7eX5OngfSPt1htp2Jdnhq_PKGfUd_0r10AoNaepQvfGm3c2eHTE2czVObtgf-y" style="margin-left: 0px; margin-top: 0px;" width="173" /></span></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">One can see that distance is a very important feature but that time isn’t statistically significant. This is promising as it shows there isn’t a trend that cannot be explained with features given. Also note that the total_kills variable - a proxy for strength of luftwaffe - is positively correlated and has a p-value of .06. While it’s not a strong variable in the regression it adds some credibility as a feature in general. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Of particular interest is that the P-51 is negatively correlated with a p-value of .02. This indicates that the more P-51 escorts there were the fewer the bombers lost. Interestingly we also see a somewhat positive correlation with regard to P-47’s. This could be due to the fact that Pilot’s transitioned from P-47’s to P-51’s and the regression is picking up on that trend.</span></p><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">Conclusions</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">While evidence presented here is contrary to the general story of the Air War over Europe I believe it displays a more nuanced and realistic version of events. The Eighth Air Force did not defeat the Luftwaffe but it clearly made an impact and drew resources away from other fronts - a key objective of the Pointblank Directive. Moreover it made sure the Luftwaffe was tied down in Germany and not defending France while D-Day occured. It also seems clear that the P-51 was instrumental as it allowed the Eighth Air Force to launch attacks deep into Germany while maintaining acceptable losses. </span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">But it also seems clear that the Luftwaffe threw a large number of fighters from defending the Reich towards defending the western front and lost many pilots as a result. It wasn’t so much that the Eighth Air force defeated the Luftwaffe so D-Day could happen. Instead it seems like D-Day drew Luftwaffe resources away from Reich Defense so that the Eight Air Force could fly more freely over Germany after June 1944. </span></p><br /><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">Appendix </span></p><br /><ol style="margin-bottom: 0px; margin-top: 0px;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4LLP_CLiqYp_Lg49xqv9axrHy9dvmzOLwpwQSwd2Y6Vfigi34O19D80DBevvuxpzrRaoBL9fEbdEvDnGNr-eHKFTQqV9j80G2KEVqz-Q59ry12DwwNydUhxY9d13aRlfhISnMf8zXN8Y/s2508/heavies_dispatched_time_distance_target_type.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="1254" data-original-width="2508" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4LLP_CLiqYp_Lg49xqv9axrHy9dvmzOLwpwQSwd2Y6Vfigi34O19D80DBevvuxpzrRaoBL9fEbdEvDnGNr-eHKFTQqV9j80G2KEVqz-Q59ry12DwwNydUhxY9d13aRlfhISnMf8zXN8Y/w640-h320/heavies_dispatched_time_distance_target_type.png" width="640" /></a><li dir="ltr" style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; list-style-type: decimal; vertical-align: baseline; white-space: pre;">1)
</li></ol><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Thought I’d just add this chart that shows the types of targets the Eighth Air Force attacked during that period. Initially U-Boats and naval sites were a large target but after they became less and less of an issue they focused more on aircraft and industrial targets in Germany in early 1944. During that time they also attacked </span><a href="https://en.wikipedia.org/wiki/Operation_Crossbow" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">V-Weapon sites</span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">. I thought that was interesting since it wouldn’t be until the summer when they were operational. Towards the end of the sample period they started attacking oil and even some tactical </span><a href="https://en.wikipedia.org/wiki/Operation_Cobra" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">support in France</span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">2) As an additional check to using this data I compared the monthly exit rates by a dataset at the end of </span><a href="http://www.uapress.ua.edu/product/To-Command-the-Sky,2266.aspx" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">To Command the Sky</span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"> (curiously they didn’t make a similar plot in their book). While the index I created using Tony Wood’s focuses on Pilots this dataset from TCTS looks at the number of planes shot down. They should be correlated and that is what we see below. However the scale of TCTS data is almost an order of magnitude higher suggesting that my index is missing a lot of data and is incomplete. I think it’s ok as a relative changes but probably not as levels </span></p><br /><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir6PSenAru0j6WrNG2s3dFxfoO-bco-_p_jh-UBpPTi_I1-ktHnNfYBtclz9KneZ3cyAb0wVp00DxaB71hmEKkdDDC-dQ21iwwklXaJWvbb6OX8T7OYjQt-8ZKuqeKqVUuc6gjFWOLLzs/s2048/wastage_by_month_different_sources.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="1593" data-original-width="2048" height="498" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir6PSenAru0j6WrNG2s3dFxfoO-bco-_p_jh-UBpPTi_I1-ktHnNfYBtclz9KneZ3cyAb0wVp00DxaB71hmEKkdDDC-dQ21iwwklXaJWvbb6OX8T7OYjQt-8ZKuqeKqVUuc6gjFWOLLzs/w640-h498/wastage_by_month_different_sources.png" width="640" /></a></p><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"><b>Works Consulted</b></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"><b><br /></b></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://www.google.com/books/edition/Big_Week/6lpgDwAAQBAJ?hl=en" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">Big Week: BIggest Air Battle of World War II </span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">- </span><a href="https://www.google.com/search?hl=en&sxsrf=ALeKk00NguHaV9qzUM9-rNVBxGRhFYcdPg:1608498585168&q=inauthor:%22James+Holland%22&tbm=bks" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="background-color: white; color: #1a73e8; font-size: 11.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">James Holland</span></a><span face="Roboto, sans-serif" style="background-color: white; color: #70757a; font-size: 11.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"> </span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://www.google.com/books/edition/To_Command_the_Sky/jDobiGMb3t8C?hl=en&gbpv=0" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">To Command the Sky </span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">- </span><a href="https://www.google.com/search?hl=en&sxsrf=ALeKk02GdDtq7g5vz2j3VDsHE6FSlNDhRw:1608498637612&q=inauthor:%22Stephen+L.+McFarland%22&tbm=bks" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="background-color: white; color: #1a73e8; font-size: 11.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Stephen L. McFarland</span></a><span face="Roboto, sans-serif" style="background-color: white; color: #70757a; font-size: 11.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="https://www.google.com/search?hl=en&sxsrf=ALeKk02GdDtq7g5vz2j3VDsHE6FSlNDhRw:1608498637612&q=inauthor:%22Wesley+Phillips+Newton%22&tbm=bks" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="background-color: white; color: #1a73e8; font-size: 11.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Wesley Phillips Newton</span></a><span face="Roboto, sans-serif" style="background-color: white; color: #70757a; font-size: 11.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"> </span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://www.google.com/books/edition/Engineers_of_Victory/QlNLerrcWBIC?hl=en&gbpv=0" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">Engineers of Victory</span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"> - </span><a href="https://www.google.com/search?hl=en&sxsrf=ALeKk038-8Ha9wF7ZQwIP_N3gerROXGiOw:1608498995718&q=inauthor:%22Paul+Kennedy%22&tbm=bks" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">Paul Kennedy </span></a></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://web.mst.edu/~rogersda/american&military_history/Doolittle-Black%20Monday-Need%20for%20Innovation-1944.pdf" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">DOOLITTLE, BLACK MONDAY, AND INNOVATION</span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"> - J David Rogers</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://digitalcommons.lsu.edu/gradschool_theses/1219/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">How the Mustang trampled the Luftwaffe </span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">- Robert W. Courter</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://www.afhistory.org/wp-content/uploads/2008_winter.pdf" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">The P-51 Mustang: the Most Important Aircraft in History? - Marshall L. Michel </span></a></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;"><a href="https://www.afhistory.org/wp-content/uploads/Spring2012.pdf" style="text-decoration-line: none;">The Battle of Britain, in 1940 and “Big Week,” in 1944: A comparative Perspective - Arnold D. Harvey </a>
Github</span></p><div><br /></div></span><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div></div><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br />samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com1tag:blogger.com,1999:blog-6922608948294168433.post-16272305967956028082020-11-02T10:27:00.002-08:002020-11-03T11:17:43.105-08:00PredictIt vs Five Thirty Eight: An explanation of the differences between prediction markets and polling models <p>If you're like me you've been looking at <a href="https://projects.fivethirtyeight.com/2020-election-forecast/?cid=rrpromo">FiveThirtyEight</a> and <a href="https://www.predictit.org/markets/13/Prez-Election">PredictIt</a> election probabilities multiple times a day. Recently I've been focusing on some interesting disagreements in electoral outcomes at the state level. For instance; FiveThirtyEight gives Pennsylvania, Michigan, Florida, Wisconsin and Ohio at least 20% lower probability of a Trump victory than PredictIt. Why is PredictIt giving Trump a much higher chance in those states? </p><p><br /></p><p>One theory is that FiveThirtyEight focuses on polls and who the people of the state will vote for while PredictIt focuses on which candidate will actually win the state. The difference could come down to who is in control of the state. It is possible that the governor or legislature <a href="https://nymag.com/intelligencer/2020/04/could-legislatures-hijack-the-2020-presidential-election.html">may get to decide</a> who wins. To explore this hypothesis I gathered the current predictions (morning of 2020-11-01) and compared the differences on which party controls which part of the state government (data found <a href="https://en.wikipedia.org/wiki/List_of_United_States_governors">here </a>and <a href="https://en.wikipedia.org/wiki/List_of_United_States_state_legislatures">here</a>). </p><p><br /></p><p>Below is a bar chart ranked differences between PredictIt and FiveThirtyEight Trump probabilities on who controls the governor, Upper House, and Lower House. </p><p><br /></p><p><br /></p><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii3KoBYXMwpJDK3dEe6YrFcRwrNm1q4jyo0KCpEFJldKVeBoZdDYCOup0A9l4qOqpUlZOTFVpLZDjDcEfszfqoS9EwytPJhl5vSbnOoFmYHtMa0KD6HrVbCUZFePLs5fqPj32kXG4-7Ss/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="851" data-original-width="1188" height="458" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii3KoBYXMwpJDK3dEe6YrFcRwrNm1q4jyo0KCpEFJldKVeBoZdDYCOup0A9l4qOqpUlZOTFVpLZDjDcEfszfqoS9EwytPJhl5vSbnOoFmYHtMa0KD6HrVbCUZFePLs5fqPj32kXG4-7Ss/w640-h458/image.png" width="640" /></a></div><div style="text-align: left;"><br /></div><div style="text-align: left;">One can see that the of the top 10 states with largest discrepancies 6 have Republic Governors, 9 have Republican Upper Legislatures and 8 have Republican Lower Houses. Interestingly, the states where Predictit has Biden ahead are also generally Republican held. </div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;">To further explore the relationship I made a scatterplot of the difference between Trump probabilities on FiveThirtyEight's probability below. </div></div><br /><p></p><p></p><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZCP9zvuHyDLaWX5ZRQjN-EVA0cpMIQ1hOJeStHLBph1WN-pZTky7BQ_MV5U0JSIufbF_1olSo-tmX3IKvaAAGeOIc6cXd5r9yO9-cdVaR2_3AFAY63Qh3xdpHXsBxWkMK_S7Hf1Clxzo/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="851" data-original-width="1188" height="458" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZCP9zvuHyDLaWX5ZRQjN-EVA0cpMIQ1hOJeStHLBph1WN-pZTky7BQ_MV5U0JSIufbF_1olSo-tmX3IKvaAAGeOIc6cXd5r9yO9-cdVaR2_3AFAY63Qh3xdpHXsBxWkMK_S7Hf1Clxzo/w640-h458/image.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: left;">On average Trump gets ~5.9% higher probability on PredictIt than FiveThirtyEight. Those heavily favored to be Trump states have (less than 15% change of Biden win on FiveThirtyEight) are actually less favored to go for Trump on PredictIt. This is reversed in states that are most likely to go for Biden as Predictit gives them a higher chance for Trump. This could be because prediction markets are not as sure of the polls and expect errors-in-variables from the polls. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div></div><div class="separator" style="clear: both; text-align: left;">Those heavily favored to be Biden Wins (>80% on FiveThirtyEight) but are held by Republican Upper Legislatures (Minnesota, Wisconsin, Michigan, and Pennsylvania) have an average difference in prediction probabilities of 22% while those that are Democratic held have a ~5% difference. If FiveThirtyEight correctly estimates the voting intention and PredictIt correctly estimates who wins the state then this implies ~a 15% chance that legislatures can decide the outcome in these states. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><a href="https://github.com/samcarlos/scratch_analysis/tree/master/predictit_538_comparisons">github</a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"></div></div><h2 style="text-align: left;">Update 2020-11-03</h2><div>A commenter asked to see a similar plot with the Economist's Predictions instead of FiveThirtyEight. Below is the chart. </div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiC8wLMsbPnCcuegamw4jI1mwnB1lPDqQ2OpougclzOvSQaujjgI7vqiqXu7IE2kz-eb7taBBrRtNMtJYHkqSmQpLFGWlKB8kBFUHIstYgldqtKDo9h86aJZWe3e1H3njvpO1EEczV90s/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1117" data-original-width="2048" height="350" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiC8wLMsbPnCcuegamw4jI1mwnB1lPDqQ2OpougclzOvSQaujjgI7vqiqXu7IE2kz-eb7taBBrRtNMtJYHkqSmQpLFGWlKB8kBFUHIstYgldqtKDo9h86aJZWe3e1H3njvpO1EEczV90s/w640-h350/image.png" width="640" /></a></div><br />It's very similar the FiveThirtyEight graph. This shouldn't be very surprising since the two predictions have a correlation of .995. </div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><br /></div></div><div>Another possibility <a href="https://www.bloomberg.com/amp/opinion/articles/2020-11-03/the-money-says-prepare-for-a-long-election-night-and-week">that's been raised</a> is that prediction markets know there was a systematic error in previous election predictions and they are compensating for that. To test that I looked at the difference between the percentage two way vote residuals from the 2016 election. </div><div><br /></div><div>As an example of this residual calculation lets take a look at Pennsylvania. ~2.97 million voted or Trump and 2.92 million voted for Clinton. This corresponds to Trump getting ~50.3% of the actual vote share between the two. FiveThirtyEight predicted trump to get ~45.2% of the vote and Clinton to get 48.9% leading to an expected two way proportion of ~48% for Trump. This leads to a residual of 2.3%. </div><div><br /></div><div>Below are he differences in predictions vs the residuals of 538's predictions from 2016. It's also colored by the sates FiveThirtyEight got correct/ wrong in predicting who'd they vote for. </div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbuaLOMA3uZn9N8R3PtsQlSQvpZTPTjXyqpvPnksiwLKk_shZGGNZOSKID0_1svq42L5iJ90bTPtG-X3S7geM0u_CqUfNxb3Pyisz0CErYWRQwmZmPOdRS7WKrukwPIkWXa9iH6kY_oRo/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1117" data-original-width="2048" height="350" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbuaLOMA3uZn9N8R3PtsQlSQvpZTPTjXyqpvPnksiwLKk_shZGGNZOSKID0_1svq42L5iJ90bTPtG-X3S7geM0u_CqUfNxb3Pyisz0CErYWRQwmZmPOdRS7WKrukwPIkWXa9iH6kY_oRo/w640-h350/image.png" width="640" /></a></div><br />I don't see an obvious association between the two. A regression analysis of difference in PredicIt and FiveThirtyEight on current FiveThirtyEight predictions, Republican Legislatures, and this residual confirms that residuals are not a significant predictor (not shown but code in github).</div><div><br /></div><div>One interesting comparison is New Hampshire and Minnesota. Both had similar residuals in 2016, both correctly classified to go for Clinton in 2016, are both likely to go for Biden in 2020 and yet have a 10 point difference between PredictIt and FiveThirtyEight. But Minnesota has a Republican Upper Legislature while New Hampshire has Democratic one. </div><p></p>samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com4tag:blogger.com,1999:blog-6922608948294168433.post-47718563388687070672020-06-27T11:42:00.000-07:002020-06-27T11:42:33.917-07:00The mr_uplift package in R: A Practitioners Guide to Trade-Offs in Uplift Models<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="fluid-row" id="header" style="background-color: white; box-sizing: border-box; color: #333333;">
<h1 class="title toc-ignore" style="box-sizing: border-box; color: inherit; font-family: inherit; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px;">
<span style="color: inherit; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: x-small;">This post will go over a python package called mr_uplift (Multiple Responses Uplift) in R using the reticulate package. In it I set up a hypothetical problem using the GOTV dataset where we are interested in increasing voting while being mindful of some assumed costs.</span></h1>
<h2 style="box-sizing: border-box; color: inherit; font-family: inherit; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px; text-align: left;">
<span style="font-size: large;">Introduction</span></h2>
<h1 class="title toc-ignore" style="box-sizing: border-box; color: inherit; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px;">
<div class="section level1" id="introduction" style="box-sizing: border-box;">
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; font-size: small;">Uplift models (or heterogeneous treatment effect mode<span style="color: inherit;">ls) is a branch of machine learning with the goal of maximizing some objective function by assigning an optimal treatment to each individual. In practice it is often ambiguous objective function should be. For instance, when applied to a marketing campaign the objective function might be to increase user behavior (of some sort) while maintaining some level of costs. The trade-offs between an increase in user behavior and increase in costs are often not defined a-priori.</span></span></div>
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; font-size: small;">The <a href="https://github.com/Ibotta/mr_uplift" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration-line: none;">mr_uplift</a> package in python builds and evaluates trade-offs among several different response variables of interest. It estimates something akin to a <a href="https://en.wikipedia.org/wiki/Production%E2%80%93possibility_frontier#" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Production Possibility Frontier</a> for uplift models. Using these estimated PPF curves make it easier for stakeholders to determine the <span style="color: inherit;">trade-offs</span><span style="color: inherit;"> associated with using the model.</span></span></div>
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; font-size: small;">In this post I use the GOTV dataset to construct a hypothetical problem where we are interested in increasing voter turnout while being cognizant of the costs involved. I will highlight some functionality of the mr_uplift package that I have found to be helpful in practice. In particular:</span></div>
<ul style="box-sizing: border-box; margin-bottom: 10px; margin-top: 0px;">
<li style="box-sizing: border-box;"><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; font-size: small;">Encoding treatment variables that share common features</span></li>
<li style="box-sizing: border-box;"><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; font-size: small;">Evaluating trade-offs among different response variables</span></li>
<li style="box-sizing: border-box;"><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; font-size: small;">Ability to use only a subset of the treatment should the need arise</span></li>
<li style="box-sizing: border-box;"><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; font-size: small;">Variable Importance</span></li>
</ul>
<span style="color: inherit; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; font-size: small;">Finally, in the appendix I will compare a loss function designed to maximize these trade-off curves directly with a mean squared error approach.</span></div>
</h1>
<h3 style="box-sizing: border-box; color: inherit; font-family: inherit; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px; text-align: left;">
<span style="font-size: large;">GOTV Data and Preprocessing</span></h3>
<h1 class="title toc-ignore" style="box-sizing: border-box; color: inherit; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px;">
<div class="section level1" style="box-sizing: border-box;">
<div class="section level2" id="gotv-data-and-preprocessing" style="box-sizing: border-box;">
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; font-size: small;">The GOTV dataset is a randomized experiment where ~45% of individuals received one of four letters (treatments) in the mail designed to increase voter turnout in the subsequent election. The remaining 55% receive no letter and are designated the control. More information on the experiment can be found <a href="https://isps.yale.edu/sites/default/files/publication/2012/12/ISPS08-001.pdf" style="background-color: transparent; box-sizing: border-box; color: #337ab7;">here</a>.</span></div>
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; font-size: small;">Using individual level data (demographic features and previous voting behavior) we are tasked with building an uplift model to increase voter turnout by assigning one of the 5 treatments (I consider the control to be a treatment in addition to four possible letters) to each individual.</span></div>
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; font-size: small;">For this example I include an additional assumption where sending one of the four letters has a cost of 1 unit (I will discuss the interpretability of this below). Assuming a constant cost for mailing is reasonable in this particular case but in other settings the cost may vary with the treatment and/ or the user.</span></div>
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; font-size: small;">Below I discuss pre-processing the data into the three necessary variable groupings: the treatment variables, the response variables, and the explanatory variables.</span></div>
</div>
</div>
</h1>
<h3 style="box-sizing: border-box; color: inherit; font-family: inherit; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px; text-align: left;">
<span style="font-size: large;">Encoding the Treatment Variables</span></h3>
<h1 class="title toc-ignore" style="box-sizing: border-box; color: inherit; font-family: inherit; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px;">
<div class="section level1" style="box-sizing: border-box; font-family: "helvetica neue", helvetica, arial, sans-serif;">
<div class="section level2" style="box-sizing: border-box;">
<div class="section level3" id="encoding-the-treatment-variables" style="box-sizing: border-box;">
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">In most uplift models treatments are assigned a dummied out and transformed into a series of columns an indicator for each treatment. However, this ignores the <span style="color: inherit;">information that can be shared between the treatments.</span></span></div>
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="color: inherit; font-size: small;">The GOTV treatments have a nested structure where a subsequent treatments includes a previous treatments attributes and includes another one. For instance; The base mailing letter is called ‘civic duty’ and notifies recipient to “DO YOUR CIVIC DUTY AND VOTE!”. The subsequent ‘hawthorne’ mailing letter includes the ‘civic duty’ information in addition to a note that his voting is public information. Similarly the ‘self’ letter builds off the ‘hawthorne’ letter and the ‘neighbors’ letter builds off the ‘self’ letter.</span></div>
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">We can include this nested information of treatments as shown below. Note that encoding the treatment information this way may or may not be helpful in this example. It is meant to be demonstrative of the capabilities of mr_uplift package. In practice I have found this way encoding to be very helpful where there are several ordered choices for treatments.</span></div>
<pre class="r" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; word-break: break-all;"><code class="hljs" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;"><span class="hljs-comment" style="box-sizing: border-box; color: #999988; font-style: italic;">#to install hete package use command:</span>
<span class="hljs-comment" style="box-sizing: border-box; color: #999988; font-style: italic;">#devtools::install_github("wlattner/hete")
</span>#py_install('mr_uplift')
<span class="hljs-keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">library</span>(hete)
<span class="hljs-keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">library</span>(dplyr)
<span class="hljs-keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">library</span>(reticulate)
data(gotv)
gotv = data.frame(gotv)
t = data.frame(matrix(<span class="hljs-number" style="box-sizing: border-box; color: #009999;">0</span>,nrow(gotv),<span class="hljs-number" style="box-sizing: border-box; color: #009999;">4</span>))
colnames(t) = c(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">"civic_duty"</span>, <span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">"hawthorne"</span>,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">"self"</span>,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">"neighbors"</span>)
gotv$treatment = as.character(gotv$treatment)
t[(gotv$treatment!=<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'Control'</span>), c(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">"civic_duty"</span>)] = <span class="hljs-number" style="box-sizing: border-box; color: #009999;">1</span>
t[which(gotv$treatment %<span class="hljs-keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">in</span>% c(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">"Hawthorne"</span>,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">"Self"</span>,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">"Neighbors"</span>) ), c( <span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">"hawthorne"</span>)] = <span class="hljs-number" style="box-sizing: border-box; color: #009999;">1</span>
t[which(gotv$treatment %<span class="hljs-keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">in</span>% c(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">"Self"</span>,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">"Neighbors"</span>) ), c( <span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">"self"</span>)] = <span class="hljs-number" style="box-sizing: border-box; color: #009999;">1</span>
t[which(gotv$treatment %<span class="hljs-keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">in</span>% c(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">"Neighbors"</span>) ), c( <span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">"neighbors"</span>)] = <span class="hljs-number" style="box-sizing: border-box; color: #009999;">1</span>
<span class="hljs-comment" style="box-sizing: border-box; color: #999988; font-style: italic;">#no-letter treatment is considered a row of zeros while the neighbors treatment is a row of ones</span>
print(unique(t))</code></pre>
<pre style="border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; word-break: break-all;"><code class="hljs" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;">## civic_duty hawthorne self neighbors
## 1 1 0 0 0
## 3 1 1 0 0
## 6 0 0 0 0
## 17 1 1 1 0
## 20 1 1 1 1</code></pre>
</div>
</div>
</div>
</h1>
<h3 style="box-sizing: border-box; color: inherit; font-family: inherit; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px;">
<span style="font-size: large;">Encoding the Response Variables</span></h3>
<h1 class="title toc-ignore" style="box-sizing: border-box; color: inherit; font-family: inherit; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px;">
<div class="section level1" style="box-sizing: border-box; font-family: "helvetica neue", helvetica, arial, sans-serif;">
<div class="section level2" style="box-sizing: border-box;">
<div class="section level3" id="encoding-the-response-variables" style="box-sizing: border-box;">
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">Here we have two responses: whether someone voted in subsequent election and whether they had a cost or not. The cost is defined to be one if an individual received one of the 4 letters.</span></div>
<pre class="r" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; word-break: break-all;"><code class="hljs" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;">y = data.frame( voted = (gotv[,c(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'voted'</span>)]==<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'Yes'</span>)*<span class="hljs-number" style="box-sizing: border-box; color: #009999;">1</span>, cost = t[,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">1</span>])
print(head(y))</code></pre>
<pre style="border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; word-break: break-all;"><code class="hljs" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;">## voted cost
## 1 0 1
## 2 0 1
## 3 1 1
## 4 1 1
## 5 1 1
## 6 0 0</code></pre>
</div>
</div>
</div>
</h1>
<h3 style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 24px; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px;">
Encoding the Explanatory Variables</h3>
<h1 class="title toc-ignore" style="box-sizing: border-box; color: inherit; font-family: inherit; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px;">
<div class="section level1" style="box-sizing: border-box; font-family: "helvetica neue", helvetica, arial, sans-serif;">
<div class="section level2" style="box-sizing: border-box;">
<div class="section level3" id="encoding-the-explanatory-variables" style="box-sizing: border-box;">
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: x-small;">Here we just need to make sure we convert the categorical features into numeric types. Nothing too interesting here.</span></div>
<pre class="r" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; word-break: break-all;"><code class="hljs" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;">gotv[,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'p2004'</span>] = tolower(gotv[,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'p2004'</span>])
x = as.data.frame((gotv[,c(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'g2000'</span>,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'g2002'</span>,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'p2000'</span>,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'p2002'</span>,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'p2004'</span>)]==<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'yes'</span>)*<span class="hljs-number" style="box-sizing: border-box; color: #009999;">1</span>)
x[,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'sex'</span>] = (gotv[,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'sex'</span>] == <span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'female'</span>)*<span class="hljs-number" style="box-sizing: border-box; color: #009999;">1</span>
x = cbind(x, gotv[,c(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'hh_size'</span>,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'age'</span>,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'n_general'</span>,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'n_primary'</span>)])
print(head(x))</code></pre>
<pre style="border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; word-break: break-all;"><code class="hljs" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;">## g2000 g2002 p2000 p2002 p2004 sex hh_size age n_general n_primary
## 1 1 1 0 1 0 0 2 65 3 1
## 2 1 1 0 1 0 1 2 59 3 1
## 3 1 1 0 1 0 0 3 55 3 1
## 4 1 1 0 1 0 1 3 56 3 1
## 5 1 1 0 1 0 1 3 24 3 1
## 6 0 0 0 0 0 0 3 25 1 0</code></pre>
</div>
</div>
</div>
</h1>
<h1 style="box-sizing: border-box; color: inherit; font-family: inherit; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px;">
<span style="font-size: large;">Building a MRUplift Model</span></h1>
<h1 class="title toc-ignore" style="box-sizing: border-box; color: inherit; font-family: inherit; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px;">
<div class="section level1" id="building-a-mruplift-model" style="box-sizing: border-box; font-family: "helvetica neue", helvetica, arial, sans-serif;">
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">With pre-processing of the responses, treatments, and explanatory variables finished we can now use the reticulate package to pass the data into python and built a MRUplift model. The MRUplift code automatically grid-searches and makes train/test split to build trade-off curves.</span></div>
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">Here I use the ‘optimized_loss’ functionality that attempts to maximize the PPF curve directly instead of using an MSE loss. In the appendix I compare using this loss with an MSE loss.</span></div>
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">After the model is built we can create ‘erupt_curves’ on the test dataset to see how the model performs and the trade-offs between costs and voter turnout are. A matrix of ‘objective_weights’ is inputed into this function determining the relative weights of response variables to maximize. Here I set the ‘cost’ weight to be -1 while varying the ‘voting’ weight between 0 and 30 (30 was chosen arbitarily). For each of these ‘objective_weights’ the package calculates the treatment that maximizes the expected weighted sum of response variables.</span></div>
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">For a more thorough introduction to the uplift models and erupt curves using the mr_uplift package please see some tutorials <a href="https://github.com/Ibotta/mr_uplift/blob/master/examples/mr_uplift_one_response_example.ipynb" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration-line: none;">here</a> and <a href="https://github.com/Ibotta/mr_uplift/blob/master/examples/mr_uplift_multiple_response_example.ipynb" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration-line: none;">here</a>.</span></div>
<pre class="python" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; word-break: break-all;"><code class="hljs" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;"><span class="hljs-keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">import</span> numpy <span class="hljs-keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">as</span> np
<span class="hljs-keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">import</span> pandas <span class="hljs-keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">as</span> pd
<span class="hljs-keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">from</span> mr_uplift.mr_uplift <span class="hljs-keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">import</span> MRUplift</code></pre>
<pre class="python" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; word-break: break-all;"><code class="hljs" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;">t = r.t
y = r.y
x = r.x
param_grid_mse = dict(num_nodes=[<span class="hljs-number" style="box-sizing: border-box; color: #009999;">8</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">32</span>],
dropout=[ <span class="hljs-number" style="box-sizing: border-box; color: #009999;">.1</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">.2</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">.3</span>],
activation=[<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'relu'</span>],
num_layers=[<span class="hljs-number" style="box-sizing: border-box; color: #009999;">1</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">2</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">3</span>],
epochs=[<span class="hljs-number" style="box-sizing: border-box; color: #009999;">25</span>],
batch_size=[<span class="hljs-number" style="box-sizing: border-box; color: #009999;">512</span>],
copy_several_times = [<span class="hljs-number" style="box-sizing: border-box; color: #009999;">10</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">1</span>],
alpha = [<span class="hljs-number" style="box-sizing: border-box; color: #009999;">.99</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">.75</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">.5</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">0</span>])
uplift_model_optim = MRUplift()
<span class="hljs-comment" style="box-sizing: border-box; color: #999988; font-style: italic;">#Using the 'optimized_loss' functionality </span>
<span class="hljs-comment" style="box-sizing: border-box; color: #999988; font-style: italic;">#uplift_model_optim.fit(x, y, t, param_grid = param_grid_optim, n_jobs = 1, optimized_loss = True)</span>
<span class="hljs-comment" style="box-sizing: border-box; color: #999988; font-style: italic;">#uplift_model_optim.save('~/Github/mr_upliftR/models/mr_uplift_gotv_mult_tmt2')</span>
uplift_model_optim.load(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'~/Github/mr_upliftR/models/mr_uplift_gotv_mult_tmt2'</span>)</code></pre>
<pre class="python" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; word-break: break-all;">objective_weights = np.concatenate([np.array([(x) <span class="hljs-keyword" style="background-color: transparent; box-sizing: border-box; color: #990000; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: inherit; font-weight: bold; white-space: pre-wrap;">for</span><span style="background-color: transparent; color: inherit; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: inherit; white-space: pre-wrap;"> x </span><span class="hljs-keyword" style="background-color: transparent; box-sizing: border-box; color: #990000; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: inherit; font-weight: bold; white-space: pre-wrap;">in</span><span style="background-color: transparent; color: inherit; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: inherit; white-space: pre-wrap;"> range(</span><span class="hljs-number" style="background-color: transparent; box-sizing: border-box; color: #009999; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: inherit; white-space: pre-wrap;">30</span><span style="background-color: transparent; color: inherit; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: inherit; white-space: pre-wrap;">)]).reshape(</span><span class="hljs-number" style="background-color: transparent; box-sizing: border-box; color: #009999; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: inherit; white-space: pre-wrap;">-1</span><span style="background-color: transparent; color: inherit; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: inherit; white-space: pre-wrap;">,</span><span class="hljs-number" style="background-color: transparent; box-sizing: border-box; color: #009999; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: inherit; white-space: pre-wrap;">1</span><span style="background-color: transparent; color: inherit; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: inherit; white-space: pre-wrap;">), -np.ones(</span><span class="hljs-number" style="background-color: transparent; box-sizing: border-box; color: #009999; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: inherit; white-space: pre-wrap;">30</span><span style="background-color: transparent; color: inherit; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: inherit; white-space: pre-wrap;">).reshape(</span><span class="hljs-number" style="background-color: transparent; box-sizing: border-box; color: #009999; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: inherit; white-space: pre-wrap;">-1</span><span style="background-color: transparent; color: inherit; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: inherit; white-space: pre-wrap;">,</span><span class="hljs-number" style="background-color: transparent; box-sizing: border-box; color: #009999; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: inherit; white-space: pre-wrap;">1</span><span style="background-color: transparent; color: inherit; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: inherit; white-space: pre-wrap;">)], axis = </span><span class="hljs-number" style="background-color: transparent; box-sizing: border-box; color: #009999; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: inherit; white-space: pre-wrap;">1</span><span style="background-color: transparent; color: inherit; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: inherit; white-space: pre-wrap;">)</span></pre>
<pre class="python" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; word-break: break-all;"><code class="hljs" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;">erupt_curves_optim, dists_optim = uplift_model_optim.get_erupt_curves(objective_weights = objective_weights)</code></pre>
</div>
</h1>
<h2 style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 30px; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px;">
Initial Model Results</h2>
<h1 class="title toc-ignore" style="box-sizing: border-box; color: inherit; font-family: inherit; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px;">
<div class="section level1" style="box-sizing: border-box; font-family: "helvetica neue", helvetica, arial, sans-serif;">
<div class="section level2" id="initial-model-results" style="box-sizing: border-box;">
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">We can now plot the results of the MRUplift package in R using ggplot2. Below we can see two types of charts. For a general introduction to the methodology found here please see <a href="https://medium.com/building-ibotta/estimating-and-visualizing-business-tradeoffs-in-uplift-models-80ff845a5698" style="background-color: transparent; box-sizing: border-box; color: #337ab7;">here</a>.</span></div>
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">This first chart shows the expected responses (along with 95% CI) for a given set of objective weights signified by the model assignment. As the weight on voting increases from zero to 30 we see an increase in both voting activity and and increase in costs. There is also a ‘random’ assignment ERUPT curve - for each objective weights this ‘shuffles’ the treatment assignment. The difference between the model vs random assignment shows how well the model is learning the heterogeneous treatment effect (HETE). Since there is no HETE effects in the costs by construction these two curves will be equal for that response variable.</span></div>
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">The second chart shows the distribution of treatments for each objective weights. Note that users receive no mail when we set the objective function to be 0 for voting and -1 or costs. As the relative weights changes more users receive the treatment vector (1,1,1,1) which corresponds to the 'neighbors' treatment.</span></div>
<pre class="r" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; word-break: break-all;"><code class="hljs" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;"><span class="hljs-keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">library</span>(ggplot2)
erupt_curves = py$erupt_curves_optim
dists = py$dists_optim
</code></pre>
<pre class="r" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; word-break: break-all;"><code class="hljs" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;">erupt_curves[,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'weights'</span>] = as.numeric(gsub(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">',-1.0'</span>,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">''</span>,erupt_curves[,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'weights'</span>]))
dists[,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'weights'</span>] = as.numeric(gsub(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">',-1.0'</span>,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">''</span>,dists[,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'weights'</span>]))
ggplot(erupt_curves, aes(x = weights, y = mean, color = assignment,group = assignment))+geom_line()+facet_grid(response_var_names~., scales = <span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">"free_y"</span>)+
geom_pointrange(aes(ymin=mean-<span class="hljs-number" style="box-sizing: border-box; color: #009999;">2</span>*std, ymax=mean+<span class="hljs-number" style="box-sizing: border-box; color: #009999;">2</span>*std))+theme_minimal()+
xlab(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'Objective Weight of "Voted" Response (Keeping cost weight=-1)'</span>)+
ylab(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'Expected Response'</span>)+
ggtitle(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'Expected Responses by Voting Weight'</span>)+
theme(text = element_text(size=<span class="hljs-number" style="box-sizing: border-box; color: #009999;">13</span>)) </code></pre>
<div style="box-sizing: border-box; font-size: 14px; margin: 0px 0px 10px;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhopo2ks6QeYZbpxBvBL-EXvYR1u_qpKoyP3MmaP20uwZnLwWiwBALW6wqnRcYPADiHpsTpQyb_0CIkUOjLV4SJWBVAG6SOphm1rB4CiAsOKg6YkQUSmrzShnW34ZFnLtQyGWoofyKgm1Y/s1344/uplift_1.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="960" data-original-width="1344" height="358" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhopo2ks6QeYZbpxBvBL-EXvYR1u_qpKoyP3MmaP20uwZnLwWiwBALW6wqnRcYPADiHpsTpQyb_0CIkUOjLV4SJWBVAG6SOphm1rB4CiAsOKg6YkQUSmrzShnW34ZFnLtQyGWoofyKgm1Y/w500-h358/uplift_1.png" width="500" /></a></div>
<pre class="r" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; word-break: break-all;"><code class="hljs" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;">ggplot(dists, aes(x = weights , y = percent_tmt, group = as.factor(tmt), colour =tmt))+geom_line(size = <span class="hljs-number" style="box-sizing: border-box; color: #009999;">1.5</span>)+theme_minimal()+
xlab(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'Objective Weight of "Voted" Response (Keeping cost weight=-1)'</span>)+
ylab(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'Percent of Users Receiving Treatment'</span>)+
ggtitle(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'Distribution of Treatments by Objective Weights'</span>)+
theme(text = element_text(size=<span class="hljs-number" style="box-sizing: border-box; color: #009999;">13</span>)) </code></pre>
<div style="box-sizing: border-box; font-size: 14px; margin: 0px 0px 10px;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFQkEqmJsiZCFnHBAZuU5_YLR9w2lknaWHyp1izYRFFCdLcFZVSSEVgRcOww3cBwRC1KFaZwj2VbUMjz1NkScuTX1vyJuALJLfSYnJrz5vyUaHKVs7D2wmVPAdR4G7OjEOgYnpFH-5-es/s1344/uplift_2.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="960" data-original-width="1344" height="448" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFQkEqmJsiZCFnHBAZuU5_YLR9w2lknaWHyp1izYRFFCdLcFZVSSEVgRcOww3cBwRC1KFaZwj2VbUMjz1NkScuTX1vyJuALJLfSYnJrz5vyUaHKVs7D2wmVPAdR4G7OjEOgYnpFH-5-es/w625-h448/uplift_2.png" width="625" /></a></div>
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">In order to see the trade-offs more clearly we can plot the first set of charts against each other. This shows a costs vs voting curve. Below, I have set cost to be negative conforming to traditional PPF curves that say we want to be up and to the right.</span></div>
<pre class="r" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; word-break: break-all;"><code class="hljs" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;">erupt_curves_cost = subset(erupt_curves, response_var_names == <span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'cost'</span>)
erupt_curves_voted = subset(erupt_curves, response_var_names == <span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'voted'</span>)
colnames(erupt_curves_voted)[<span class="hljs-number" style="box-sizing: border-box; color: #009999;">1</span>:<span class="hljs-number" style="box-sizing: border-box; color: #009999;">2</span>] = paste0(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'voted_'</span>,colnames(erupt_curves_voted)[<span class="hljs-number" style="box-sizing: border-box; color: #009999;">1</span>:<span class="hljs-number" style="box-sizing: border-box; color: #009999;">2</span>])
colnames(erupt_curves_cost)[<span class="hljs-number" style="box-sizing: border-box; color: #009999;">1</span>:<span class="hljs-number" style="box-sizing: border-box; color: #009999;">2</span>] = paste0(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'cost_'</span>,colnames(erupt_curves_cost)[<span class="hljs-number" style="box-sizing: border-box; color: #009999;">1</span>:<span class="hljs-number" style="box-sizing: border-box; color: #009999;">2</span>])
ppf = merge(erupt_curves_voted, erupt_curves_cost, by = c(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'weights'</span>,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'assignment'</span>))
ggplot(ppf, aes(x = -cost_mean, y = voted_mean, group = assignment, colour = assignment, label = weights))+geom_line(size = <span class="hljs-number" style="box-sizing: border-box; color: #009999;">1.5</span>)+theme_minimal()+
xlab(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'Negative Average Cost'</span>)+
ylab(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'Average Vote'</span>)+
ggtitle(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'Voting by Cost Frontier'</span>)+
theme(text = element_text(size=<span class="hljs-number" style="box-sizing: border-box; color: #009999;">13</span>)) </code></pre>
<div style="box-sizing: border-box; font-size: 14px; margin: 0px 0px 10px;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAFUoCv6eP5NCAN6-EwFpWTBs8obl-zJ2128Hok0fS4RmUMkkvcHXje-ArgRkEdL-C3fAu39aMWVN67Z3QjkWo_-yWRhc__h8M3a3MW_UMHJUFHsAlAUg4UL3v_-nlVLv2MagH6Qa3LT4/s1344/uplift_3.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="960" data-original-width="1344" height="358" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAFUoCv6eP5NCAN6-EwFpWTBs8obl-zJ2128Hok0fS4RmUMkkvcHXje-ArgRkEdL-C3fAu39aMWVN67Z3QjkWo_-yWRhc__h8M3a3MW_UMHJUFHsAlAUg4UL3v_-nlVLv2MagH6Qa3LT4/w500-h358/uplift_3.png" width="500" /></a></div>
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">Using these charts we can decide where we want to be on these charts in a few ways. One way would be to determine that the benefit of 1 additional vote is worth 10 units of cost. This corresponds to an increase in costs of .75 unis while an increase in voting by 0.065 units.</span></div>
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">Alternatively, if we had a predetermined budget of .75 per user we can determine that the optimal set of weights correspond to a weight of 10 for voting.</span></div>
</div>
</div>
</h1>
<h2 style="box-sizing: border-box; color: inherit; font-family: inherit; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px;">
<span style="font-size: large;">Hey can you not use that treatment?</span></h2>
<h1 class="title toc-ignore" style="box-sizing: border-box; color: inherit; font-family: inherit; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px;">
<div class="section level1" style="box-sizing: border-box; font-family: "helvetica neue", helvetica, arial, sans-serif;">
<div class="section level2" id="hey-can-you-not-use-that-treatment" style="box-sizing: border-box;">
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">After presenting initial results a stakeholder might be hesitant to use the neighbor treatment due to the strong wording in the letter. What if we didn’t use that treatment? We can specify which treatments to use in the <code style="background-color: rgba(0, 0, 0, 0.04); border-radius: 4px; box-sizing: border-box; color: inherit; padding: 2px 4px; white-space: pre;">get_erupt_curves</code> functionality shown below.</span></div>
<pre class="python" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; word-break: break-all;"><code class="hljs" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;">temp_tmts = np.array([[<span class="hljs-number" style="box-sizing: border-box; color: #009999;">0.0</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">0.0</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">0.0</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">0.0</span>],
[<span class="hljs-number" style="box-sizing: border-box; color: #009999;">1.0</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">0.0</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">0.0</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">0.0</span>],
[<span class="hljs-number" style="box-sizing: border-box; color: #009999;">1.0</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">1.0</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">0.0</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">0.0</span>],
[<span class="hljs-number" style="box-sizing: border-box; color: #009999;">1.0</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">1.0</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">1.0</span>,<span class="hljs-number" style="box-sizing: border-box; color: #009999;">0.0</span>]])
erupt_curves_optim_4_tmts, dists_optim_4_tmts = uplift_model_optim.get_erupt_curves(objective_weights = objective_weights, treatments = temp_tmts)</code></pre>
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">We can compare the trade-offs of using the model with all treatments or subsetted treatments. A graph showing the trade-offs is shown below but with code removed for brevity. To see the full code check the <a href="https://github.com/samcarlos/mr_upliftR">github link</a>.</span></div>
<div style="box-sizing: border-box; font-size: 14px; margin: 0px 0px 10px;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicaOGYKLAh1I0UkWPo15QxsJZqt328ohG0JLH0i55mduPKwLmTDYlUW7L2Wqlsz9Sk9_eFR6Iop2X7oUPDPCz_eD3jz89Vut1haV35K6gTO34jNcT0uQMXneQEZANMMobGNmpAdxHT2FQ/s1344/uplift_4.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="960" data-original-width="1344" height="358" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicaOGYKLAh1I0UkWPo15QxsJZqt328ohG0JLH0i55mduPKwLmTDYlUW7L2Wqlsz9Sk9_eFR6Iop2X7oUPDPCz_eD3jz89Vut1haV35K6gTO34jNcT0uQMXneQEZANMMobGNmpAdxHT2FQ/w500-h358/uplift_4.png" width="500" /></a></div>
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">It appears the next strongest option ‘self’ option. However, using this instead of the ‘neighbors’ treatment shows dramatically decreased model performance. Whether adverse effects of using that treatment are outweighed by the measured benefits is something the stakeholder will have to decide.</span></div>
</div>
</div>
</h1>
<h2 style="box-sizing: border-box; color: inherit; font-family: inherit; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px;">
<span style="font-size: large;">What Variables are Important?</span></h2>
<h1 class="title toc-ignore" style="box-sizing: border-box; color: inherit; font-family: inherit; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px;">
<div class="section level1" style="box-sizing: border-box; font-family: "helvetica neue", helvetica, arial, sans-serif;">
<div class="section level2" id="what-variables-are-important" style="box-sizing: border-box;">
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">After the model is built and if we are ok using all treatments we can now look into what are important features for the model. One use the <code style="background-color: rgba(0, 0, 0, 0.04); border-radius: 4px; box-sizing: border-box; color: inherit; padding: 2px 4px; white-space: pre;">permutation_varimp</code> functionality shown below. This is similar to <a href="https://www.stat.berkeley.edu/~breiman/randomforest2001.pdf" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration-line: none;">Brieman’s permutation importance</a> except that instead of looking at changes in predictions we look at changes in optimal treatment given a set of weights. You can find more information about this feature <a href="https://github.com/Ibotta/mr_uplift/blob/master/examples/mr_uplift_variable_importance_example.ipynb" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration-line: none;">here</a>.</span></div>
<pre class="python" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; word-break: break-all;"><code class="hljs" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;">varimp = uplift_model_optim.permutation_varimp(weights = objective_weights[<span class="hljs-number" style="box-sizing: border-box; color: #009999;">10</span>])</code></pre>
<pre class="r" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; word-break: break-all;"><code class="hljs" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;">varimp = py$varimp
varimp[,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'var_names'</span>] = factor(varimp[,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'var_names'</span>], varimp[,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'var_names'</span>][order(varimp[,<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'permuation_varimp_metric'</span>])])
ggplot(varimp, aes(x = var_names, y = permuation_varimp_metric))+geom_point()+theme_minimal()+
xlab(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'Variable Name'</span>)+
ylab(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'Permutation Variable Importance'</span>)+
ggtitle(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'Variable Importance of Model'</span>)+
theme(text = element_text(size=<span class="hljs-number" style="box-sizing: border-box; color: #009999;">13</span>)) </code></pre>
<div style="box-sizing: border-box; font-size: 14px; margin: 0px 0px 10px;">
<br /></div>
<div style="box-sizing: border-box; font-size: 14px; margin: 0px 0px 10px;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh70zsuaipJTk-wRnCENN2R5YkGKdGCHyHEiRlEa-SZnoc-PSueTGm-UMp0tTifV1vLa_LWyJeVfU-A5_K1RKONrB1IAY6gQ3mkUJFAgYUnsjT9TgmWYjAQHNy45CgeVCtsbRFHMjbcGvo/s1344/uplift_5.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="960" data-original-width="1344" height="358" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh70zsuaipJTk-wRnCENN2R5YkGKdGCHyHEiRlEa-SZnoc-PSueTGm-UMp0tTifV1vLa_LWyJeVfU-A5_K1RKONrB1IAY6gQ3mkUJFAgYUnsjT9TgmWYjAQHNy45CgeVCtsbRFHMjbcGvo/w500-h358/uplift_5.png" width="500" /></a></div>
<div style="box-sizing: border-box; font-size: 14px; margin: 0px 0px 10px;">
<br /></div>
</div>
</div>
</h1>
<div style="font-family: "helvetica neue", helvetica, arial, sans-serif;">
The above chart suggests that previous primary voting behavior is most important while household size is not.</div>
<div style="font-family: "helvetica neue", helvetica, arial, sans-serif;">
<span style="color: inherit; font-family: inherit; font-size: 30px;"><br /></span></div>
<div style="font-family: "helvetica neue", helvetica, arial, sans-serif;">
<span style="color: inherit; font-family: inherit; font-size: large;">Conclusions</span></div>
<h1 class="title toc-ignore" style="box-sizing: border-box; color: inherit; font-family: inherit; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px;">
<div class="section level1" style="box-sizing: border-box; font-family: "helvetica neue", helvetica, arial, sans-serif;">
<div class="section level2" id="conclusions" style="box-sizing: border-box;">
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">This post went over a hypothetical uplift model problem with the GOTV dataset and the mr_uplift package. It went over a few unique features of the mr_uplift package that I have found to be useful in practice. Please check out the package and feel free to contribute!</span></div>
<div style="box-sizing: border-box; font-size: 14px; margin: 0px 0px 10px;">
<br /></div>
<div style="box-sizing: border-box; font-size: 14px; margin: 0px 0px 10px;">
<br /></div>
<div style="box-sizing: border-box; font-size: 14px; margin: 0px 0px 10px;">
<br /></div>
</div>
</div>
</h1>
<h2 style="box-sizing: border-box; color: inherit; font-family: inherit; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px;">
<span style="font-size: large;">Appendix Comparing MSE vs Optimized Loss</span></h2>
<h1 class="title toc-ignore" style="box-sizing: border-box; color: inherit; font-family: inherit; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px;">
<div class="section level1" style="box-sizing: border-box; font-family: "helvetica neue", helvetica, arial, sans-serif;">
<div class="section level2" id="appendix-comparing-mse-vs-optimized-loss" style="box-sizing: border-box;">
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">Fitting uplift models are generally hard because we are interested in estimating the interaction between the treatment(s) and other explanatory variables. I have developed an <a href="https://github.com/Ibotta/mr_uplift/blob/master/examples/mr_uplift_new_optimized_loss.ipynb" style="background-color: transparent; box-sizing: border-box; color: #337ab7;">Optimized Loss Function</a> that optimized the curves displayed here directly. Below is a short comparison between using this loss vs a standard MSE error model.</span></div>
<div style="box-sizing: border-box; font-size: 14px; margin: 0px 0px 10px;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1Os2iguSlmOjAfdB1AWHKL-CezRfC30Lk6YRm0c2N0URw4D7QrnAMp8AxqL3Ob08BkpSulV8YPbD1mEj5fvelM5dsPvPg-C4aygTTLBZwZNZFqgTnlT3_eP_1DjvZ19XLDqNUYKia3x4/s1344/uplift_6.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="960" data-original-width="1344" height="358" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1Os2iguSlmOjAfdB1AWHKL-CezRfC30Lk6YRm0c2N0URw4D7QrnAMp8AxqL3Ob08BkpSulV8YPbD1mEj5fvelM5dsPvPg-C4aygTTLBZwZNZFqgTnlT3_eP_1DjvZ19XLDqNUYKia3x4/w500-h358/uplift_6.png" width="500" /></a></div>
<div style="box-sizing: border-box; margin: 0px 0px 10px;">
<span style="font-size: small;">One can see that the frontier of the optimized model is up and to the right of the MSE frontier. This means that the optimized loss function is ‘better’ in the sense that it achieves a higher voter rate for a given cost or a lower cost for a given voter rate.<br /><br /><br />For code and models <a href="https://github.com/samcarlos/mr_upliftR">check out the github here</a></span></div>
</div>
</div>
</h1>
</div>
</div>
samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com0tag:blogger.com,1999:blog-6922608948294168433.post-50906129338082682712020-05-06T12:49:00.002-07:002020-05-06T12:49:30.809-07:00Covid Death Rates: Is the data correct?<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: left;">
Getting correct data on covid-19 cases is important to obtain up-to-date information on how the disease is progressing. It's also necessary create models and make accurate forecasts. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
However, I'm starting to think most of the charts we see for covid cases over time are incorrect. The reason is these datasets with aggregate statistics by state scrape data and looks at the changes in 'headline' numbers - how many total cases of covid by day. However scraping the data only accounts for when new deaths were reported and not when they happened. </div>
<div>
<br />For instance take a look at deaths by covid for Colorado at the NY Times infographic <a data-saferedirecturl="https://www.google.com/url?q=https://www.nytimes.com/interactive/2020/us/colorado-coronavirus-cases.html&source=gmail&ust=1588709309298000&usg=AFQjCNEx7TANhXW4iDWuFzgtsP9GVjbcWg" href="https://www.nytimes.com/interactive/2020/us/colorado-coronavirus-cases.html" style="color: #1155cc;" target="_blank">here</a>. One can see a dramatic spike of over 100 deaths in CO on April 24. However this due to how 'backfilling' and <a data-saferedirecturl="https://www.google.com/url?q=https://www.outtherecolorado.com/covid-19-death-toll-rises-22-in-colorado-with-addition-of-100-previously-unreported-fatalities/&source=gmail&ust=1588709309298000&usg=AFQjCNHCAS03iR2FQQ9Xgq383dJM4jEBDw" href="https://www.outtherecolorado.com/covid-19-death-toll-rises-22-in-colorado-with-addition-of-100-previously-unreported-fatalities/" style="color: #1155cc;" target="_blank">reporting on previously unreported cases</a>. I believe this methodology permeates other data sources including the <a data-saferedirecturl="https://www.google.com/url?q=https://www.google.com/search?sxsrf%3DALeKk037HRujAwTa4XGATDymiDx6H2_0bg%253A1588607040737%26ei%3DQDiwXt27LNLP0PEPrtaBaA%26q%3Dcolorado%2Bcovid%2Bdeaths%26oq%3Dcolordo%2Bcovid%2Bdeaths%26gs_lcp%3DCgZwc3ktYWIQA1AAWABgzYcDaABwAHgAgAEAiAEAkgEAmAEAqgEHZ3dzLXdpeg%26sclient%3Dpsy-ab%26ved%3D0ahUKEwjd2-ayxprpAhXSJzQIHS5rAA0Q4dUDCAw%26uact%3D5&source=gmail&ust=1588709309298000&usg=AFQjCNEPKWV0Wd6VbWgKnS9O1nYSwdUgNw" href="https://www.google.com/search?sxsrf=ALeKk037HRujAwTa4XGATDymiDx6H2_0bg%3A1588607040737&ei=QDiwXt27LNLP0PEPrtaBaA&q=colorado+covid+deaths&oq=colordo+covid+deaths&gs_lcp=CgZwc3ktYWIQA1AAWABgzYcDaABwAHgAgAEAiAEAkgEAmAEAqgEHZ3dzLXdpeg&sclient=psy-ab&ved=0ahUKEwjd2-ayxprpAhXSJzQIHS5rAA0Q4dUDCAw&uact=5" style="color: #1155cc;" target="_blank">automatic graph on google</a>, <a href="https://covid19.healthdata.org/united-states-of-america/colorado">IHME</a>, and <a href="https://covidtracking.com/data/state/colorado">covidtracking</a>. </div>
<div>
<br /></div>
<div>
The official data can be found on the <a data-saferedirecturl="https://www.google.com/url?q=https://covid19.colorado.gov/data/case-data&source=gmail&ust=1588709309298000&usg=AFQjCNHbrASl3YjlrvcaiE56QY_3ojLG7g" href="https://covid19.colorado.gov/data/case-data" style="color: #1155cc;" target="_blank">covid19 colorado website</a> and looks like a smooth and somewhat symmetric curve. Below is a chart comparing the two datasets. </div>
<div>
<br /></div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV6W78WAiTPdAoF6d5JrKIqmFI2PtfC8rmEUm3BH_Zvw9wjrcQtCVmw6muHUXw3me4trLw9I7WLWZvbZ12cEzNF-OIEobRoJg7JLXOlKAf71rrZULXAVZbGcCNx3H-WvZy8QURQcSLZ6I/s1600/covid_deaths_time.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="500" data-original-width="800" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV6W78WAiTPdAoF6d5JrKIqmFI2PtfC8rmEUm3BH_Zvw9wjrcQtCVmw6muHUXw3me4trLw9I7WLWZvbZ12cEzNF-OIEobRoJg7JLXOlKAf71rrZULXAVZbGcCNx3H-WvZy8QURQcSLZ6I/s640/covid_deaths_time.png" width="640" /></a></div>
<div>
<br /></div>
<div>
<a data-saferedirecturl="https://www.google.com/url?q=https://github.com/nytimes/covid-19-data/issues/227&source=gmail&ust=1588709309298000&usg=AFQjCNGMAZFMF7g6wCCjiX29XOvxUmys8g" href="https://github.com/nytimes/covid-19-data/issues/227" style="color: #1155cc;" target="_blank">This appears to be a known issue</a> but they still seem ok publishing these incorrect charts. It appears that this can give erroneous conclusions both to people looking at these charts and anyone trying to do an analysis with them. </div>
<div>
<br style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: small;" /></div>
<div>
It looks like the CDC is modeling on similar data. They use the variable "Daily change in cumulative COVID - 19 death counts" not "Daily Deaths" <a href="https://int.nyt.com/data/documenthelper/6926-mayhhsbriefing/af7319f4a55fd0ce5dc9/optimized/full.pdf#page=1">see slide 4</a>. It also may be a reason that <a href="https://www.vox.com/future-perfect/2020/5/2/21241261/coronavirus-modeling-us-deaths-ihme-pandemic">forecasting models are not doing so well</a>. </div>
<div>
<br /></div>
<div>
<a href="https://github.com/samcarlos/covid_data">github</a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br /></div>
samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com2tag:blogger.com,1999:blog-6922608948294168433.post-59286207312884085652020-03-12T20:09:00.000-07:002020-03-14T11:22:28.905-07:00Can Trade with China Predict COVID-19 Cases? Part 2<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
In <a href="https://scweiss.blogspot.com/2020/03/can-trade-explain-covid-19-cases.html">my last post</a> I discussed whether exports from china can explain current COVID-19 rates. There were some criticism with the analysis.<br />
<br />
The first was that I assumed some sort of causal relationship . I probably shouldn't have said whether trade can 'explain' COVID-19 rates. What I meant whether trade can 'predict' the differences in COVID -19 rates. The mechanism itself seems obvious - increased contact should increase probability of spreading diseases. Of course $ amount of trade is imperfect - I expect $1million of food exports to have more of a chance to have diseases than $1 million of phone exports - but it seems like a decent proxy for 'connectivity'.<br />
<br />
The biggest critique was that I didn't take into account population sizes. I thought that was a decent critique so have run results again and reproduced similar charts as before. Feel free to comment.<br />
<br />
<br />
Below is a histogram of log per capital COVID-19 cases. Seems far more symmetric taking into account population sizes.<br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglPqN1zHbXO7pdRRgmYy6Jb9IXPeIxsUjn7rFv8711gV8uV3m5pfVI4EUjnaaE3uhFKuOoZpxt7Eqye4iYkGjAEao1ldW-iZ7HnChWXaUvqDmdXPutiQudHIkrSUtMtF_mbzNXrX8e8jM/s1600/hist_covid_capita.png" imageanchor="1"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglPqN1zHbXO7pdRRgmYy6Jb9IXPeIxsUjn7rFv8711gV8uV3m5pfVI4EUjnaaE3uhFKuOoZpxt7Eqye4iYkGjAEao1ldW-iZ7HnChWXaUvqDmdXPutiQudHIkrSUtMtF_mbzNXrX8e8jM/s640/hist_covid_capita.png" width="640" /></a><br />
<br />
<br />
<br />
Below is scatterplot of log(covid-19 cases / population) ~ log(chinese exports) for each country. Looks like a fairly strong relationship. There are several small country outliers that reduces r^2 of regression to ~ .24. This is an increase in r^2 relative to not taking into account population.<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb-0zgcNVcQS0ogtox0RaRl1DJgR3l9DxbPodKqv_YMUJm8TDHQdw9dwc0pKr0FzeffFGLqn3Co5-JTaeGb2pg-qOTbudQtmovxLsvak0aILiBLMH-7VfghikHxh-qxP27HBMQzUXX_Vg/s1600/covid_capita_by_exports.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb-0zgcNVcQS0ogtox0RaRl1DJgR3l9DxbPodKqv_YMUJm8TDHQdw9dwc0pKr0FzeffFGLqn3Co5-JTaeGb2pg-qOTbudQtmovxLsvak0aILiBLMH-7VfghikHxh-qxP27HBMQzUXX_Vg/s640/covid_capita_by_exports.png" width="627" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
I ran a similar model of a random forest with all sectors of trade. Below is predicted vs actual plot. </div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9VxQ32pSGVZ1TkNUeQcorACM4qhvOAdgsJP6eT3ZsrydGDh79mhymL0Lq3epXtS_U8nPHwHykUOwkVkw9psTKy0L7ZIKv_VdNd1gEWyAjsDx40nDHevhteQzMNWhmQrPU1l2qY9gHK0/s1600/covid_capita_preds.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb9VxQ32pSGVZ1TkNUeQcorACM4qhvOAdgsJP6eT3ZsrydGDh79mhymL0Lq3epXtS_U8nPHwHykUOwkVkw9psTKy0L7ZIKv_VdNd1gEWyAjsDx40nDHevhteQzMNWhmQrPU1l2qY9gHK0/s640/covid_capita_preds.png" width="627" /></a></div>
<br />
The relationship now is ~ .55 r^2 which shows is an increase in what was previously posted and the univariate regression above. Iran is still the largest outlier. Bahrain and Iceland are also now outliers.<br />
<br />
Below is an updated importance plot. Nickel and sunflower seeds are still highly predictive of COVID-19 cases. I'm sure many of these correlations (not causations!) are geographic in nature. But some exports may be more likely to carry diseases like 'articles of gut'. I think the best way to treat the below graph is a rough exploratory device not meant to draw grand conclusions.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6Kd8xDoecZ7up7YPX-ASwMYbXHSnrVd1ZfMzGKEhLE7N1zR3HBDdGPJyF7djsY6VWqYz9d-vhlW1HZG02fk-eYM8zid8EJkEQ4yOxhX9dWLe4SdpQjmMNqhgSlnFdxnDdbMkZaC7ogBU/s1600/glmnet_importance_covid.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6Kd8xDoecZ7up7YPX-ASwMYbXHSnrVd1ZfMzGKEhLE7N1zR3HBDdGPJyF7djsY6VWqYz9d-vhlW1HZG02fk-eYM8zid8EJkEQ4yOxhX9dWLe4SdpQjmMNqhgSlnFdxnDdbMkZaC7ogBU/s640/glmnet_importance_covid.png" width="628" /></a><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
The conclusions don't dramatically change form previous analysis. If anything the results have gotten stronger.<br />
<br />
<a href="https://github.com/samcarlos/covid19_trade/blob/master/covid_trade.R'">github</a><br />
<br /></div>
samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com0tag:blogger.com,1999:blog-6922608948294168433.post-10449508703122489752020-03-10T20:04:00.001-07:002020-03-12T20:10:08.217-07:00Can Trade Explain Covid -19 Cases? <div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
I've updated some results. Find them <a href="https://scweiss.blogspot.com/2020/03/can-trade-with-china-predict-covid-19.html">here</a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
TLDR: I've found an association between number of people that tested positive for COVID-19 in a country and imports from China. In addition there are particular industries that are particularly correlated with COVID-19 rates. Iran is still an outlier taking this information into account. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<i>Intro:</i></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Coronavirus (COVID-19) rates of infection outside of China have not applied to countries uniformly. As of 3/9/2020 Italy (9,172), South Korea (7,578), and Iran (7,161) have a disproportionate number of cases relative to other countries such as the US (605). Below is a histogram showing the distribution of cases in each country and it's clear it is right skewed and non-uniform. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFwFRrCU_6DIXRyFWey9XnZ8nw7K9p4HpEDmsFbJzM_Ox7PVObtbfxTZArNi3CqkfkKkzZqhrOOAtAJLJusmXxyRx8FpaMzIGueNka3OGTj7DkFEpiJWNcJgW8eLMlgY7e9RPAZIBc1WM/s1600/covid_19_hist.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="600" data-original-width="800" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFwFRrCU_6DIXRyFWey9XnZ8nw7K9p4HpEDmsFbJzM_Ox7PVObtbfxTZArNi3CqkfkKkzZqhrOOAtAJLJusmXxyRx8FpaMzIGueNka3OGTj7DkFEpiJWNcJgW8eLMlgY7e9RPAZIBc1WM/s640/covid_19_hist.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
What causes such unequal distribution of COVID-19 cases among countries? I assume some degree of 'connectives' between countries would be a correlated with these rates. In particular I assume an increase in imports from China will lead to more cases in the importing country. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
To investigate this I looked at data from <span style="background-color: white; color: #6a737d; font-family: , "consolas" , "liberation mono" , "menlo" , monospace; font-size: 12px; white-space: pre;">https://oec.world/en/resources/data/</span>. This includes bilateral trade data between countries and is broken down into hundreds of different categories of products. I'll look at a few things 1) are the outliers of Iran, Italy, and South Korea explained by trade with china? and 2) are some categories of traded products more correlated with rates of infection and 3) if so which products are more correlated?</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<i>1) Are Chinese Exports Correlated with COVID-19 Rates? </i></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Below is a plot of COVID-19 rates by total Chinese exports for each country in 2017 (the latest data available). One can see a fairly strong association between these two variables. However there are a few outliers. Notably South Korea, Italy, and Iran are still above expected along with smaller countries and territories like San Marino. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Running a random forest of log(COVID-19-rates)~log(total_chinese_exports) yields an out-of-bag (OOB) r^2 of .12. So while relationship appears to be highly correlated there are enough outliers to decrease the 'explained' variance in infection rates. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpUKyFyfjYQgNzAHN8okukfr9AG4-IxmLo11QAveliI83Jy8w1nH-GoHb6G2SQ3W_CGjNLS5B_tHuVi52sHajZ08pNZmy-6kLCHbastq-LEq5SbvDwlQiDUNLZrllfXrCEGCIGGqn-20s/s1600/covid_exports.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="900" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpUKyFyfjYQgNzAHN8okukfr9AG4-IxmLo11QAveliI83Jy8w1nH-GoHb6G2SQ3W_CGjNLS5B_tHuVi52sHajZ08pNZmy-6kLCHbastq-LEq5SbvDwlQiDUNLZrllfXrCEGCIGGqn-20s/s640/covid_exports.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both;">
<i>2) Are there product categories among Chinese Exports that are more correlated with COVID-19? </i></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
To test this I ran a random forest of log(COVID-19-rates) on all export amounts broken out by categories. This is a very wide data set with 97 countries (observations) and over 1200 categories (explanatory variables). Even this wide dataset produced an OOB r^2 of .49 meaning that it captured much of variance not captured by previous univariate model. </div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Below a scatterplot of COVID-19 rates by these OOB random forest predictions. San Marino does not look like a large outlier anymore but Italy and South Korea do. Iran looks like a much larger outlier. </div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWkki-qC7QmkWEWxRM8QlRiMe6yjxIC8LevMk4-BMQUXmhw7pKpPxLGthlPzwRYU9SIfToGImIdgImu48LN87lWNpJr1TLt-N16vmbAiKUR58KRHhHn9sX7GbaktsnHwd8T-HP-dnXCi0/s1600/covid19_preds.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWkki-qC7QmkWEWxRM8QlRiMe6yjxIC8LevMk4-BMQUXmhw7pKpPxLGthlPzwRYU9SIfToGImIdgImu48LN87lWNpJr1TLt-N16vmbAiKUR58KRHhHn9sX7GbaktsnHwd8T-HP-dnXCi0/s640/covid19_preds.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both;">
<i>3) Which product categories are more correlated with COVID-19? </i></div>
<div class="separator" style="clear: both;">
To answer this question I setup a model of same form as the random forest in 2) but used a lasso regression to apply variable selection. Below are the scaled coefficients kept by lasso regression. </div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnOM-fAI8wlY2ir_KSW7r3rEcDDYrBmWEeqNblAtm1wZhRD7MPa_LgdivszDNYbzVdkKZmCaGxlQdcMtuLJ4Ijl2GJ_h_MVGPmQbqo_rQkredBFGOGRywLGHN02REsi3gwSF6z9Due5JQ/s1600/coef_glmnet.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnOM-fAI8wlY2ir_KSW7r3rEcDDYrBmWEeqNblAtm1wZhRD7MPa_LgdivszDNYbzVdkKZmCaGxlQdcMtuLJ4Ijl2GJ_h_MVGPmQbqo_rQkredBFGOGRywLGHN02REsi3gwSF6z9Due5JQ/s640/coef_glmnet.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
One can see Chinese nickel powder and sunflower exports are more correlated with COVID-19 rates in importing country.<br />
<br />
I looked at these and couldn't really make a story behind it. For instance the 7th most important feature had to do with swords and bayonets. I have no idea what this means :).<br />
<br />
<div class="separator" style="clear: both;">
<i>Conclusion:</i></div>
It appears trade is highly correlated with COVID-19 rates. In addition the evidence suggests that some industries are more correlated with COVID-19 rates than others (do to increase in r^2 between 1) and 2) ).<br />
<br />
However, it's still not clear why countries like Iran have such high rates. Perhaps the data is stale since it was from 2017 or maybe Iran-Chinese trade is under reported in this dataset due to US sanctions.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://github.com/samcarlos/covid19_trade/blob/master/covid_trade.R">Github</a></div>
<br /></div>
samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com3tag:blogger.com,1999:blog-6922608948294168433.post-85381791133311457172020-01-01T15:32:00.000-08:002020-01-01T15:32:44.825-08:00What Were IRA Facebook Objectives in 2016 Election?<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div class="section level2" id="what-were-russian-facebook-objectives" style="background-color: white; box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px;">
<div style="box-sizing: border-box; margin-bottom: 10px;">
The Internet Research Agency (IRA), funded by friends of Russian Intelligence, used social media to try to influence the US 2016 election. They did so in an elaborate and systematic fashion. While the number of purchased ads and money spent on Facebook was small there were significant resources devoted to this endeavor as a whole. </div>
<div>
<br /></div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
It’s overall objectives have been to explicitly help the more non-traditional candidates in the 2016 presidential campaign (<a href="https://www.justice.gov/storage/report.pdf">p 23 of Mueller Report</a>) and, more broadly, to sow distrust in the American populace towards its institutions (<a href="https://www.justice.gov/storage/report.pdf">p 4 of Mueller Report</a>). It used a variety of tools such as bots, fake twitter accounts, and advertising on Facebook to do so.<br />
<br /></div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
However, it’s unclear what the IRA optimize when they made these Facebook Advertisement. Part of the issue is the difference between outputs and the outcomes of these campaigns (terminology taken from <a href="https://www.rand.org/content/dam/rand/pubs/research_reports/RR2700/RR2713/RAND_RR2713.pdf">Hostile Social Manipulation</a> from Rand). Outputs are the observable metrics that can be tied to a Facebook campaign (eg likes, impressions, etc) while outcomes are the desired changes in public opinion the advertisements are trying to change. Since the outcomes are unobservable they would have had to use the outcomes of these campaigns as proxies. What were their objectives while looking at these proxies?</div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
Looking into this is interesting for a couple reasons. The first is that learning about IRA objectives might tell us how to better combat these campaigns in the future. There is no reason to suggest the IRA or <a href="https://www.theguardian.com/technology/2017/nov/14/social-media-influence-election-countries-armies-of-opinion-shapers-manipulate-democracy-fake-news">other nations</a> will stop attempting to manipulate populations through social media so this problem will only get bigger so any research might help. Another reason is that, as a data scientist myself, I could learn something in how to advertise more effectively.</div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
This analysis will attempt to answer what particular objectives the IRA were looking to optimize with regards to the information they had available for Facebook ads; Clicks, Impressions, and Costs. I've found evidence that the IRA adapted it’s ad placement to be more cost effective in terms of click through rates suggesting they tried to optimize some sort of Clicks/Cost metric.</div>
</div>
<div class="section level2" id="section" style="background-color: white; box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px;">
<h2 style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 30px; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px;">
</h2>
<h2 style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 30px; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px;">
General Idea of Analysis</h2>
<div style="box-sizing: border-box; margin-bottom: 10px;">
The general idea is to think like a data scientist. If I were trying to optimize something I would look at the performance of previous campaigns and make future decisions according to my objectives. The decisions in this case are what kind of ads to deploy to which people. While I do have the text associated with each ad I will ignore that information for now and focus only on whom the ad targeted (Facebook allows a marketer to target based on just about any demo, interest, or behavior. Focusing on this should make the problem more tractable).</div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
I try to simulate this activity in two steps for a given time period.</div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
1 - The first is to select a period in time and build ridge regression’s on the five available metrics and interactions (Clicks, Costs, Impressions and Clicks/Costs, Impressions/Costs I added because I thought they'd be useful) using ad features (targets like 'users between ages of 18-65' or 'liked MLK') as explanatory variables. Each explanatory variable will therefore have 5 regression coefficients.</div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
2 - If they were updating ads based on previous information I’d expect to find some correlations between previous performances (estimated coefficients of step 1) and future decisions. Therefore I treat these regression coefficients as explanatory variables in a second step; regressing on number of times that feature occurred in ads in the subsequent period.</div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
An elaboration of this method and what it is trying to capture is in order. The IRA may explore different subsets of people to target ads to and adapt as they gain more information. They can see themselves what features are positively / negatively correlated with metrics, something we are trying to recreate in step one. The IRA would then make decisions on future ads. </div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
Suppose the IRA was interested in maximizing impressions without regards to costs or clicks. In the second step we would expect to see a positive relationship between features that had large positive coefficients for impressions but no relationship with coefficients for costs or clicks. Thats the theory anyways.</div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
I do not expect this to be the ‘true’ data generation process. All I’m trying to do is get features that can roughly capture the efficacy of ads targeting and future decision making. To some degree this is kind of hacky way of trying to do <a href="https://ai.stanford.edu/~ang/papers/icml00-irl.pdf">Inverse Reinforcement Learning</a>.</div>
</div>
<div class="section level2" id="data-and-eda" style="background-color: white; box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px;">
<h2 style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 30px; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px;">
Data And EDA</h2>
<div style="box-sizing: border-box; margin-bottom: 10px;">
The US government and Facebook found released ads that were purchased by the IRA. The data I used was found at <a href="https://russian-ira-facebook-ads.datasettes.com/">https://russian-ira-facebook-ads.datasettes.com/</a> and they cleaned up the metadata very nicely. However, only those ads that paid in Rubles (yes they didn't hide their tracks too much) had costs data. I subsetted data to those observations. In addition I focused on 2016 election and right after of dates between 2016-01-01 and 2017-02-01. This left with 1296 ads in the data set.</div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
Below is a pairs plot of all output metrics in log scale.</div>
</div>
<div class="section level2" id="facebook-targeting" style="background-color: white; box-sizing: border-box;">
<h2 style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 30px; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px;">
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDGVkQbF1pB6NJDSxlkq62QN4sr-uMWulHsJ2-m62ym9ZSfRi7F292pw_e3eirqcf5D7M85I_PXu9WIPLvkgGgvFcUtv2S3zs-bkqRX5yctTBP-OAq5-WjcmUXPBsfRmbVrJSLS62dwZI/s1600/pairs_plots_metrics.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="500" data-original-width="500" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDGVkQbF1pB6NJDSxlkq62QN4sr-uMWulHsJ2-m62ym9ZSfRi7F292pw_e3eirqcf5D7M85I_PXu9WIPLvkgGgvFcUtv2S3zs-bkqRX5yctTBP-OAq5-WjcmUXPBsfRmbVrJSLS62dwZI/s1600/pairs_plots_metrics.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Pairs Plot of Metrics</td></tr>
</tbody></table>
</h2>
<div class="separator" style="clear: both; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; text-align: center;">
<br /></div>
<div style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; text-align: left;">
</div>
<div class="separator" style="clear: both; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; text-align: center;">
<br /></div>
<div style="box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px;">
One thing to note is the frequency of ‘horizontal’ points for costs. Since These are clustered around integer values it is most likely due to ‘max spend’ limits facebooks allows purchases to do.</div>
<div style="box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px;">
The highest correlations are between Impressions and Clicks. Correlation between Impressions and Costs are also high most likely because IRA chose to be charged by Impressions and not Clicks which is another option.<br />
<br /></div>
<div style="box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px;">
For targeting data I used only those that have more than 10 observations and left with a 240 targets. Below is a plot of most common targeted data. </div>
<div style="box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px;">
<br /></div>
<div style="box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px;">
<br /></div>
<div style="box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5k45YzvM_E4hQhyYWk9gNeyQNjnTljYwIg4lg895ZFAowv36CfVgr9B5ufQf9DWTM5RYzNjz_erlbZp9L_B78fiBzNibWYkWvqoVN4wah1Wk45TkLprtI-O-FuvUQ_JbT8bEivq6cp_4/s1600/Counts_topics.png" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="600" data-original-width="500" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5k45YzvM_E4hQhyYWk9gNeyQNjnTljYwIg4lg895ZFAowv36CfVgr9B5ufQf9DWTM5RYzNjz_erlbZp9L_B78fiBzNibWYkWvqoVN4wah1Wk45TkLprtI-O-FuvUQ_JbT8bEivq6cp_4/s1600/Counts_topics.png" /></a></div>
<div style="box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px;">
<br /></div>
<div style="box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px;">
<br /></div>
<div style="box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px;">
<br /></div>
<div style="box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px;">
<br /></div>
<div style="box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin-bottom: 10px;">
After some generic ones (NewsFeed, Desktop, English) one can see they focused heavily on African Americans. In a <a href="https://scweiss.blogspot.com/2019/10/did-russia-use-manaforts-polling-data.html">previous blog</a> I mentioned how these really took off in summer / fall of 2016 right after Manafort gave Russians some as yet to be disclosed polling data (but thats another story).<br />
<br /></div>
</div>
<div class="section level1" id="section-1" style="background-color: white; box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px;">
<h1 style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 34px; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px;">
</h1>
<h2 style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 30px; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px;">
Results</h2>
<div>
For a particular date I looked at ads that were deployed between 28 days prior and up to that date for step 1) described above. I then look at the subsequent 7 days following that day and count number of times each topic has been deployed in an ad. I do this calculation for every week for dates between 2016-01-01 and 2017-02-01. There are 57 overall time periods and 240 features. Combined we have 13680 ‘observations’ of regression coefficients along with. The reasons why I chose a 28 day lookback for step 1) and 7 day look forward for step 2) was fairly arbitrary. I did try other dates and got largely similar results. </div>
<div>
<br /></div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
Below is what one time period coefficients look like for Costs and Clicks.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYfIy8ANrnrnUACmjkzt0N9qctFk1adkfrAkSJ1bBvKbq_SF_c9GgwiEGgH7auhm8-HvdBGOpmwBlS0iHQiU9YXwEDsDc1OnJcWMRlUBnvRzLtBNkSKC7Ez_DD6vUhIZEA3xRiePB1Des/s1600/example_plot_11_4.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1200" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYfIy8ANrnrnUACmjkzt0N9qctFk1adkfrAkSJ1bBvKbq_SF_c9GgwiEGgH7auhm8-HvdBGOpmwBlS0iHQiU9YXwEDsDc1OnJcWMRlUBnvRzLtBNkSKC7Ez_DD6vUhIZEA3xRiePB1Des/s640/example_plot_11_4.png" width="640" /></a></div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
<br /></div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
<br /></div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
This was during the week of the 2016 Election. Each point is a topic along with it’s estimate regression coefficient on each axis. The size is how many subsequent times that topic was named in the subsequent week. For example; targeting users with the "United States" was associated with more costs and more clicks and it was one of the commonly used target in subsequent 7 day period. Conversely the 'Pan Africanism' is associated with relatively low costs and clicks.<br />
<br />
I included an x=y line for clarity. One can see that most observations are above this line indicating that some sort of click per cost metric is important.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
We can see all time periods / coefficients in a pairs plot below.</div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqW_89zvyD1YtwqcnLW4m0zrHd9WJ2_2xen6ODpvgyuDHzLSTCUs6FRdPZnD0C9_CqiNhCsHzy3wgrqtZ_1Z8ysismIomTZY26s2XnUf473m9HJ4f2xARKdiVdo0TrI4ThM2CulhCsKYc/s1600/pairs_plots_coefs.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="1126" data-original-width="1166" height="617" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqW_89zvyD1YtwqcnLW4m0zrHd9WJ2_2xen6ODpvgyuDHzLSTCUs6FRdPZnD0C9_CqiNhCsHzy3wgrqtZ_1Z8ysismIomTZY26s2XnUf473m9HJ4f2xARKdiVdo0TrI4ThM2CulhCsKYc/s640/pairs_plots_coefs.png" width="640" /></a></div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
The the first five variables are the estimated coefficients for all targets for all time periods. The final column is each coefficients following weeks number of occurrences. The highest correlation among estimated features is between Costs and Impressions adding further evidence that they are charged by impressions and not clicks. </div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
We also see that Costs and impressions are negatively correlated with counts while clicks are positively related. I take this to mean that IRA was interested in maximizing its non paying metric of clicks while minimizing costs of and subsequently impressions. Finally, the clicks/costs metric is slightly more correlated with counts that impressions/ costs topics.</div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
For these reasons I ran a regression of log(counts+1) (l Iogged due to skewness in data) on costs, clicks. and clicks/costs while dropping impressions features. I did so because there is too much collinearity between impressions and costs and I think they tracked the same thing.<br />
<br />
Below is a regression output of those features with time dummy features and the number of times the topic was targeted during current time period (time features excluded from output due to length).</div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
<br /></div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
<br class="Apple-interchange-newline" /></div>
<table class="table table-striped table-hover table-condensed table-responsive" style="background-color: transparent; border-collapse: collapse; border-spacing: 0px; box-sizing: border-box; caret-color: rgb(51, 51, 51); color: #333333; font-size: 14px; margin-bottom: 20px; margin-left: auto; margin-right: auto; max-width: 100%; min-height: 0.01%; overflow-x: auto; text-size-adjust: auto; width: auto !important;"><tbody style="box-sizing: border-box;">
<tr style="background-color: #f9f9f9; box-sizing: border-box;"><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; font-weight: bold; line-height: 1.42857; padding: 5px; vertical-align: top;">Observations</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">13680</td></tr>
<tr style="box-sizing: border-box;"><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; font-weight: bold; line-height: 1.42857; padding: 5px; vertical-align: top;"><br />
<table class="table table-striped table-hover table-condensed table-responsive" style="background-color: transparent; border-collapse: collapse; border-spacing: 0px; box-sizing: border-box; color: #333333; font-size: 14px; margin-bottom: 20px; margin-left: auto; margin-right: auto; max-width: 100%; min-height: 0.01%; overflow-x: auto; text-size-adjust: auto; width: auto !important;"><thead style="background-color: transparent; box-sizing: border-box;">
<tr style="box-sizing: border-box;"><th style="border-bottom: 2px solid rgb(221, 221, 221); border-top-width: 0px; box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: left; vertical-align: bottom;"></th><th style="border-bottom: 2px solid rgb(221, 221, 221); border-top-width: 0px; box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: bottom;">Est.</th><th style="border-bottom: 2px solid rgb(221, 221, 221); border-top-width: 0px; box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: bottom;">S.E.</th><th style="border-bottom: 2px solid rgb(221, 221, 221); border-top-width: 0px; box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: bottom;">t val.</th><th style="border-bottom: 2px solid rgb(221, 221, 221); border-top-width: 0px; box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: bottom;">p</th></tr>
</thead><tbody style="background-color: transparent; box-sizing: border-box;">
<tr style="background-color: #f9f9f9; box-sizing: border-box;"><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; font-weight: bold; line-height: 1.42857; padding: 5px; vertical-align: top;">(Intercept)</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">-0.26</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">0.05</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">-5.35</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">0.00</td></tr>
<tr style="box-sizing: border-box;"><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; font-weight: bold; line-height: 1.42857; padding: 5px; vertical-align: top;">scale(coefs_costs)</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">-0.08</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">0.02</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">-3.46</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">0.00</td></tr>
<tr style="background-color: #f9f9f9; box-sizing: border-box;"><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; font-weight: bold; line-height: 1.42857; padding: 5px; vertical-align: top;">scale(coefs_clicks)</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">0.08</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">0.02</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">3.19</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">0.00</td></tr>
<tr style="box-sizing: border-box;"><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; font-weight: bold; line-height: 1.42857; padding: 5px; vertical-align: top;">scale(coefs_clicks_cost)</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">0.02</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">0.02</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">1.06</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">0.29</td></tr>
<tr style="background-color: #f9f9f9; box-sizing: border-box;"><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; font-weight: bold; line-height: 1.42857; padding: 5px; vertical-align: top;">scale(log(counts_topics_current + 1))</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">0.64</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">0.01</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">99.51</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;">0.00</td></tr>
<tr style="box-sizing: border-box;"><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; font-weight: bold; line-height: 1.42857; padding: 5px; vertical-align: top;">*removed Date Dummies for readability</td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;"></td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;"></td><td style="border-top: 1px solid rgb(221, 221, 221); box-sizing: border-box; line-height: 1.42857; padding: 5px; text-align: right; vertical-align: top;"></td></tr>
</tbody></table>
</td></tr>
</tbody></table>
<div style="box-sizing: border-box; margin-bottom: 10px;">
<anonymous style="box-sizing: border-box;">As expected there is a negative relationship with regards to costs but a positive one with regards to clicks and both are stat sig.</anonymous></div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
<anonymous style="box-sizing: border-box;">To further look into this relationship I built a random forest model with same features as above (but not clicks / costs since the model should be able to make that interaction). To see if these estimated coefficients actually 'add' anything I build two random forests; one with only date and current counts and one with those features in addition to costs and click coefficients. The second model increases out of sample % var explained by ~ 1.2% and explains ~57.7% of variance. So the added predictability is small but there!</anonymous></div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
<anonymous style="box-sizing: border-box;">Below is a partial dependence plot of costs and clicks coefficient explanatory variables.</anonymous><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge3tzSxWKTIauTk5ibBG0dicWooQ5VlQcBHHv4dJm0KOwGUnRxXw8wxf31qYp9-l3B6aV2w_wyJohbDU7PlTSvPL8cMjUXfNH9IY85rRX_-tLkoO42MdalbH6hSdIkDOGr1y9dNtaT-a0/s1600/pdp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="600" data-original-width="600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge3tzSxWKTIauTk5ibBG0dicWooQ5VlQcBHHv4dJm0KOwGUnRxXw8wxf31qYp9-l3B6aV2w_wyJohbDU7PlTSvPL8cMjUXfNH9IY85rRX_-tLkoO42MdalbH6hSdIkDOGr1y9dNtaT-a0/s1600/pdp.png" /></a></div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
This shows that the IRA was focused on minimizing costs while maximizing clicks and is in broad agreement to regression output printed above. </div>
</div>
<div class="section level1" id="clonclusions" style="background-color: white; box-sizing: border-box; color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px;">
<h1 style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 34px; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px;">
</h1>
<h1 style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 34px; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px;">
Conclusions</h1>
<div>
<br /></div>
<div>
Overall it appears that IRA did try to maximize clicks on Facebook ads while minimizing costs. I've described these results to some friends and got the response 'well yea ok - that makes sense'. It's not a very surprising result.. it's almost banal. But it does underscores the fact they're using similar techniques as I might for helping a business... its just they're trying to f*** with my country.</div>
<div>
<br /></div>
<div>
This did not answer whether the IRA changed public opinion or had defining influence and 'hacked' the 2016 election. I don't think there is enough public information to answer that question. (side rant: I bet Facebook could come up with a decent analysis of that. They know who saw the ads / posts of IRA and know similar people who didn't see ads and where they probably voted. Couldn't Facebook could look at precinct level results and do some sort of ecological inference?)</div>
<div>
<br /></div>
<div>
But even if they didn't hack the election it seems like they did some decent analysis on Facebook ads that goes above and beyond what Facebook gives to its ad purchasers. Facebook does not give performance indicators on a target level basis. But the evidence presented here suggests they did some decent analysis on target level attributes. They might have hacked Facebook and that <a href="https://scweiss.blogspot.com/2020/01/hacking-facebook-targeted-ads.html">gave me an idea</a>.<br />
<br />
<a href="https://github.com/samcarlos/IRA_Facebook_objectives">github code</a></div>
<div>
<br /></div>
</div>
</div>
samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com0tag:blogger.com,1999:blog-6922608948294168433.post-7033393242502828202020-01-01T15:11:00.003-08:002020-01-01T15:33:57.152-08:00Hacking Facebook Targeted Ads<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="font-family: "helvetica neue"; font-stretch: normal; line-height: normal;">
<div style="font-stretch: normal; line-height: normal;">
<span style="-webkit-font-kerning: none; font-size: xx-small;">Facebook's Ad Targeting allows advertisers to pinpoint who they want to target their ads to. These targets can be very specific and have been useful in business and political campaigns. However Facebook does not give data on which targets were most effective. After doing some <a href="https://scweiss.blogspot.com/2019/12/what-were-ira-facebook-objectives-in.html">research on Russian Facebook Ads</a> that used this feature I think one can 'hack' this it to build ones own model and optimize who should see the ad. </span><br />
<br />
<span style="font-size: xx-small;">The general idea is that one can create a dataset by randomly selecting different demographics / interests and randomly assigning the message. With this one can build kind of an ecological (since we don't se user level response, just aggregates) - uplift model and target to people with more control than Facebook might give you. I've written about uplift modeling <a href="https://medium.com/building-ibotta/estimating-and-visualizing-business-tradeoffs-in-uplift-models-80ff845a5698">here</a> and <a href="https://medium.com/building-ibotta/erupt-expected-response-under-proposed-treatments-ff7dd45c84b4">here</a> before and those techniques can be applied to this as well. </span></div>
</div>
<div style="font-family: "helvetica neue"; font-stretch: normal; line-height: normal; min-height: 13.1px;">
<span style="font-size: xx-small;"><span style="-webkit-font-kerning: none;"></span><br /></span>
<span style="font-size: xx-small;">For example, suppose you have two different advertisements to give to people but you are unsure which people should see which ad. One can randomly pick demographics, likes or interests and assign one of the two ads. Repeating this over many times will yield a dataset with performance metrics of each ad (costs, clicks, impressions) along with the targeted demos, and the ad assigned. Then one can build models on each metric on the ad and demos/like features to predict counterfactuals on which ad to assign a particular group.</span><br />
<span style="font-size: xx-small;"><br /></span></div>
<div style="font-family: "helvetica neue"; font-stretch: normal; line-height: normal;">
<span style="-webkit-font-kerning: none; font-size: xx-small;">This has 3 potential benefits</span></div>
<div style="font-family: "helvetica neue"; font-stretch: normal; line-height: normal; min-height: 13.1px;">
<span style="font-size: xx-small;"><span style="-webkit-font-kerning: none;"></span><br /></span></div>
<div style="font-family: "helvetica neue"; font-stretch: normal; line-height: normal;">
<span style="-webkit-font-kerning: none; font-size: xx-small;">1) The first is that you may get better performance in some regards than facebook. This seems somewhat unlikely because Facebook is known to have good data. But it is a possibility.</span></div>
<div style="font-family: "helvetica neue"; font-stretch: normal; line-height: normal; min-height: 13.1px;">
<span style="font-size: xx-small;"><span style="-webkit-font-kerning: none;"></span><br /></span></div>
<div style="font-family: "helvetica neue"; font-stretch: normal; line-height: normal;">
<span style="-webkit-font-kerning: none; font-size: xx-small;">2) The second is that you may be more efficient in ad expenditures than facebooks algorithm. This seems more plausible since we don’t know what facebook algorithm does under the hood and it seems likely to they bias it for their own profits, not yours.</span></div>
<div style="font-family: "helvetica neue"; font-stretch: normal; line-height: normal; min-height: 13.1px;">
<span style="font-size: xx-small;"><span style="-webkit-font-kerning: none;"></span><br /></span></div>
<div style="font-family: "helvetica neue"; font-stretch: normal; line-height: normal;">
<span style="-webkit-font-kerning: none; font-size: xx-small;"><span style="white-space: pre;">3) </span>Finally, One thing that the advertiser will most certainly get is knowledge on which demographics or targets are most susceptible to a particular kind of ad. This can be helpful for a number of reasons. As stated before facebook does not give much data on demographics that are susceptible to it. This can be used to target demo / interests outside of the Facebook platform.</span><br />
<span style="-webkit-font-kerning: none; font-size: xx-small;"><br /></span>
<br />
<span style="font-size: xx-small;">One would have to run a lot of experiments but companies and political campaigns do that. <a href="https://www.nytimes.com/2019/12/29/us/politics/michael-bloomberg-trump-advertising.html">Bloomberg reportedly</a> runs experiments on 160 campaigns and spends millions of dollars on digital advertisement. I wonder if they try anything like this...</span></div>
</div>
samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com0tag:blogger.com,1999:blog-6922608948294168433.post-42711924604900990792019-10-13T13:24:00.001-07:002019-10-13T13:28:16.370-07:00Did Russia Use Manafort's Polling Data in 2016 Election?<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<b>Introduction:</b><br />
<br />
On August 2, 2016 then Trump campaign manager, <a href="https://en.wikipedia.org/wiki/Paul_Manafort">Paul Manafort</a>, gave polling data to <a href="https://en.wikipedia.org/wiki/Konstantin_Kilimnik">Konstantin Kalimnik</a> a Russian widely assumed to be a spy. Before then Manafort ordered his protege, Rick Gates, to share polling data with Kilmnik. Gates periodically did so starting April or May. The Mueller Report stated it did not know why Manafort was insistent on giving this information or whether the Russian's used it to further Trump's cause (<a href="https://www.justice.gov/storage/report.pdf">p. 130</a> see here for my summary of <a href="https://scweiss.blogspot.com/2019/08/mueller-report-volume-1-network-analysis.html">Mueller Report V1</a>).<br />
<br />
One theory says that Manafort wanted to show the good work he was doing to Kilimnik's boss, a Russian Oligarch named Deripiskia, whom Manafort <a href="https://www.businessinsider.com/paul-manafort-ukraine-debt-trump-campaign-unpaid-volunteer-2018-2">owed money</a> to. A more sinister hypothesis is that Manafort knew that the information would be valuable in the hands of Russian's trying to interfere with the election.<br />
<br />
This post will analyze whether the Russians used the polling data irrespective of Manafort's intent. I looked at Russian Facebook Ads uncovered by <a href="https://intelligence.house.gov/social-media-content/social-media-advertisements.htm">House Intelligence Committee</a> and tried to identify any changes in messaging after August 2nd. I conclude with a guess on what the polling data was shared.<br />
<br />
<b>Russian Facebook Data:</b><br />
<b><br /></b>
The House Intelligence Committee released thousands of Russian Advertisements by the <a href="https://en.wikipedia.org/wiki/Internet_Research_Agency">Internet Research Agency</a>. There have been several analysis on these advertisements that discuss they're effectiveness and one good one is by <a href="https://arxiv.org/pdf/1810.10033.pdf">Spangher et al</a>. However, I couldn't find any that showed topics of advertisements over time.<br />
<br />
I focused the analysis to data in 2016 which includes periods of Manafort coming into the position of campaign manager and the election itself in november. Overall there 1858 facebook Ads captured in this dataset. Below is a time series plot of number of Advertisements per day for 2016.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFY_MGqBwekcWhyphenhyphen5YgCgs6PQRD9XCmdqK9Kp8oBt5N0ob2Mt1G7DhVVYAsNsMkGQki9sPco5fMkfsFP5z96EcVovDMW2AGGqjEHfsddv2p_vQY-nW95FKSnriJTsM9w-ShoORTwLEiC_c/s1600/Rplot02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFY_MGqBwekcWhyphenhyphen5YgCgs6PQRD9XCmdqK9Kp8oBt5N0ob2Mt1G7DhVVYAsNsMkGQki9sPco5fMkfsFP5z96EcVovDMW2AGGqjEHfsddv2p_vQY-nW95FKSnriJTsM9w-ShoORTwLEiC_c/s1600/Rplot02.png" /></a></div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsuef6SFC9eB8x3nZBsfxEhXloX7UkrihzTXPBPV2ReNmHcKPKc2RDbA8xxhFB-bX-5tzxwNM3p4HkzjhZgiJXpQ_qhPE4cVB8aLVx95L7C0F7HNgCfyxwvlWsh10OGjPdsIbci8i-YWQ/s1600/Rplot011.png" imageanchor="1"></a>There are periods of high activity in May / June and in October right before the election.<br />
<br />
<b>Change After August 2nd?</b><br />
<br />
Each advertisement has metadata and text associated with it including: date, text, target population, etc. To see if there were any changes through time and in particular august 2nd I tried some topic modeling and text clustering to see if there were any natural changes. I couldn't find any changes or trends using an unsupervised approach.<br />
<br />
Instead I built a predictive model with the response being a binary variable; before / after august 2nd and explanatory variables as text features from each ad (over 1200 words). I then performed variable importance on these words to see which were most predictive. Below I plotted the number of adverts with the important words divided by numer of advertisements for a particular day to get a normalized percentage.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixLeYstOeGCAx-Ow2dr4MY1nYfCBEO-g85_OQqflMoPa7z1o4z2kXOD9ZtWp-EnUwsukzEqgYEIOlV8eJXUYUSZ6w6TNPYj3OsVhrJ4PJEDQg_0RzG0CAGQw5o3p5yXxtHGXsB1PFy4fA/s1600/Rplot07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixLeYstOeGCAx-Ow2dr4MY1nYfCBEO-g85_OQqflMoPa7z1o4z2kXOD9ZtWp-EnUwsukzEqgYEIOlV8eJXUYUSZ6w6TNPYj3OsVhrJ4PJEDQg_0RzG0CAGQw5o3p5yXxtHGXsB1PFy4fA/s1600/Rplot07.png" /></a></div>
<br />
The blue line is when Manafort made contact with Kilimnik initially and the red line is the august 2nd meeting. There does appear to be large increases in the words associated with African American civil rights topics after 8/2. Specifically these words were not in the advertisements texts themselves but were in the ‘people who liked’ description. That is, if you liked ‘Martin Luther King’ on your profile then a particular ad would target you.<br />
<br />
Another way to look at this information is to see the proportion of these words used before and after 8/2.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdR9zo5KjARD65QC4yebFZFP_-_19DOvTNmFfStoMc1P_70HtpIYHolKkGOwP_s_Xl7cZEBfwWB0eLpehImhC2c_BpwsIYi6klnMFXnYTnXXAbpz4PnG0OmdqQ3WlPQWM6-J09aDndfX0/s1600/Rplot08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdR9zo5KjARD65QC4yebFZFP_-_19DOvTNmFfStoMc1P_70HtpIYHolKkGOwP_s_Xl7cZEBfwWB0eLpehImhC2c_BpwsIYi6klnMFXnYTnXXAbpz4PnG0OmdqQ3WlPQWM6-J09aDndfX0/s1600/Rplot08.png" /></a></div>
<br />
<br />
The above plot shows the number of times a word appeared before and after 8/2 and the P(date>8/2) | word). For instance the word 1954, signifying the beginning of civil rights, occured 4 times before and 376 times after 8/2 which means that just under 99% of times it appears happen after that. This suggests there was a change in the IRA advertisements where they focused more on targeting people that were interested African American civil rights issues.<br />
<br />
<b>Conclusions / Discussions</b><br />
<br />
I’m guessing that the contents of the polling data would be something related to African Americans and how those that have an interest in civil rights movement are more susceptible to negative ads.<br />
<br />
Do I think the evidence presented here is that strong enough to believe the Russians used polling data? Meh, not really. For few reasons:<br />
<br />
<ul style="text-align: left;">
<li>All words found here were used a few times before the 8/2</li>
<li>Gates gave information on a continuous basis. If Russians used this data I assume they would incorporate it accordingly and there would not be a discrete change at 8/2</li>
<li>I only did this for one date. Perhaps if I did this analysis for an arbitrary dates then I would find other words that were associated with other dates</li>
</ul>
<div>
I’m not saying that they didn’t use the polling data but I don’t think the evidence here is strong enough to say that they did. At a minimum I think that the IRA and Russians adapted Ads to target different populations at different points in time. This shows they are sophisticated and probably learn from previous results. </div>
<div>
<br /></div>
<div>
<br /></div>
<br />
<a href="https://github.com/samcarlos/russia_fb_2016">Code</a><br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
</div>
samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com9tag:blogger.com,1999:blog-6922608948294168433.post-70351032584586468202019-08-18T17:46:00.000-07:002019-08-18T17:46:10.398-07:00Mueller Report Volume 1: Network Analysis<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="chunk" style="background-color: white; border-bottom: 1px solid rgb(204, 204, 204); color: #333333; font-family: "Lucida Grande", Tahoma, sans-serif; font-size: 14px; margin: 20px 0px 0px; padding: 0px 0px 10px;">
<div dir="ltr" trbidi="on">
<br /><main class="content" role="main"></main>
<article class="article"><div class="article-content">
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRVF2tkWYmGTNK7It_-H7jL_xnVPKFjgThbmyPtw4ey6pdsUz93OkeNWYDwuDZVgHz7tqYSfwL8v3tC7XEAvAEUUKhyphenhyphenTMuy7FhHUJMDyxBDmL4y-Z_ui-LuTRZkl30JWcZuYgP0MjP7i0/s1600/35aykq.jpg" imageanchor="1" style="color: #336699; margin-left: auto; margin-right: auto; padding: 0px 1px;"><img border="0" data-original-height="433" data-original-width="577" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRVF2tkWYmGTNK7It_-H7jL_xnVPKFjgThbmyPtw4ey6pdsUz93OkeNWYDwuDZVgHz7tqYSfwL8v3tC7XEAvAEUUKhyphenhyphenTMuy7FhHUJMDyxBDmL4y-Z_ui-LuTRZkl30JWcZuYgP0MjP7i0/s640/35aykq.jpg" style="height: auto; max-width: 100%;" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><div style="color: #333333; font-size: 14px; text-align: left;">
settle down and have another cup of coffee</div>
<div>
<br /></div>
</td></tr>
</tbody></table>
<div>
<a href="https://github.com/samcarlos/mueller_report" style="color: #336699; padding: 0px 1px;">code</a></div>
<div class="section level1">
<h1>
TLDR</h1>
<div>
There are a lot of Russian’s talking to a lot of Trump campaign members in Mueller report. There are so many it’s tough to get your head around it all. In this post I attempted some network analysis on the relations between campaign officials and Russians. I found that one can ‘compress’ Russian involvement into 9 (mostly) distinct groups. I then summarize these points of contacts.</div>
</div>
<div class="section level1">
<h1>
Introduction to Mueller Report</h1>
<div>
Volume 1 of Mueller Report starts with Russian interference in 2016 US Presidential Elections. Russia did so in two Ways.<br />
<br /></div>
<div>
The first was a campaign by the IRA that used social media tools like facebook and twitter with the goal of changing public opinion. While there were some retweets by Trump and his campaign officials from these accounts there wasn’t much direct communication.<br />
<br /></div>
<div>
The second form was to use Russian intelligence to hack Hillary Clinton's emails. These hacked emails were released with help of wikileaks and guccifer 2.0. Trump’s campaign deliberately tried to find other hacked emails and encourages Russia to do so public. However, the campaign could not find additional information on these emails.<br />
<br /></div>
<div>
The rest of Volume 1 discusses the numerous relationship between trump campaign officials and Russians. It’s this part that will be the basis for most of the results below.</div>
</div>
<div class="section level1">
<h1>
The data</h1>
<div>
Volume 1 consists of 199 pages including foot-notes and appendices. I found a machine readable version <a href="https://www.kaggle.com/paultimothymooney/mueller-report" style="color: #336699; padding: 0px 1px;">here</a>. I split the text into sentences and looked at whether a person’s name was included in that sentence. This left me with a sentence by name matrix that is the starting point of my analysis. There are some drawbacks to this in that OCR does not immediately distinguish sentences. In addition it often groups footnotes with last line of sentences in a page. But it seemed like a good starting point so went ahead.<br />
<br /></div>
<div>
Below are the top 20 most common occurring names. <img height="640" src="https://samcarlos.netlify.com/post/2019-07-20-mueller-report-volume-1-a-network-analysis_files/figure-html/freqplot-1.png" style="height: auto; max-width: 100%;" width="640" /><br />
<br /></div>
<div>
Papadopulos, Manafort, Kushner, Cohen, Trump JR, and Flynn are all in the top. Considering they were all, to varying degrees, worked in the Trump campaign this makes sense. We also see some Russian names such as Dmitriev, Kilimnik, and Kislyak. I’ll explain their contacts below.</div>
<div>
I then created a person x person matrix that counted the number of times a name co-occurs with another. I’m treating this as a weighted, undirected graph. I transformed this to a laplacian matrix and performed an eigen decomposition. This is known as a spectral analysis of a network. Basically this tries to find locations that minimizes the square error of the relations. Below is the resulting image of 2nd to last and 3rd to last eigenvectors.<br />
<br /></div>
<div>
<img height="640" src="https://samcarlos.netlify.com/post/2019-07-20-mueller-report-volume-1-a-network-analysis_files/figure-html/allnetwork-1.png" style="height: auto; max-width: 100%;" width="640" /></div>
<div>
WHOA … I’m getting a headache looking at this.<br />
<br /></div>
<div>
But it definitely looks like there is structure in the graph. There appears to be some clusters forming and these do correspond to particular events described in the report. In the lower left you can see Papadopoulos related characters, in the upper right some cohen acquaintances, and around 0,.1 there’s the trump tower meeting. Not bad but still messy. I’m looking for distinct clusters.<br />
<br /></div>
<div>
What if we look at only the Russians in the graph?<br />
<br /></div>
<div>
<img height="640" src="https://samcarlos.netlify.com/post/2019-07-20-mueller-report-volume-1-a-network-analysis_files/figure-html/russian_network-1.png" style="height: auto; max-width: 100%;" width="640" /></div>
<div>
Ok! Now we’re talking. There are 6 distinct clusters of Russians here. That means there are no relations between these clusters and each correspond to a unique set of relations with trump campaign officials. I played around with this some more but the text data was too messy to have robust analysis. Co-occurring names do not pick up everything and due to sentence parsing errors somethings lead to erroneous relations.<br />
<br /></div>
<div>
Finally, I gave up on trying to only use text analysis, read volume one, and manually created a network found here. With that I created groupings using the above chart as a starting point. I found 9 fairly distinct clusters of Russians. Below you can see the relationships between those groups and various members of the Trump campaign.<br />
<br /></div>
<div>
<img src="https://samcarlos.netlify.com/post/2019-07-20-mueller-report-volume-1-a-network-analysis_files/figure-html/slope_plot-1.png" style="height: auto; max-width: 100%;" width="672" /></div>
<div>
<br />
I then further grouped them into 4 broad categories which I’ve named; Trump Business, The Opportunists, The Professionals, and Russian Officials and Lackeys. I also included whether a trump campaign officials interaction was of first degree (they were in meeting or talked explicitly with Russian Group in question) or second degree (they were aware of meeting). Below are my summaries for each.<br />
<br /></div>
</div>
<div class="section level1">
<h1>
Trump Business</h1>
<div>
<img height="640" src="https://samcarlos.netlify.com/post/2019-07-20-mueller-report-volume-1-a-network-analysis_files/figure-html/business-1.png" style="height: auto; max-width: 100%;" width="640" /></div>
<ul style="margin: 10px 0px 10px 20px; padding: 0px 0px 0px 15px;">
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;"><span style="background-color: #ffffcc;">Group 1</span><ul style="margin: 10px 0px 10px 20px; padding: 0px 0px 0px 15px;">
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;">agalarov, aras, goldstone, samochornov, veselnitskaya, kaveladze, akhmetshin</li>
</ul>
</li>
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;"><span style="background-color: #ffffcc;">Group 2</span><ul style="margin: 10px 0px 10px 20px; padding: 0px 0px 0px 15px;">
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;">klokov, erchova</li>
</ul>
</li>
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;"><span style="background-color: #ffffcc;">Group 3</span><ul style="margin: 10px 0px 10px 20px; padding: 0px 0px 0px 15px;">
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;">rtskhiladze, rozov</li>
</ul>
</li>
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;"><span style="background-color: #ffffcc;">Group 5</span><ul style="margin: 10px 0px 10px 20px; padding: 0px 0px 0px 15px;">
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;">peskov</li>
</ul>
</li>
</ul>
<div>
Aras Agalorov (he has a son Emin. I did not disambiguate the difference between them) is a billionaire Russian Property Developer that worked with trump to create Miss Universe Pageant in 2013. They Discussed creating a Trump tower in moscow in late 2013 and discussed with Donald Trump JR (DTJ) and Ivanka Trump but did not progress.<br />
<br /></div>
<div>
In Summer of 2015 Group 3 signed a letter of intent to build the trump tower in moscow and met with Ivanka and DTJ.<br />
<br /></div>
<div>
While this was happening Group 2 contacted cohen to discuss Trump tower in moscow and a meeting with Trump. Cohen thought this person was a pro-wrestler but that did not seem to bother and agreed to talk about business. They wanted to set up a meeting with Trump and Putin but Cohen wanted to keep clear of politics and it went nowhere.<br />
<br /></div>
<div>
Finally, due to the slowness of progress in Trump Tower Moscow deal from Group 2 cohen reached out to Peskov, Press Secretary for Putin, to try and get in touch with Putin directly and begin building. Cohen worked on moscow deal through summer of 2016 but it went nowhere.</div>
<div>
During campaign the Emin Agalorov, at the behest of his father, setup a meeting with DJT to discuss hacked emails. This lead to the infamous Trump Tower meeting that involved DJT, Kushner, and Manafort and other Russians in Group 1. DJT discussed this meeting with others in the campaign as well including Gates. Kushner showed up late to the meeting and texted manafort during that this was a ‘waste of time’ and texted others to call him to get out and he subsequently left early. The meeting did not provide any information to Trump campaign.<br />
<br /></div>
</div>
<div class="section level1">
<h1>
The Oppurtunists</h1>
<div>
<img height="640" src="https://samcarlos.netlify.com/post/2019-07-20-mueller-report-volume-1-a-network-analysis_files/figure-html/oppurtunists-1.png" style="height: auto; max-width: 100%;" width="640" /></div>
<ul style="margin: 10px 0px 10px 20px; padding: 0px 0px 0px 15px;">
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;"><span style="background-color: #ffffcc;">Group 4</span><ul style="margin: 10px 0px 10px 20px; padding: 0px 0px 0px 15px;">
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;">mifsud, polonskaya, timofeev, millian</li>
</ul>
</li>
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;"><span style="background-color: #ffffcc;">Group 5</span><ul style="margin: 10px 0px 10px 20px; padding: 0px 0px 0px 15px;">
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;">klimentov, poliakova, peskov, dvorkovich</li>
</ul>
</li>
</ul>
<div>
Papadoplous and Page had similar experiences with the Trump campaign and they both seemed to be in it for the opportunity it presented themselves. Both padded his resume to look more important than he was to get the job and both foreign policy advisory roles.<br />
<br /></div>
<div>
Papadoplous got the job of foreign policy advisor in march 2016. He met Mifsud, a Maltese Professor, in Rome at a meeting for London Centre of International Law Practice shortly after. Upon learning that Papadoplous was employed by campaign Mifsud took interest and spoke of his Russian connections. Papadopolous, thinking that having more russian connections could help his stature in the Trump Campaign, pursued this relationship. They met the following week in London where Mifsud introduced him to Polonskaya. Papadopolous relayed his new contacts with Clovis and received an approving response. This relationship continued and Mifsud said Russia had ‘dirt’ on Clinton during a meeting in late April. Ten days later he told a foreign official about his contacts and knowledge of dirt on Clinton. He then discussed a Trump meeting with Putin to Lewandowski, Miller, and Manafort. Manafort made clear that Trump should not meet with Putin directly.<br />
<br /></div>
<div>
Page also joined the campaign in march 2016 as a foreign policy advisor. He had previously lived and worked in Russia and had several Russian contacts. He was invited to talk to the New Economic School in Russia in July and asked for permission. Clovis responded that if he went he could not speak for Trump Campaign. His talk was critical of US policy towards Russia and was received welcomingly from Russian Deputy Prime Minister and others. After he met Kislyak in July in Cleveland. These activities drew the attention of the media and was removed from campaign in late september.<br />
<br /></div>
<div>
After Election Page went to Russia in an unofficial role after the election in late 2016. He again met with Russians in Group 5.</div>
</div>
<div class="section level1">
<h1>
The Professionals</h1>
<div>
<img height="640" src="https://samcarlos.netlify.com/post/2019-07-20-mueller-report-volume-1-a-network-analysis_files/figure-html/profs-1.png" style="height: auto; max-width: 100%;" width="640" /></div>
<ul style="margin: 10px 0px 10px 20px; padding: 0px 0px 0px 15px;">
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;"><span style="background-color: #ffffcc;">Group 6</span><ul style="margin: 10px 0px 10px 20px; padding: 0px 0px 0px 15px;">
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;">oknyansky, rasin</li>
</ul>
</li>
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;"><span style="background-color: #ffffcc;">Group 7</span><ul style="margin: 10px 0px 10px 20px; padding: 0px 0px 0px 15px;">
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;">kilimnik, deripaska, boyarkin, oganov</li>
</ul>
</li>
</ul>
<div>
Paul Manfort and Roger Stone are political consultants and previously worked together. Roger Stone worked alongside the campaign to help but was never officially apart of the campaign. Manafort joined in March 2016 and was the chairman between June and August.<br />
<br /></div>
<div>
Caputo set up a meeting Stone with Group 6, Oknyansky and Rasin, to get dirt on Clinton in May 2016. Rasin claimed to have information on money laundering activities by Clinton. Stone refused the offer because they asked for too much money.<br />
<br /></div>
<div>
Also, Stone had some contact with the twitter account Guccifer 2.0 (not shown above). This was the front used by the GRU to release stolen documents. Curiously, his name was redacted on page 45 in the Mueller report because of ‘Harm to ongoing matter’. Seems a little weird to redact something when it’s <a href="https://www.justsecurity.org/45435/timeline-roger-stone-russias-guccifer-2-0-wikileaks/" style="color: #336699; padding: 0px 1px;">public information</a>.<br />
<br /></div>
<div>
From March 2016 until his depart Manafort gave and ordered Gates to give campaign updates to Kilimnik. Kilimnik is thought to be a Russian spy and has connections with Deripaska, a Russian billionaire who Manafort owed money to. Manafort gave polling data on the Trump campaign and met with Kilimnik twice in person; once in May and then again in August. It’s not clear why Manafort gave this data to Kilimnik although Gates thought it was to ingratiate himself to Deripaska. Deripaska and his deputy Boyarkin were subsequently sanctioned by the US Treasury.</div>
</div>
<div class="section level1">
<h1>
Russian Officials and Lackeys</h1>
<div>
<img height="640" src="https://samcarlos.netlify.com/post/2019-07-20-mueller-report-volume-1-a-network-analysis_files/figure-html/officials-1.png" style="height: auto; max-width: 100%;" width="640" /></div>
<ul style="margin: 10px 0px 10px 20px; padding: 0px 0px 0px 15px;">
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;"><span style="background-color: #ffffcc;">Group 8</span><ul style="margin: 10px 0px 10px 20px; padding: 0px 0px 0px 15px;">
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;">kislyak, gorkov</li>
</ul>
</li>
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;"><span style="background-color: #ffffcc;">Group 9</span><ul style="margin: 10px 0px 10px 20px; padding: 0px 0px 0px 15px;">
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;">aven, dmitriev</li>
</ul>
</li>
</ul>
<div>
The final groups deal with Russian Officials and and Putin’s Billionaires.</div>
<div>
Sessions and Kushner met with Kislyak, the Russian Ambassador to the US, first in April at a Trump Foreign Policy Conference. These were brief handshake affairs that lasted about a couple of minutes. Sessions does not recall seeing Kislyak.<br />
<br /></div>
<div>
Sessions, Gordon, and Page met with Kislyak at the Republican National Convention in July. He was one of approximately 80 foreign ambassadors to the US that were invited. Gordon and Sessions met with Kislyak for a few minutes after their speeches. Gordon, Page, and Kislyak later sat at the same table and discussed improving US Russian Relations for a few minutes.</div>
<div>
Gordon received an email in August to meet with Kislyak but declined due to ‘constant stream of false media stories’ and offered to rain check the meeting.<br />
<br /></div>
<div>
In August Russian Embassy set up a meeting with Sessions in Kislyak and the two met in September at Session’s Senate office. Meeting lasted 30 minutes and Kislyak tried to set up another meeting but Session’s didn’t follow up. Sessions got into trouble by not disclosing his meetings with Kislyak and was part of the reason he recused himself from what became known as the Mueller report.<br />
<br /></div>
<div>
Following the election in November Kislyak reached out to Kushner but Kushner did not think Kislyak had a direct line to Putin and was therefore not important enough to talk to. Nevertheless Kushner met with Kislayk in November at Trump tower and invited Flynn and spoke for about 30 minutes about repairing US Russian Relations. Kislyak suggested using a secure line to talk to Russian generals about Syrian war. Kushner said he had no secure lines to use and asked if they could use russian facilities but Kislyak rejected that idea.<br />
<br /></div>
<div>
Kislyak tried to get another meeting with Kushner but Kushner sent his assistant instead. Kislyak proposed meeting with Gorkov, the head of a Russian owned bank, instead. Kushner agreed and they met in December. Kushner said that meeting was about restoring US - Russian Relations. Gorkov said it was about Kushner’s personal business. They did not have any follow up meetings.<br />
<br /></div>
<div>
In december Flynn talked with Kislyak about two separate topics. The first was to convince Russia to Veto anti-Israel resolution on settlements in the UN where it was thought the Obama administration would abstain. Russia did not vote against it. The second was to convince Russia not to retaliate against new sanctions for meddling in US elections. Mcfarland and Bannon were aware of Flynn’s discussions about the sanctions. Russia did not apply retaliatory sanctions.</div>
<div>
Finally there were two billionaires men that Putin ‘deputized’ to create contacts with the Trump Campaign after the election; Aven and Dmitriev. Aven said recalled that Putin did not know who to contact to get in touch with President Elect Trump. Aven did not make direct contact to campaign but Dmitriev did through two avenues. One was to try and convince Kushner’s friend to setup a meeting. Kushner circulated this opportunity internally but it went nowhere. The other was meeting with Erick Prince, a supporter of Trump but not officially in campaign, in the Seychelles Islands. Prince discussed his meeting with Bannon but Bannon does not have a recollection of it.</div>
</div>
<div class="section level1">
<h1>
Some notable connections</h1>
<div>
In general these Russian Groupings were distinct in the people they talked to and had little obvious contact with one another. Some notable exceptions are:</div>
<ul style="margin: 10px 0px 10px 20px; padding: 0px 0px 0px 15px;">
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;">Peskov talked to Cohen and Page independently</li>
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;">Dmitriev and Peskov might have talked to eachother (p. 149) but there was some ‘investigative technique’ redactions so I’m not sure</li>
<li style="margin: 0px 0px 7px; padding: 0px 0px 0px 3px;">Kilimnik was aware of Page’s December visit to Russia and discussed with Manafort saying “Carter Page is in Moscow today, sending messages he is authorized to talk to Russia on behalf of DT on a range of issues of mutual interest, including Ukraine” p. 166. Leads me to ask: who would know the whereabouts and discussions of other people? Spies. Thats who.</li>
</ul>
</div>
<div class="section level1">
<h1>
Conclusions on Volume 1</h1>
<div>
Overall, I get the impression that the Trump campaign did not have the ‘best people’. Cohen tried to make a deal but couldn’t find the right people to talk to. Papadopolous and DJT tried to get dirt on Clinton but couldn’t find anything. Page seemed to use the campaign as a platform to create more connections with Russians. A few ‘friends’ (Stone and Prince) lent a hand but probably hurt Trump’s credibility by dealing with Russians more than they helped him. Manafort, a seasoned campaigner, wasn’t obviously working for Trump… he worked for free after all. It seemed like a group that were willing to do shady things, for their own personal gain, but without the ability to follow through.</div>
<div>
SAD!</div>
</div>
<div class="section level1">
<h1>
All Together Graph</h1>
<div>
<img height="640" src="https://samcarlos.netlify.com/post/2019-07-20-mueller-report-volume-1-a-network-analysis_files/figure-html/ts_plot-1.png" style="height: auto; max-width: 100%;" width="448" /></div>
</div>
<div class="section level1">
<h1>
Conclusions on Analysis</h1>
<div>
Running text analysis before reading report was very helpful to understanding it. There are just so many connections going on it’s hard to keep track. Running some basic clustering techniques as described above helped me zone into what to look for while reading the report.</div>
</div>
</div>
</article><footer class="footer"></footer></div>
</div>
<div class="chunk" style="background-color: white; border-bottom: 1px solid rgb(204, 204, 204); color: #333333; font-family: "Lucida Grande", Tahoma, sans-serif; font-size: 14px; margin: 20px 0px 0px; padding: 0px 0px 10px;">
</div>
</div>
samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com0tag:blogger.com,1999:blog-6922608948294168433.post-79827342024634511822018-09-05T21:50:00.004-07:002018-09-05T21:50:47.453-07:00Who wrote nytimes resistance article? <div dir="ltr" style="text-align: left;" trbidi="on">
# nytimes_resistance_letter<br />
Which senior cabinet wrote nytimes 'resistance' article?<br />
<br />
Below ranking of each cabinent member. Azar, Acosta, or Haley are most likely to have written article based on data analysis.<br />
<br />
<br />
['rick perry', 1]<br />
['Kelly_John', 2]<br />
['kirstjen nielsen ', 2]<br />
['mulvaney', 3]<br />
['coats', 3]<br />
['gina haspel', 4]<br />
['mnuchin', 5]<br />
['elaine chao', 5]<br />
['mcmahon', 6]<br />
['mike pomeo', 7]<br />
['sonny perdue', 8]<br />
['mattis', 8]<br />
['zinke', 8]<br />
['ben carson', 8]<br />
['wilbur ross', 8]<br />
['devos', 9]<br />
['Robert Lighthizer', 9]<br />
['sessions', 10]<br />
['Robert L. Wilki', 10]<br />
['haley', 10]<br />
['acosta', 11]<br />
['azar', 16]<br />
<br />
<br />
I scraped each person's opening testimony as a dataset. I then split each person testimony into sentences. I built a model to predict who wrote a sentence given it's features (bigrams of words and characters).<br />
Applying model to each sentence of resistance article gave a probability that a cabinent member wrote that sentence.<br />
I set a threshold of .1 for each sentence probability; if a person recieved a probability greater than .1 then they were giving a 1 else 0 for that particular sentence. The above ranking is the sum of those scores.<br />
<br />
<br />
<a href="https://github.com/samcarlos/nytimes_resistance_letter">code</a></div>
samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com0tag:blogger.com,1999:blog-6922608948294168433.post-18436419706740451602018-04-02T19:11:00.000-07:002018-07-09T19:54:06.219-07:00How Much Has Bitcoin Made Society?<div dir="ltr" style="text-align: left;" trbidi="on">
<a href="https://samcarlos.netlify.com/2018/04/03/how-much-have-people-made-on-bitcoin/" target="_blank">Realized Gains Bitcoin</a><br />
<br />
<div class="fluid-row" id="header" style="box-sizing: border-box; caret-color: rgb(51, 51, 51); color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; text-size-adjust: auto;">
<h1 class="title toc-ignore" style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 38px; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px;">
How Much Have People Made on Bitcoin?</h1>
<h4 class="author" style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 18px; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 10px;">
<em style="box-sizing: border-box;">Sam Weiss</em></h4>
<h4 class="date" style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 18px; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 10px;">
<em style="box-sizing: border-box;">2018-04-03</em></h4>
</div>
<div class="section level2" id="intro" style="box-sizing: border-box; caret-color: rgb(51, 51, 51); color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; text-size-adjust: auto;">
<h2 style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 30px; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px;">
Intro:</h2>
<div style="box-sizing: border-box; margin-bottom: 10px;">
How much has bitcoin made Society? This post will calculate the realized gains of bitcoin (up to year 2013) as a measure of how much society has made off of bitcoin.</div>
</div>
<div class="section level2" id="how-are-realized-gains-different-from-market-capitalization" style="box-sizing: border-box; caret-color: rgb(51, 51, 51); color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; text-size-adjust: auto;">
<h2 style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 30px; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px;">
How are realized gains different from market capitalization?</h2>
<div style="box-sizing: border-box; margin-bottom: 10px;">
Realized gains measure the amount of money people can claim to have made off of bitcoin. This can be markedly different from the market capitalization.</div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
For instance suppose we have two stocks A and B both with 100 shares and both with a price of $1 at time t_0. Assume the price of both went up to $2 at time t_1. However, suppose all of shares in stock A traded to new people while only one share of stock B traded to new people. The change in realized gains for stock A is $100 while the realized gains in stock B is $1 (assuming everyone for both stocks paid a price of $1 initially).</div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
The example illustrates how market cap and realized gains are different depending on distribution of shares respective previously traded prices.</div>
</div>
<div class="section level2" id="does-realized-gains-mean-anything-else" style="box-sizing: border-box; caret-color: rgb(51, 51, 51); color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; text-size-adjust: auto;">
<h2 style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 30px; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px;">
Does Realized Gains Mean Anything Else?</h2>
<div style="box-sizing: border-box; margin-bottom: 10px;">
The above example illustrates why researching realized gains might be interesting in its own right. For instance: it’s much easier to find only one person to believe high prices are valid as opposed to 100 people who do. It may be that increasing prices without corresponding increase in realized gains may lead to evidence of a bubble.</div>
</div>
<div class="section level2" id="why-calculate-on-bitcoin" style="box-sizing: border-box; caret-color: rgb(51, 51, 51); color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; text-size-adjust: auto;">
<h2 style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 30px; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px;">
Why Calculate on Bitcoin?</h2>
<div style="box-sizing: border-box; margin-bottom: 10px;">
The block chain allows anyone to see the previous time a user purchased a bitcoin and the amount. We can therefore calculate the average price purchased for each user. Since we do not have this information in stocks or currency we cannot calculate it directly for those assets.</div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
There is one heavy assumption on this: that all ID’s (bitcoin address) stay the same. However, it’s common practice that a user his ID when making a trade. This means that the realized gains calculated below are an upper bound since many transactions are self-traded.</div>
</div>
<div class="section level2" id="calculations-results" style="box-sizing: border-box; caret-color: rgb(51, 51, 51); color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; text-size-adjust: auto;">
<h2 style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 30px; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px;">
Calculations / Results:</h2>
<div style="box-sizing: border-box; margin-bottom: 10px;">
I obtained bitcoin transaction data with a package called<span class="Apple-converted-space"> </span><a href="https://github.com/citp/BlockSci" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">BlockSci</a>. I calculated the average purchase price of a particular user’s bitcoin holding calculate the realized / unrealized gains accordingly.</div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
Below is a time series chart of market capitalization, realized gains, and unrealized gains up to December 31 2012.</div>
<pre class="r" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; overflow: auto; padding: 9.5px; word-break: break-all; word-wrap: break-word;"><code class="hljs" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;"><span class="hljs-keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">library</span>(ggplot2)
load(<span class="hljs-string" style="box-sizing: border-box; color: #dd1144;">'/Users/sweiss/Google Drive/blocksci/blog_data.rdata'</span>)
gains_plot</code></pre>
<div style="box-sizing: border-box; margin-bottom: 10px;">
<img src="data:image/png;base64,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nENAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQTKCRAALSfEfAQQQAABBBBAAAEEEEAAAQQQQAABBBBoWwECoG2bdRw4AggggAACCCCAAAIIIIAAAggggAACCJQTIABaToj5CCCAAAIIIIAAAggggAACCCCAAAIIINC2AgRA2zbrOHAEEEAAAQQQQAABBBBAAAEEEEAAAQQQKCdAALScEPMRQAABBBBAAAEEEEAAAQQQQAABBBBAoG0FCIC2bdZx4AgggAACCCCAAAIIIIAAAggggAACCCBQToAAaDkh5iOAAAIIIIAAAggggAACCCCAAAIIIIBA2woQAG3brOPAEUAAAQQQQAABBBBAAAEEEEAAAQQQQKCcAAHQckLMRwABBBBAAAEEEEAAAQQQQAABBBBAAIG2FSAA2rZZx4EjgAACCCCAAAIIIIAAAggggAACCCCAQDkBAqDlhJiPAAIIIIAAAggggAACCCCAAAIIIIAAAm0rQAC0bbOOA0cAAQQQQAABBBD4FS6wAABAAElEQVRAAAEEEEAAAQQQQACBcgIEQMsJMR8BBBBAAAEEEEAAAQQQQAABBBBAAAEE2laAAGjbZh0HjgACCCCAAAIIIIAAAggggAACCCCAAALlBAiAlhNiPgIIIIAAAggggAACCCCAAAIIIIAAAgi0rQAB0LbNOg4cAQQQQAABBBBAAAEEEEAAAQQQQAABBMoJEAAtJ8R8BBBAAAEEEEAAAQQQQAABBBBAAAEEEGhbAQKgbZt1HDgCCCCAAAIIIIAAAggggAACCCCAAAIIlBMgAFpOiPkIIIAAAggggAACCCCAAAIIIIAAAggg0LYCk7btkXfAgX/00Ufm/fffN6NHjzYffvihmW666cw888xjevfubeaee24z6aSNzZ4vv/zSvPTSS8H+P/74Y9OrVy8z++yzm+WWW85MP/30HSBc2Sk0wmHs2LHm7bffNu+9955RPs8yyyymT58+pm/fvmbWWWet7MBYCgEEEEAAAQQQQAABBBBAAAEEEECgboHGRtjqPrzO3ICCnueee6559NFHU09wttlmM/vss49ZYYUVUpepdcZ3331nrr/+enP11VcbDcdTz549zdprr23222+/hgdh4/tu5ngjHMaPH2+GDx9ubrnlFlMoFLynM2TIELPnnnuaGWec0TufiQgggAACCCCAAAIIIIAAAggggAAC2Qn0sEEaf5Qmu32wJUfg73//u7nsssvMhAkTnKnpg4MGDTLDhg0zU001VfpCVcz59ttvzV577WVGjhxZdi3t+5hjjjFTTDFF2WXbbYFGOLz88svmkEMOMZ9//nlZjqmnntocfvjhDQlwl905CyCAAAIIIIAAAggggAACCCCAAAJdJEAAtImZ/cgjj5iDDz64uEeVtFxrrbXMwgsvbOaaay4zbtw48+abb5qbb77ZqCRhmP7whz+Yww47LByt+fXnn382Bx10kHnqqaeK2xg4cKBRoLNfv35BUPTxxx83Tz/9dHH+4osvbk4++eTMArDFDec40AiHb775xmy33XZGTQmESa4rr7xy0JzBJ598Yp544glz5513hrONgqAKhqvZARICCCCAAAIIIIAAAggggAACCCCAQGMECIA2xjWx1TFjxgQBsq+++iqYN+ecc5pjjz3WzDvvvIllVYLwuOOOM08++WRxnkpiKphWT1K17NNPP724iS233NLsuuuuxfFwQFW4r7jiinA0WEbLdkpqhMOJJ54YCW4eeOCBZr311kuQKfiseWEJ4EUWWcScd955ieWYgAACCCCAAAIIIIAAAggggAACCCCQjQC9wGfjWHYrt99+uwmDn1pY1Z99wU/Nm2GGGcxRRx1lZpppJo0G6aqrrgoHa3pVwO2aa64prqt2KH3BTy2w0047mc0226y47K233mp++eWX4nieAy+88II56aSTgj+Vnqw2NcJBrUg88MADxUNZY401vMFPLbD00kubbbfdtrjsiy++GHSAVZzAAAIIIIAAAggggAACCCCAAAIIIIBApgIEQDPlTN/Yc889V5z5+9//3gwYMKA47htQj+ybbLJJcZZ6FFfV7VrTgw8+GPRGHq6//fbbh4PeVwXpwnZH1Yu5qsa3Qho1apS54447gr+HH3646kNqhMPo0aON2hQNk4LLpdKaa64Zmf36669HxrMc+fTTT4MmDlQdX51qkRBAAAEEEEAAAQQQQAABBBBAAIFuEyAA2oQc/+mnn8xLL71U3NMCCyxQHC41MN988xVnK/j5zjvvFMerHXDb9ezbt6+ZZ555Sm5CAViVVgzTTTfdFA5W9KpSkR988IH5z3/+Y1555RXzww8/VLReoxdqhIOCsm6abbbZ3NHEsOZPNtlkxen15GtxIykDcn/ssceCP+UDCQEEEEAAAQQQQAABBBBAAAEEEOg2gUm77YTzON8ff/zR7LHHHkbtgI4dO9YstthiFR1GvMRnPdXQ1UN5mJZaaqlwsOTrEkssYVRiUkmBQx3PpJOWfsvce++95sYbbww6c/ruu++K259kkkmCzoCWX355s8MOO+TWs3wjHGacccbieWpAAdE+ffpEprkjeg8oKB6m6aefPhzkFQEEEEAAAQQQQAABBBBAAAEEEEAgY4HS0ayMd9atm1Nv30OHDq369N2q0ZNPPnnQU3vVG7ErqHq2W8pQJUArSb179y4upuDnhx9+mFpy9OuvvzZnnHGGGTFiRHEdd0DB2/feey/4e/TRR82wYcNM//793UUaPtwoB5WmVXMBYTV4GQwePDj1fO65557IvIUWWigyzggCCCCAAAIIIIAAAggggAACCCCAQHYCVIHPzjLTLamE4J133lncpoKF5UpfFheODShw6ZYeLVdFO1x91llnDQeD13fffTcyHo6oRKPaDHWDn1p39dVXN7vssovZaKONjIJ8KgWqpO2oo6VmtyvaKIff/OY3ZuONNw45zP33329uvvnm4rg7oE6chg8fXpy05JJLmkqbRCiuxAACCCCAAAIIIIAAAggggAACCCCAQMUClACtmKq5C95www2R3sHViU2t6ZtvvomsOvPMM0fG00biVbu/+OIL76Lnn3++UWc7Sgpybr755kE1d5VaddOzzz5rjjzySKPtqETpmWeeaa688koTX85dJ8vhRjpst912Rh1Vqc1TJZWGfeSRR8xKK60UVP1X8wfPPPNM0HmT2kdVmnvuuc0RRxwRDPMPAQQQQAABBBBAAAEEEEAAAQQQQKAxAgRAG+Na11ZffPFFc8kllxS3oUDkpptuWhyvdiAe+Jtiiikq2kR8OV9HRurc6e677y5ub8cddzRbb711cdwdUJuiF198sVGwUFXmVSLzuuuuSyz/ySefmAkTJrirFofdIKxKyWobaUlu7jk00kGdGh177LFByU8FdT///HPzxBNPBH/x49Oy66+/flBqttb2P6+99lqjgHK5pHNWiV8dDwkBBBBAAAEEEEAAAQQQQAABBBDoRgECoC2W62qr8y9/+YtRx0lKPXr0MIcddphRNetaU62Bv549exr9hcFIt1Oj8FjOOuuscNDMP//8ZosttiiO+wZUNX6rrbYyF1xwQTBbwUIFA6eddtri4nvvvXfJwGa4oKrSb7bZZuFo4vXUU081yy67bHF6Ix20E5XsnG666YxK2JYKOOpcVfqznjz973//a26//fbiuZUa0P7Gjx9fahHmIYAAAggggAACCCCAAAIIIIAAAh0rQBugLZS1o0ePNvvvv38kWKU2NJdeeum6jvL777+PrK8SiJUmt91Rt+dyra+A4quvvlrc1GqrrRYETIsTUgaGDBlSnKOg6ptvvlkcb+RAoxx0zKrirt7tVQp05MiRwWn06tXLqNTruuuuawYOHGhmmGGGYPpnn30WVP9XsFgdQ5EQQAABBBBAAAEEEEAAAQQQQAABBBonQAnQxtlWteWXX345KPn55ZdfFtfbZpttzJZbblkcr3XArQaubcQDmaW2q7Y6wxQvsaiArZsGDBjgjqYOqxSoSiV+9dVXwTLajjoDanRqlINKe+6+++7m448/Dk5B7aAquLn99ttH2jdVR1Q33nijueiii4yCsWo3dc899zTnnHOO6d27d1Wnv++++wZV6MutpOYE1ltvvWKJ4nLLMx8BBBBAAAEEEEAAAQQQQAABBBDoNAECoC2Qow899JA5+uijI0Eq9aqu9jSzSPHAZVi9vty2FfwMq79r2WmmmSayyqhRoyLj6uBIVeYrSd9++21xsfh2rr766uK8+MBdd91lTjnllGBy//79Iz2qx5eNH0ujHK666qpi8FPHcPjhhxuVho0nBUY32WQTs+iiixqV7JWt2jQ9++yzzWmnnRZfvOS4qtDrr1ySbbzka7l1mI8AAggggAACCCCAAAIIIIAAAgh0kgAB0JxzU729KwAW9gyuNj9Vum/o0KGZHVk88FdpQCze6dFUU00VOaZ4CdCwJ/jIQhWMxLfjVruPr64gYphkVWrZcLnwtREOalvzlltuCXdhBg8e7A1+FhewA2orVQHuSy+9NJiszpJef/31YLq7HMMIIIAAAggggAACCCCAAAIIIIAAAvULEACt37CmLag69Lnnnmuuv/764vqTTz65GTZsmFlxxRWL07IYmGmmmSKbGTt2rOnbt29kmm9E7Vq6KV4C1O1USMHIWns017rNSI1wUEdMbonatdZaq6JT2WCDDYoBUK3w/PPPEwCtSI6FEEAAAQQQQAABBBBAAAEEEEAAgeoECIBW55XJ0ipZecwxxxhVfQ+TgocnnXSSWXjhhcNJmb3ONddckd7c1S5kJSm+XJ8+fSKrabthUsnMf/7zn5E2L8N5rfLaCIcPPvggcnr9+vWLjKeNqEOk3/72t2bcuHHBIvFSsGnrMR0BBBBAAAEEEEAAAQQQQAABBBBAoDqBifWJq1uPpWsUUPDzwAMPjAQ/55lnHnPhhRc2JPipw1Q1cbe9yLfeequio3/77beLyylYN9tssxXHNeBuU+1ZvvPOO5H5rTbSCAe3Sr7ON2zKoJJzn3rqqYuLuW2tFicygAACCCCAAAIIIIAAAggggAACCCBQtwAB0LoJK9+Ael8/7LDDzLPPPltcafHFFzcXXHCBmWOOOYrTGjGgjnfC5O4/nOZ7dZdbaKGFEou4AVDNVDuWlaZ77703cFDP6W5P85WuX+tyWTvMO++8kUN57rnnIuNpIwqEu6VH49tJW4/pCCCAAAIIIIAAAggggAACCCCAAALVCRAArc6rrqXV2ZE6vAnToEGDgt6/e/XqFU5q2Osqq6xS3LZKgL755pvFcd+A2gl9+umni7OWW2654nA4MPPMMwfVuMPxf/zjH0ZB3nLp8ccfN0cddZTZe++9g17Rb7rppnKrZDY/aweV3lXbrWFyg8bhNN+rbNUObJgIgIYSvCKAAAIIIIAAAggggAACCCCAAALZChAAzdYzdWsPP/ywufnmm4vz1RP4sccea6aYYoritEYOqKSp2wmQOmBKC1aqGvd5551X7NxH1d/XWGMN7+HtsssuxemjRo0yV199dXHcN6CSjxdddFFxlnpmX3vttYvj5QbUedOmm24a/K2++urlFk/Mz9qhZ8+eZplllinu5+677zYq3Voqffvtt+aMM84oLjLjjDOa/v37F8cZQAABBBBAAAEEEEAAAQQQQAABBBDIToBOkLKzTN2S2nc855xzivPVbuTGG29sXnnlleK0SgbUCZGvp/UbbrghElzdZ599IkE5bVuBut122y0Iumr8v//9rznkkEPM8ccfHwnC6lhPPPFEM2LECC0WJAUc0wK1a665prn11luL53LppZca9Q6/0047RUpGakPjx483Rx99tHnjjTd+3bD9v+666xq3LczijJQBVcX3VcdPWTwxuREO+++/v1HVd52fSnUqsK32RldaaaXE/t9///3A1+1g6tBDD031TWyACQgggAACCCCAAAIIIIAAAggggAACVQn0sKX9ClWtwcJVCyiYqF7f603axsorr5zYzPDhw80VV1xRnJ62nBZQB0yqgh6m2Wef3Sy77LJmwQUXNKoaryr67777bjjbLL300uaUU04JAnrFibEBtf25++67F0uMavacc85pllpqKTPffPMFHQOpg6R///vfQXA0XF3ztW23Cnk4r9GvWTvcd999ZtiwYZHDVq/zSy65pBkwYID54osvAt/7778/4rTRRhuZfffdN7JeliMqlatq+kpDhgyJBLaz3A/bQgABBBBAAAEEEEAAAQQQQAABBFpVgBKgTciZF198sQl7qWwXKt2p6u0qNar00UcfBaVH3er54ZZUTf+4444rGfzUslrusssuMyeccIJ5+eWXg9XVwY/byU+4zfB1scUWC5bPI/ipY8jaIWxb9G9/+5sZN25ccJqjR482+rvtttvC0y6+6ry33nprs9VWWxWnMYAAAggggAACCCCAAAIIIIAAAgggkL0AAdDsTRNbVOnHVkmqmq3Oh1TiU9XVFaCLJ1Wz33777c16661XNvgZrqtShgqsqiMkVYn/8MMPw1mRV5UI1bZXWGGFyPRmjzTCQUFQlZi98MILg9Ku33//feK0VAV/4MCBRs0UzD333In5TEAAAQQQQAABBBBAAAEEEEAAAQQQyFaAKvDZerbd1r7++mszcuRIoyCtOjtSUC7es3ktJ/Xdd98FVenffvvtoP3ROeaYw+jP7Yiplu02ap2sHdSyhNr5VHMCKgmr8+7du7dRtXgFX5uVqALfLGn2gwACCCCAAAIIIIAAAggggAACrSpAALRVc4bjQiADAQKgGSCyCQQQQAABBBBAAAEEEEAAAQQQaGuBSdr66Dl4BBBAAAEEEEAAAQQQQAABBBBAAAEEEECghAAB0BI4zEIAAQQQQAABBBBAAAEEEEAAAQQQQACB9hYgANre+cfRI4AAAggggAACCCCAAAIIIIAAAggggEAJAQKgJXCYhQACCCCAAAIIIIAAAggggAACCCCAAALtLUAAtL3zj6NHAAEEEEAAAQQQQAABBBBAAAEEEEAAgRICBEBL4DALAQQQQAABBBBAAAEEEEAAAQQQQAABBNpbgABoe+cfR48AAggggAACCCCAAAIIIIAAAggggAACJQQIgJbAYRYCCCCAAAIIINANAoUfvjeFn37qhlPlHBFAAAEEEEAAAQS6UIAAaBdmOqeMAAIIIIAAAgiEAhPefst8s+du5pt99jC/jBkTTuYVAQQQQAABBBBAAIGOESAA2jFZyYkggAACCCCAAALVC0x46UVjfvzRmG++MRNef636DbAGAggggAACCCCAAAItLkAAtMUziMNDAAEEEEAAAQQaKjBhwsTN//jDxGGGEEAAAQQQQAABBBDoEAECoB2SkZwGAggggAACCCBQi0DBWamgkqAkBBBAAAEEEEAAAQQ6TIAAaIdlKKeDAAIIIIAAAgjULEBHSDXTsSICCCCAAAIIIIBA6woQAG3dvOHIEEAAAQQQQACBxgsUJpYBpQRo47nZAwIIIIAAAggggEDzBQiANt+cPSKAAAIIIIAAAq0j4ARADSVAWydfOBIEEEAAAQQQQACBzAQIgGZGyYYQQAABBBBAAIE2F/iJNkDbPAc5fAQQQAABBBBAAAGPAAFQDwqTEEAAAQQQQACBrhFwSoAWfvypa06bE0UAAQQQQAABBBDoHgECoN2T15wpAggggAACCCDgEZjYBqihF3iPD5MQQAABBBBAAAEE2l2AAGi75yDHjwACCCCAAAII1CPgxD8LVIGvR5J1EUAAAQQQQAABBFpUgABoi2YMh4UAAggggAACCDRFwKkCTydITRFnJwgggAACCCCAAAJNFiAA2mRwdocAAggggAACCLSsAFXgWzZrODAEEEAAAQQQQACB2gUIgNZux5oIIIAAAggggED7CzglQAs//tD+58MZIIAAAggggAACCCAQEyAAGgNhFAEEEEAAAQQQ6CoBJwBqfvq5q06dk0UAAQQQQAABBBDoDgECoN2Rz5wlAggggAACCCBQgYDTI1IFS7MIAggggAACCCCAAALtIEAAtB1yiWNEAAEEEEAAAQQaJeCWACX+2ShltosAAggggAACCCCQowAB0Bzx2TUCCCCAAAIIIJC7QCQASgQ09/zgABBAAAEEEEAAAQQyFyAAmjkpG0QAAQQQQAABBNpVgABou+Ycx40AAggggAACCCCQLkAANN2GOQgggAACCCCAQOcLOCVAncHOP2/OEAEEEEAAAQQQQKBrBAiAdk1Wc6IIIIAAAggggEAZASKgZYCYjQACCCCAAAIIINCOAgRA2zHXOGYEEEAAAQQQQCAzAbfauzuc2Q7YEAIIIIAAAggggAACuQoQAM2Vn50jgAACCCCAAAI5C7gxT3c458Ni9wgggAACCCCAAAIIZCVA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JJNEW45QW58qxRumNdZYIxL8DKfrdemllzbbbrutufTSS4PJL774ovnwww/NHHPM4S7GMAIIIIAAAk0ToBOkplGzIwQQQAABBBBAAIGcBKKRnJwOopt2+/333xuVFtxtt90iwc/f/e53DWdQsFUBwDDNP//84WDbvI4aNcrccccdwd/DDz9c9XE/+OCDQa/s4YrlAqgKVoalX9Wbu6rGx5N6j1ebomFSULVUWnPNNSOzX3/99cg4IwgggAACCDRXYGK9dzcY2txjYG8IIIAAAggggAACCDROgABo42y9W1b15xtuuCFSvUzVqv/61796l89yotvmpUpPTj/99FluPrItlYr84IMPjDr6eeWVVyrqRCiygQaNhO16avN9+/Y188wzT8k99erVKyi1GS500003hYPFVwVl3TTbbLO5o4lhzZ9sssmK0995553iMAMIIIAAAgg0WyAa9JwYDG32cbA/BBBAAAEEEEAAAQQaJUAV+EbJpmx3/PjxxTkzzTRT0MO4OuBxpxcXyHjAbf+zUaU/7733XnPjjTeaN998M9K7uqqNqzOg5Zdf3uywww5miimmyPjsKtucmh4I01JLLRUOlnxdYokljEqOKimAqk6UJp104kdnxhlnjKyvgGifPn0i09yRsWPHGrX/GqZGBqLDffCKAAIIIIBAmoDbBqg7nLY80xFAAAEEEEAAAQQQaDeBiVGcdjvyNj7emWee2ajU5zrrrNPUQKCCkmFaYIEFwsHgVUE5BWEVpHSDe5GFSox8/fXX5owzzjAjRozwLqVOnt57773gT72qDxs2zPTv39+7bKMmqpq6W9pSJUArSb179y4upuCn2ux0S45qWNXkw2rwMhg8eHBxnfjAPffcE5m00EILRcYZQQABBBBAoJkCbgnQoBd4W4uDhAACCCCAAAIIIIBAJwkQAG1ybu68885BlWq3CnQzDkFV0t0AqEqAqgMe9XL+0ksvGQUwlRT8VGBwkUUWCUpqTjfddGUPT8HTXXbZxXz66afFZVXFfrHFFgu2pfmvvvqqee2114wCoWqLVB0MnXjiiWbZZZctrtPoAQUutf8wlauqHi6nc3GTjt8NgP7mN78xG2+8cWCp5e6///6gx/gNN9zQXS0YVidOw4cPL05Xj/PxYHRxJgMIIIAAAgg0RcCt9u4ON2Xn7AQBBBBAAAEEEEAAgYYLEABtOHF0B4MGDYpOaNKYOur57rvvinu75JJLgrY5ixP+N6ASjqoqrz/1bK42S1dYYYX4YpHx888/vxj8VFV39ZSuau6TTz55ZLlnn33WHHnkkeaLL74IqpGfeeaZ5sorr0wsF1kpw5FvvvkmsjWVxK0kxau46/jjabvttjNvv/120Oap5qk07COPPGJWWmmloFTtmDFjzDPPPBN03qRgtJJK2x5xxBHBMP8QQAABBBDIS8At70kV+Lxygf0igAACCCCAAAIINFKAAGgjdVto227pTx2WOiYK05RTThkE4+JB0nHjxplDDjnE7LrrrkGV/XB591WlR+++++7ipB133NFsvfXWxXF3QG1pXnzxxUbBQpU4VYnM6667LrH8J598Eumt3t2GG3xUO5raRlpS4NJtazQeAHXnpW1D0+PL/fDDD4nFVaL32GOPDUp+Kqj7+eefmyeeeCL4iy+sZddff32jHuZrbf/ztttuM257pvF9hONq1kCB3i+//DKcxCsCCCCAAAIRgUTQkyrwER9GEEAAAQQQQAABBNpfgABo++dhRWfgdoAUrqCSmiuuuGJQBVtV31UyUUHQCy64wDz00EPhYkHQUiVXfW1mnnXWWcXlVK1+iy22KI77BlSdfKuttgr2ofkKFioYOO200xYX33vvvUsGNsMFVRV9s802C0cTr6eeemqkin2tAdCePXsa/U2YMCHYh1uS1t2p/NRkgAKOCoCmJZ2rSn+q6nytSZ0y3X777RWtPsMMMxTbJ61oBRZCAAEEEOhagUQwtGslOHEEEEAAAQQQQACBThKYpJNOhnNJF3ADoArmHXbYYWb33Xc3AwYMKHZ61KNHjyAwd/zxx5v99tuvuDFViz/ppJOKAcBwhgKKatszTKuttloQKAzH016HDBlSnKVgYrx0anFmxgPff/99ZIvVtMPqdgzl9uAeblBV3FXtX6VAR44cGUzu1auXUanXdddd1wwcONAoEKn02WefGVX/V7BYHUOREEAAAQQQyFPADXoGw5QAzTM72DcCCCCAAAIIIIBAAwQoAdoA1Fbc5NFHH20++uij4E8lEBdddNGShzl06NCgDcsnn3wyWE5V5tWGpwJ5YVJpUTcpmFpJUilQHcNXX30VLK7tqDOgRqd4VXZfIDPtGBQEDlO85KZKeyqY/PHHHweLqB1UBTe33377SPum6oDpxhtvNBdddJFRMFadRu25557mnHPOMW5P8+F+Sr2qE6n11luv1CLBPHVAtc022xhftf2yK7MAAggggEBXCLhtgBr6QOqKPOckEUAAAQQQQACBbhMgANolOT7VVFOZfv36BX+VnrLa/gwDoFpHnfy4AdBRo0ZFNqUOjlS6tJL07bffFheLb+fqq68uzosP3HXXXeaUU04JJvfv3z/So3p82fixxAOXP/74Y3wV77iCn2H1dy0wzTTTRJa76qqrisFPzTj88MONSsPGkwKjm2yySRB83mWXXYJtqk3Ts88+25x22mnxxUuOq+f4SnqPl61rXXKjzEQAAQQQ6HoBtzRo12MAgAACCCCAAAIIINAxAgRAOyYrsz8Rtfnptn351ltvRXYSLwGqEo21pPh23Orm8e0piBgmVdkvtWy4XPgaD4DGq8SHy8Vf46UnFUwOkzoZuuWWW8JRM3jwYG/ws7iAHVBbqeoA6dJLLw0mq7Ok119/PZjuLscwAggggAACzRBwg57ucDP2zT4QQAABBBBAAAEEEGiGAAHQZii36T4UXJxrrrmK7VS+//77kTNxOxVSMLLWHs21bjPSTDPNFNmNqof7OnaKLGRH1L6nm9wSoOqIyS1JutZaa7mLpg5vsMH/Z+8s4OQo8jZcs7tJNoYES4IkSAKBYCG4B3c4nEOPw4L7IXdIkEOP4HLokTs4DrcPCU5wJ7gTCIEkxG1lvn472z3VPd0juzM7sk/xG7qqurq66pnJ7s7bf9nVF0A16IMPPkAAjaXFCQhAAAIQKCqBgA+8cydigBYVN5NDAAIQgAAEIAABCLQ/AQTQ9mdeUXdUZnOvhAVOiaNekWXm//73v0DMS+9cuRy1XtuidcKECTktLTyuf//+/nU//fSTX1dFYQZyKUqI1KtXLzN58mR3eNgKNpc5GAMBCEAAAhAoBIGk9SASC9BCEGUOCEAAAhCAAAQgAIFyI5DyJy63lbGeghFQkh7F8nzqqafMPffcY2T5mEtR7Etb4Asn6ll66aX9aRQj89tvv/Xb5ViRRau95rBLf9yaFfvUKxIte/fu7TWN7ZKvTlsw9gfFVLp37+6fsWOM+p1UIAABCEAAAu1AIPWo0/k9pvtZDz/b4fbcAgIQgAAEIAABCEAAAkUngAVo0RGX/gY///yzOfnkk/2FSAjcY489/HZcRQl0bGFumWWWCQy1xUSdyCeO5ejRo10LyD59+hi5pucTyzOwiDwbq622mpHbuoqy2udS7HErr7xy4JIBAwYE2u+//77p27dvoC+qobiitrgcnifqGvogAAEIQAACxSFgh6Kx68W5G7NCAAIQgAAEIAABCECgvQlgAdrexEtwP2ULt+NWjhkzJqdV3HXXXf64zp07m7XWWstvq7LYYou5IqbXKevShoYGrxl7fP311825555rjjvuODcr+gMPPBA7ttAnhg0b5k8pC9CvvvrKb0dVZC37zjvv+KfWX399v66KRGGx8Yotlnp9UUfN2dzc7J9CAPVRUIEABCAAgXYmYLu92+7w7bwMbgcBCEAAAhCAAAQgAIGiEUAALRra8plYcS9t8fKtt94yL774YsYFSsh79tln/TG77767WWKJJfy2VzniiCO8qpHF6KhRo/x2VEWWjzfffLN/SpnZd9hhB7+draKkRXvttZf72nrrrbMNTzu/xhpruBan3onrrrsuVrSVO/v111/vJzmS+/s222zjXeoexXbdddf1+55++mkj69ZMZdasWebKK6/0hyyyyCJmhRVW8NtUIAABCEAAAu1FQL/rbBd49764wLcXfu4DAQhAAAIQgAAEINBOBBBA2wl0MW9z3333mf32289/vfHGG2m3O/TQQ019fb3ff8kll5iocRrw5JNPmtNOO80f27NnT3PAAQf4bbuy3XbbGdst/LbbbjMSFe3M6N746dOnm7POOst8+eWXXpfZaaedjB0L0z8RU9G9jj32WPe1zz77xIyK75ZgedRRR/kD3n77bXPGGWcYCbN2kev/hRdeaJ555hm/W8Jrly5d/LZXOemkk4wYqciqc8SIEbEC8w8//OCGI7ATK5155pmR83rzc4QABCAAAQgUjYArgKbc3m1r0KLdk4khAAEIQAACEIAABCDQzgSIAdrOwItxuylTprjWl97csjAMF1lOnnLKKeaCCy5wT0mMVHu99dYzsopcfPHFjZL9fPTRR+aDDz7wL5dgKNHSE/j8Ey2VhJM5VgLg8OHDXdFTliRyhX/55Zddq9OBAwe6iYGUIElJmGbOnOlPIatU24LUP1HkiixHJWzKFV9FQrAEXrEYNGiQkWu8+rxYoRqz9tprm7333lvVtKIYpmJ5zjnnuOcknp599tlGWeeHDBliBg8ebPQead7nn38+IA7LsnadddZJm5MOCEAAAhCA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cprOnTubzTbbzJx44olurpTIQXRCAAJFIVDUGKBFWTGTQgACEIAABCAAAQgUgIAE0HQL0ECf8+W7y377m5qB878YuzclCVIB2DNF0QnMnevfIlHfxa9HhbtKzpjun/cqxYwB6ph/ebfhWEICEha7OuK4xELv9a9//SvvFf33v/8133//vT+HPmMbbLBB5DzvvPOOK2jusssu5uGHH84ofmqCpqYm89Zbb5nDDjvMtWb88ssvI+e1OyUKevsZP368e+qCCy5wRU4JdHZpcB5o3XnnnebZZ5/1u2Ul6l2vY5Sw6A9uqbTHvsL3fOKJJ8zKK6/srj9ujd98843561//aoYNG2Y8FuF5CtV+7LHHjPKLnH766bHip+41b9488/TTT5vtttvOSGyeMGFCoZbAPBCAQBYCCKBZAHEaAhCAAAQgAAEIVCUBNwBolACa2q3iGNauuJLpssdefmeyodGvU4FAuRJIzksJoKZLfcZlJh331EDp3sO0VQDNFAM0gQAawF3KxsEHHxy4/T333OOKjoHOLI277rorMOKAAw5wQicHQ4dowOjRo13Lv/feey8wPtfGF1984V4/x7ZuzuHiN954w5xzzjmxI2WRuO+++8aez3aiFPt66qmnzB/+8IesArK3duX6kJXuCy+84HUV9CirT4nacnvPp0gIXW+99cxnn32Wz2WMhQAEWkmgIgVQPVXT05yHHnrI3Hrrrea1114z06ZNayUCLoMABCAAAQhAAAIdkIDz91TWJEg1LX8q1llul7jAd8APSwVuOWABagmgES7wjolbYIP1xxxnEt5nP3Amj4YSiMUUBNAYMCXollt5jfVey3rStobMtqSvv/7ajT1pj5PLdbj89ttvZo899jAzQvFmt9pqK3PvvfcaWVD+/PPPrpWivtv++9//NltuuWV4GndMWHBNG2R1NDY2utajisnpFbm9y/LVKzvuuKPpZScK807kcCzVvmSpO7fl37gE3OOOO8488MADLj/F3bzppptcsdjegiwtt956a6P3rJBFa9H9bcaaf9dddzV6rxSCQPFdFe7giiuuSLMO/u6778xuu+1mZI1LgQAEikugJAKonl7pH3+UC0qm7eq6HXbYwSzoBCVffvnl3R8Uf/7zn90fIurr37+/+8MHMTQTRc5BAAIQgAAEIAABEXAE0ES6BWggMZJnxdTJEnNwgefj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A20aECg4AcsCNFEb8RXHdoG36wVfCBNCAAKFJNDQ0FDI6ZgLAhDowAQi/jrowDTYOgQgAAEIQAACEOggBJLJeJfgfATQRH2XIDFHJO2y977GdO7s9zcjgPosqBSJQDYLUNsFHgG0SG8C00IAAhCAAATKlwACaPm+N6wMAhCAAAQgAAEIFI1AoSxATeegANp57/1Mp2Fbmm4jUskvkpOwAC3aG8nE8wlYFqCRLu623o8AyqcGAhCAAAQg0OEI1HW4HbNhCEAAAhCAAAQgAAGT0QK0ORpQoi74p2PCEZISlqWnrkp07+ZeXNO7tzFyhZ8zxySnTomekF4IFIpAsxW3IRyqQfewRU+7Xqj7Mw8EKoDA77//bj755BOjxEKLLLKIWX755U2/fv1iV65xn332mZkyZYo7duDAgaZr166x4zvKiZ9++sl89913Zvz48aZPnz4um976ndfK0uw8wPn222/N559/bmbPnm0WWmghs8wyy5gBAwa0csb5lyWdbId6//RaaqmlzAorrGAWXnjhNs3JxRCoZAJYgFbyu8faIQABCEAAAhCAQCsJtNkC1BORbAG0Z09jejivlpLouYBbS06f7giu8TFHvfEcIdBqAk2Wah9O1uVOmjIBTST4CtRqzlxY9gSuueYas8QSS7ivc889112vhLp9993XSKTbaKONzF577WW22GIL079/f7P55pubN998M7Cv9957z2y77bauaKZxu+++u1ljjTVMjx49zCGHHGImT54cGN/axogRI/y1as077bSTKwA+/vjjfv/XX3/tT3/FFVf4/auttprf3x6VGTNmmGuvvdasvvrqLhdx3HPPPV2eEkHF9h//+IfzzG9OTst55513zAEHHGBWXXVV061bN1ec3GGHHcwee+zhZryX2Kx5TzjhBFdojZvUfr9PPvlkd9inn37qslx00UXNyiuvbP7whz+YddZZxxW9d955ZzNmzJi46eiHQFUT4Ld/Vb+9bA4CEIAABCAAAQhEE8hoAWoZ0wWuti1AW0SmhO0C7widtkVoQoKoityTZ86cX+f/ECgCgWRWC1Drpikt1OqkCoHqIDBr1izz66+/ui+JdrJU3Hjjjc0999xj5s2bl7bJF154wRVBn3/+effcnXfeadZff33z1FNPpT24kqXiHXfcYQYNGmR++eWXtLny6bjwwgvN3/72N3+tsnYc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UTSl6upqmThxorz77rvO99TWrVtHu5TjCCCAAAIIZESAAGhGmHkIAvEJfPDBB3LLLbeIBiM1aa/MQw89VI488kg57rjjZNddd3WGgM+cOVNqamqca+bOnStLly51gpbOAd8/NOB56aWXyldffRU5M2LECDnqqKPkhBNOkC233NIZPqxDuDRpfvqFdZ999okaVA0jT332Rx99JFdccUWkbnps+PDh8pOf/EROOukkZ+i7DtmfMWOGnnLq/d5778no0aMJgjoi8f0jjHamTw6rXQTV6p133pFrr7028u+KXpNIADSTZQ0qf7Eco60Fv+lU229wrsV9NIy2lunfE6m0izDqX9wtKnrtw7LOZHtLpa1NmDBBtP+MTj2jSXt36qic448/3vluOWTIEGckiPu9cuXKlTJ+/HgZO3Zsk39cj67OGQQQQAABBFIXIACauiE5IJAWAR32/etf/1r0L+aaevbsKbfffrscfvjhsvXWW4sOee/fv7/stNNOcvDBB8u3334r8+fPd67VgKCe0x9/+te//iX/+Mc/IodPPPFEJ8g4aNAgZ07NwYMHy4EHHiibNm2SL7/80rlO5wbVv9Trl9igFEae69evd3p+as9WTRr8Pe+88+S3v/2taBl1/s+tttrK6fE5dOhQ+fjjj0Xv+eGHH2T58uWy9957BxWVYz6BsNqZPiaMduErvmzYsEEeeughueuuuyL/8eVek0gANBNldctVrJ+0tcZvPl3tt3HOxX0krLaWqd8TqbaLsOpf3K0quPZhWmeivaXa1vQ72s9//vPIVEo636eOxNhvv/2ceT+7du3qfFfT75U6Osedyki/p+mURfr9jYQAAggggEC2BFgFPlvyPBcBn8DLL7/sBPPcw9oTUgN+QalDhw7OX991Lkw3PfbYY+5m5FODmk888URkXwNE55xzTmTf3jjzzDOdv+C7x3ReRfev++4x/QwjT8334Ycfdhat0G1NZ599ttPrtX7P+0/tFXr55ZdHDr7++uuiPRJITQuE0c70qWG1C7tGkydPltNPP13+/ve/O8+zzyWynYmyJlKeQr2WtuZ9s+lqv95c2VOBMNpapn5PpKNdhFF/WlawQFjWmWhv6Whr77//vmiPTjfpd7FevXq5u55P7RG6yy67RI49//zzgd8rIxewgQACCCCAQMgCBEBDBiZ7BOIVsAN4Ovxcez3G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EEAAAQQQQAABBBBAAAEEEEAAAQRyRIAAaI68CIqBAAIIIIAAAggggAACCCCAAAIIIIAAAukXIACaflNyRAABBBBAAAEEEEAAAQQQQAABBBBAAIEcESAAmiMvgmIggAACCCCAAAIIIIAAAggggAACCCCAQPoFCICm35QcEUAAAQQQQAABBBBAAAEEEEAAAQQQQCBHBAiA5siLoBgIIIAAAggggAACCCCAAAIIIIAAAgggkH4BAqDpNyVHBBBAAAEEEEAAAQQQQAABBBBAAAEEEMgRAQKgOfIiKAYCCCCAAAIIIIAAAggggAACCCCAAAIIpF+AAGj6TckRAQQQQAABBBBAAAEEEEAAAQQQQAABBHJEgABojrwIioEAAggggAACCCCAAAIIIIAAAggggAAC6RcgAJp+U3JEAAEEEEAAAQQQQAABBBBAAAEEEEAAgRwRIACaIy+CYiCAAAIIIIAAAggggAACCCCAAAIIIIBA+gUIgKbflBwRQAABBBBAAAEEEEAAAQQQQAABBBBAIEcECIDmyIugGAgggAACCCCAAAIIIIAAAggggAACCCCQfgECoOk3JUcEEEAAAQQQQAABBBBAAAEEEEAAAQQQyBGBshwpB8VAAAEEEEAgFIH58+fL22+/HXfeJSUl0rx5c2nRooXz06VLF9lyyy2d7bgz4cKMC8ydO1dGjhwp69atk06dOsmXX34pbdu29ZTjxRdflNWrV0eOjRo1Svr37x/ZZyO2wJNPPimbNm2KXHTggQdK586dI/uFtlFXVyfaRiZNmiT6e+HVV1+V3XffvdCqSX0QQAABBBBAAIGiECgxX+7qiqKmVBIBBBBAoCgFXnnlFTn00ENTqrsGP/r06SOHH364HH/88bLbbrullF82bv7kk09k4MCB0rFjx2w8PvRnHnzwwU6ASh90xx13yIUXXtjomVtttZXMmDEjcvyxxx6TE088MbLPRmwB/aPA+vXrIxeNGzcuL/9diFQgjo3XXntNNNCradttt5UJEyZIZWVlHHdyCQIIIIAAAggggEAuCTAEPpfeBmVBAAEEEMhJAf1b4XfffSd33XWX0wNsxx13lM8//zwny+ov1PLly+Xss892AlUrV670ny6I/UcffTQS/Nx6663lvPPOK4h6UYnsC4wdOzYSAJ06dapcd9112S8UJUAAAQQQQAABBBBIWIAAaMJk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Zmk+n7/fnBUECBAgQIAAAQI/SkAA+qPGoRkCBAgQIEDgswLr9TqNRqPqsvP5nPb7/WdLPHR9v9//b73JZJKOx2PKO9k7vidQh/PpdEqHw6FqtN1up91u972mXU2AAAECBAgQIBAi4N93CLubEiBAgAABAo8SeHkV/unpz5d98uvleTOcqCM/mTidTtNgMKhayH0Nh8O02Wyqb5TaOfwxk6nD+e+ni3P42el0HtO8KgQIECBAgAABArUK2ASpVm43I0CAAAECBEoJXK/XdLvdqvL5ab1ms1nqVh+umzdBarVadnv/sNjXFpZwvt/v6XK5VA01Go3U7Xa/1pyrCBAgQIAAAQIEwgUEoOEj0AABAgQIECBAgAABAgQIECBAgAABAqUEvAJfSlZdAgQIECBAgAABAgQIECBAgAABAgTCBQSg4SPQAAECBAgQIECAAAECBAgQIECAAAECpQQEoKVk1SVAgAABAgQIECBAgAABAgQIECBAIFxAABo+Ag0QIECAAAECBAgQIECAAAECBAgQIFBKQABaSlZdAgQIECBAgAABAgQIECBAgAABAgTCBQSg4SPQAAECBAgQIECAAAECBAgQIECAAAECpQQEoKVk1SVAgAABAgQIECBAgAABAgQIECBAIFxAABo+Ag0QIECAAAECBAgQIECAAAECBAgQIFBKQABaSlZdAgQIECBAgAABAgQIECBAgAABAgTCBQSg4SPQAAECBAgQIECAAAECBAgQIECAAAECpQQEoKVk1SVAgAABAgQIECBAgAABAgQIECBAIFxAABo+Ag0QIECAAAECBAgQIECAAAECBAgQIFBKQABaSlZdAgQIECBAgAABAgQIECBAgAABAgTCBQSg4SPQAAECBAgQIECAAAECBAgQIECAAAECpQQEoKVk1SVAgAABAgQIECBAgAABAgQIECBAIFxAABo+Ag0QIECAAAECBAgQIECAAAECBAgQIFBKQABaSlZdAgQIECBAgAABAgQIECBAgAABAgTCBQSg4SPQAAECBAgQIECAAAECBAgQIECAAAECpQSeAaDtG7BDn5v7AAAAAElFTkSuQmCC" style="border: 0px; box-sizing: border-box; height: auto; max-width: 100%; vertical-align: middle;" width="672" /></div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
It’s interesting to note how realized gains does not increase or decrease significantly during the ‘bubble’ of mid 2012.</div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
By the end of 2012 people have made ~ $79 million dollars of realized gains on bitcoin. This compares with market capitalization of ~ $142 million.</div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
<a href="https://scweiss.blogspot.com/2018/04/how-much-has-bitcoin-made-society.html" style="box-sizing: border-box; color: #337ab7; text-decoration-line: none;">comments</a></div>
</div>
<div class="section level2" id="example-data" style="box-sizing: border-box; caret-color: rgb(51, 51, 51); color: #333333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; text-size-adjust: auto;">
<h2 style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 30px; font-weight: 500; line-height: 1.1; margin-bottom: 10px; margin-top: 20px;">
Example Data</h2>
<div style="box-sizing: border-box; margin-bottom: 10px;">
Below is an example transaction history for user_id = 1</div>
<table class="table table-condensed" style="border-collapse: collapse; border-spacing: 0px; box-sizing: border-box; margin-bottom: 20px; max-width: 100%; width: 910px;"><thead style="box-sizing: border-box;">
<tr class="header" style="box-sizing: border-box;"><th align="left" style="border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-bottom-width: 2px; border-top-width: 0px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: bottom;">time</th><th align="right" style="border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-bottom-width: 2px; border-top-width: 0px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: bottom;">block_creater</th><th align="right" style="border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-bottom-width: 2px; border-top-width: 0px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: bottom;">id</th><th align="right" style="border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-bottom-width: 2px; border-top-width: 0px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: bottom;">height</th><th align="right" style="border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-bottom-width: 2px; border-top-width: 0px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: bottom;">num_traded</th><th align="right" style="border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-bottom-width: 2px; border-top-width: 0px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: bottom;">price</th><th align="right" style="border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-bottom-width: 2px; border-top-width: 0px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: bottom;">cumulative_shares</th><th align="right" style="border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-bottom-width: 2px; border-top-width: 0px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: bottom;">avg_purchase_price</th></tr>
</thead><tbody style="box-sizing: border-box;">
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-12-31</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">214411</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0005000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">13.5100</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-58.00118</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.8648193</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-12-19</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">212748</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0000000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">13.5990</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-58.00068</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.8647103</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-11-28</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">210000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.2500000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">12.3477</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-58.00068</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.8647103</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-11-02</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">206133</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0100000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">10.4688</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-57.75068</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.8150009</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-10-14</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">203236</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0331232</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">11.7389</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-57.74068</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.8133290</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-10-03</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">201702</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0001000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">12.8900</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-57.70756</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.8070579</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-09-11</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">198260</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0441112</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">11.3308</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-57.70746</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.8070370</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-09-11</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">198259</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0582112</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">11.3308</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-57.66334</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.7989865</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-09-11</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">198258</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0110001</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">11.3308</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-57.60513</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.7883439</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-09-01</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">196682</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-1.0101010</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">9.9654</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-57.59413</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.7863304</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-08-07</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">192712</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0005000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">11.1000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-56.58403</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.6224716</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-08-06</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">192534</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0000000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">10.8552</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-56.58353</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.6223790</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-08-03</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">192056</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0003995</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">10.9700</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-56.58353</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.6223790</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-07-28</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">191184</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0005000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">8.8881</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-56.58313</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.6223060</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-07-28</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">191157</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0005000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">8.8881</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-56.58263</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.6222329</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-07-24</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">190453</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0026534</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">8.6000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-56.58213</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.6221599</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-07-20</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">189913</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.1000000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">8.5200</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-56.57948</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.6217858</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-07-18</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">189695</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0220000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">9.1098</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-56.47948</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.6078015</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-07-15</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">189170</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0010000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">7.6210</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-56.45748</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.6044885</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-07-15</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">189169</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0624000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">7.6210</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-56.45648</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.6043643</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-07-02</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">187212</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.1153000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">6.7600</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-56.39408</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.5966004</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-06-28</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">186641</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.1234500</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">6.6059</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-56.27878</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.5839732</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-06-12</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">184132</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-1.2343210</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">5.7000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-56.15533</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.5707348</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-06-12</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">184127</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-1.2345600</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">5.7000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-54.92101</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.4554573</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-06-07</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">183423</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0010000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">5.5910</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-53.68645</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.3348551</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-06-01</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">182508</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0040000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">5.2748</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-53.68545</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.3347572</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-05-25</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">181523</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0020000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">5.1455</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-53.68145</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.3343891</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-05-23</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">181286</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0010000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">5.1397</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-53.67945</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.3342098</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-05-18</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">180618</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0010000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">5.1180</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-53.67845</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.3341203</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-05-10</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">179528</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0000100</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">4.8500</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-53.67745</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.3340312</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-05-10</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">179525</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0000000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">4.8500</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-53.67744</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.3340303</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-04-26</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">177317</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0000019</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">5.0976</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-53.67744</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.3340303</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-04-14</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">175621</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0010000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">4.9597</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-53.67744</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.3340302</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-04-03</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">174138</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0000004</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">4.9520</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-53.67644</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.3339440</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-04-03</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">174128</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.1234568</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">4.9520</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-53.67644</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.3339439</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-03-27</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">173046</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.5000000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">4.8113</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-53.55298</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.3232978</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-03-23</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">172435</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0424242</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">4.6860</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-53.05298</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.2810005</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-03-21</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">172202</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-1.0000067</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">4.8149</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-53.01055</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.2774752</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-03-21</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">172165</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0100000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">4.8149</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-52.01055</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.1902341</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-03-21</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">172153</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0268877</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">4.8149</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-52.00055</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.1893448</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-03-07</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">170060</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0040000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">4.9375</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-51.97366</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.1869518</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-03-07</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">170052</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0040000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">4.9375</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-51.97766</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.1869518</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-02-11</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">166365</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0000000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">5.6005</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-51.97366</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.1865862</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-02-03</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">165214</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-1.0000000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">5.9593</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-51.97366</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.1865862</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-02-03</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">165084</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0100000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">5.9593</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-50.97366</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0733372</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-01-30</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">164467</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0100000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">5.4905</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-50.98366</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0733372</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2012-01-13</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">161943</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0010000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">6.4100</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-50.97366</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0722745</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2011-11-24</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">154568</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.8426597</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2.4321</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-50.97266</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0721502</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2011-10-02</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">147782</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0001004</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">5.0270</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-50.13000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0324806</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2011-09-26</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">146964</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0000000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">4.8697</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-50.12990</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0324706</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2011-08-11</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">140494</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0023000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">9.4625</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-50.12990</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0324706</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2011-07-08</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">135235</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0010000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">14.3140</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-50.12760</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0320379</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2011-07-06</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">134995</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0666000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">14.7835</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-50.12660</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0317530</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2011-06-17</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">131408</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0100000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">15.6810</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-50.06000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0121272</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2011-06-04</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">128554</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0100000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">18.8900</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-50.05000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0089966</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2011-06-01</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">127943</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0100000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">9.5700</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-50.04000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0052234</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2011-06-01</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">127909</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0000000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">9.5700</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-50.03000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0033116</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2011-05-28</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">127280</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0100000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">8.3001</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-50.03000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0033116</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2011-05-13</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">123723</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0100000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">8.1980</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-50.02000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0016529</td></tr>
<tr class="even" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2010-07-29</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">71036</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-0.0100000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0699</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-50.01000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0000140</td></tr>
<tr class="odd" style="box-sizing: border-box;"><td align="left" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">2009-01-03</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">1</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-50.0000000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">-50.00000</td><td align="right" style="border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; line-height: 1.42857143; padding: 5px; vertical-align: top;">0.0000000</td></tr>
</tbody></table>
</div>
<div>
<br /></div>
<div>
<br /></div>
</div>
samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com2tag:blogger.com,1999:blog-6922608948294168433.post-59537395892911480302017-08-30T13:09:00.003-07:002017-08-30T13:09:22.749-07:00Variable Selection with Multiple Response<div dir="ltr" style="text-align: left;" trbidi="on">
<a href="https://www.civisanalytics.com/blog/more-data-more-problems-variable-selection-with-multiple-response-variables/" target="_blank">Here</a><br /></div>
samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com0tag:blogger.com,1999:blog-6922608948294168433.post-42584281782932922792017-06-14T07:09:00.001-07:002017-06-14T07:09:43.966-07:00Dynamic Networks: Visualizing Arms Trades Over Time<div dir="ltr" style="text-align: left;" trbidi="on">
I previously made some network graphs of Middle East country relationships <a href="http://scweiss.blogspot.com/2014/07/mideast-graph-3-slate-middle-east.html" target="_blank">here</a> using Slate's <a href="http://www.slate.com/blogs/the_world_/2014/07/17/the_middle_east_friendship_chart.html" target="_blank">Middle East Friendship Chart</a>. I was thinking of a way to visualize these relationships (and possibly other ones) with more rule based and objective measure over time. What kind of public dataset could show countries relationships accurately?<br />
<br />
I used weapons / arms trades between nations to explore these relationships. I think arms trades are a good indicator of how friendly countries are together because 1) countries won't sell to enemies and 2) if a country wants to befriends country, buying weapons are a good way to do buy influence.<br />
<div>
<br /></div>
<div>
<a href="https://www.sipri.org/databases/armstransfers" target="_blank">SIPRI</a> has a very detailed dataset of international arms transfers between >257 nations / organizations in the post war era. The include a type / description and quantity for all trades. For this analysis I will use only the fact that two countries bought or sold some weapons for a particular year. </div>
<div>
<br /></div>
<div>
One can create adjacency matrices from this dataset and make some network plots. However, doing this one year at a time will not create have a smooth plots over time. I decided to use <a href="https://github.com/fchollet/keras/blob/master/examples/mnist_siamese_graph.py" target="_blank">siamese network graphs</a> to embed a country indicator and year variable in two dimensions with the response variable being whether or not countries traded arms in that particular year. This will transform the country and year of a country into a 2 dimensional space, and means if two points are near each other they probably traded in that particular year.<br />
<br />
You can check out the graph <a href="http://rpubs.com/sweiss/284033" target="_blank">her</a>e. It's cool that we can see Iran moving away from US to Russia / Soviet Union around 1979 while Egypt and Iraq move towards US. </div>
<div>
<br />
One can also explore other relationships. Below is a graph of relationships of the world in 1960. There is a Russia/ Soviet Union cluster and a US / Western Europe Cluster. Neat!<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirvyb-kl5nLYR7ssfSCMxq-x6YYtKwryhJf0bMMl1I4_1WT8cFhG_d0iVNVVe2W_cDqEvljAfMKRCjPBvsZJGnhTnBnN_RrooLv9pz-XUam08tCc_2CBcoBmzll0zsN2FiizvNEMIF92M/s1600/embed+1960.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="664" data-original-width="1051" height="403" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirvyb-kl5nLYR7ssfSCMxq-x6YYtKwryhJf0bMMl1I4_1WT8cFhG_d0iVNVVe2W_cDqEvljAfMKRCjPBvsZJGnhTnBnN_RrooLv9pz-XUam08tCc_2CBcoBmzll0zsN2FiizvNEMIF92M/s640/embed+1960.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both;">
Analysis was done in <a href="https://github.com/samcarlos/Dynamic_Network" target="_blank">python</a> (using the Keras example for siamese network) and R (for plotting).</div>
</div>
</div>
samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com1tag:blogger.com,1999:blog-6922608948294168433.post-34449951028386948842017-01-10T18:07:00.002-08:002017-01-10T18:07:51.384-08:00Will it Sell?<div dir="ltr" style="text-align: left;" trbidi="on">
The Lexus LC 500 has been introduced to much acclaim by car reviewers. Of notes are the cars decent steering, optional V-8 powertrain, and handling that borders on sports car rather than grand coupe. However, is there enough of a market for the Lexus to sell it's desired 4800 cars a year?<br />
<br />
To find out I produced a time series plot of yearly sales by probable competitors (thinking luxury coupes costing ~$100k. Of course these cars might appeal to different customers, but all can be bought by the same luxury seeking demographic (I'm think LA or Hamptons). Also included is the previous version of Lexus' luxury coupe, the SC.<br />
<br />
<img alt="" data-cke-saved-src="http://o.aolcdn.com/hss/storage/midas/235ebc012b63997a1da82ea0749501b9/204786253/ts_100k_coupes.png" data-credit="AOL" data-mep="1515225" src="https://o.aolcdn.com/hss/storage/midas/235ebc012b63997a1da82ea0749501b9/204786253/ts_100k_coupes.png" /><br />
<br />
(The general trends of competitors are similar in that they appear to be correlated with the economic environment of the time.)<br />
<br />
A dated and underwhelming car Lexus SC sold just under 4000 cars in 2007 and dropped off after that. It seems reasonable that if Lexus followed the script on a plush and luxurious coupe / convertible (think SL500 competitor) it could conceivably come up with 5000 cars a year which is approximate number of cars sold for the 3 competitors displayed, at least in its first years when its still new.<br />
<br />
However, Lexus did not follow the script of luxurious convertible that might appeal to its standard base but created a car exciting and involving, more 911 than SL500. Would the traditional Lexus SC buy want a Lexus CS? I doubt it. The CS seems like a drivers car and the SC was not. So previous sales of SC might not be a great indicator of future sales.<br />
<br />
More worrying for sales is that the Lexus does not have a convertible at the moment (although there is a concept). It seems hard to sell that many cars in this market without a convertible as all competitors do.<br />
<br />
It probably won't come close it its 4800 cars a year but sales probably aren't the point of this car. It probably will bring some much needed cred into the auto enthusiast community. What this car is then, is a halo car.</div>
samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com0tag:blogger.com,1999:blog-6922608948294168433.post-32120920840423960602016-06-07T20:00:00.001-07:002016-06-07T20:01:08.697-07:00Economist Liquidity Index<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="post-body entry-content" id="post-body-3408373234522042450" itemprop="description articleBody" style="background-color: white; color: #666666; font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13.2px; line-height: 1.4; position: relative; width: 546px;">
<div dir="ltr" trbidi="on">
<div id="header" style="box-sizing: border-box; font-family: 'helvetica neue', helvetica, arial, sans-serif; line-height: 20px;">
<h1 class="title" style="box-sizing: border-box; color: inherit; font-family: inherit; font-size: 36px; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px; position: relative;">
<span style="color: inherit; font-family: inherit; font-size: 30px; line-height: 1.1;">Introduction</span></h1>
<h1 class="title" style="box-sizing: border-box; font-family: inherit; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px; position: relative;">
<div id="header" style="box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 20px;">
</div>
<div class="section level2" id="introduction" style="box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 20px; margin: 0px 1em;">
<div style="box-sizing: border-box; font-size: 14px; margin-bottom: 10px;">
A typical article that discusses economics is awash with words that allude economics connection with water or a liquid. For Example: Markets get saturated when a competing country dumps its products on them Stock prices can get frothy and might develop into a bubble A credit squeeze will dampen expectations and sink prices People often talk of soaking the rich’s slush funds Floating more shares will dilute the value of a stock curiously in my opinion: During a credit drought a mortgage will become underwater and business might need a bailout and of course prices and inflate or deflate It is tempting to see the relation of how money flows through an economy and that prices inflate or deflate as money supply increases or decreases. And there has been serious effort to model money and markets as a flow.</div>
<div style="box-sizing: border-box; font-size: 14px; margin-bottom: 10px;">
The analogy of money or markets as a liquid that flows has a long history in economics. Francois Quesnay discussed the topic in 1758 as the <a href="https://en.wikipedia.org/wiki/Tableau_%C3%A9conomique" style="color: #888888; text-decoration: none;" target="_blank">Tableau economique</a>. Irving Fisher saw markets as the as <a href="http://judson.blogs.nytimes.com/2009/06/02/guest-column-like-water-for-money/" style="color: #888888; text-decoration: none;" target="_blank">“the flowing water..”</a>. Machines that model the economy as water called <a href="http://judson.blogs.nytimes.com/2009/06/02/guest-column-like-water-for-money/" style="color: #888888; text-decoration: none;" target="_blank">“Phillipes Machines”</a>were built in the 1940’s. Perhaps even Monetarists could be included in this line of thought by considering the equation <a href="https://en.wikipedia.org/wiki/Velocity_of_money" style="color: #888888; text-decoration: none;" target="_blank">MV=PQ</a> (money velocity = prices * quantity) by discussing the flow of money through an economy. However, from a theoretical point of view It is hard to reconcile this concept with<a href="https://research.stlouisfed.org/fred2/series/BASE" style="color: #888888; text-decoration: none;" target="_blank">recent developments</a>.. but thats another topic.</div>
<div style="box-sizing: border-box; font-size: 14px; margin-bottom: 10px;">
This post will explore how layman financial / economics articles that discuss the ‘liquidity’ of markets evolve over time using The Economist articles since 1998.</div>
<div style="box-sizing: border-box; font-size: 14px; margin-bottom: 10px;">
Since articles can discuss multiple topics (politics, regions, science, etc), paragraphs are the basic unit of data (bag of words) and each is assign a probability to whether the paragraph discusses economics.</div>
<div style="box-sizing: border-box; font-size: 14px; margin-bottom: 10px;">
If a paragraph includes a ‘liquidity’ word (discussed below) then the paragraphs probability of economics will be used as part of the index (to account for possibility that the article is not about economics).</div>
<div style="box-sizing: border-box; font-size: 14px; margin-bottom: 10px;">
An aggregated score by week is then calculated. Below is the resulting scaled time series of all ‘liquidity’ words along ‘inflat’ and ‘deflat’ (since these are actually technical terms I felt that they should be treated separately from the other liquidity words such as “bubble” in which some economists find that term vacuous).</div>
<div style="box-sizing: border-box; font-size: 14px; margin-bottom: 10px;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqfeXdp8OVmUTw3FtYbzsZWUWorTdICfE35aYxgyOQ85WR0gZuutn5bXdQvJJ3ulq5Kf3FWhEaKKr5aS0zd5ozekrpKaq601aCDejG3Vnl5nj2TCWv57VBTcnBsSCIT6UVXntcUDr6V5E/s1600/TS_Indicies.png" imageanchor="1" style="font-size: 26.4px; margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="492" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqfeXdp8OVmUTw3FtYbzsZWUWorTdICfE35aYxgyOQ85WR0gZuutn5bXdQvJJ3ulq5Kf3FWhEaKKr5aS0zd5ozekrpKaq601aCDejG3Vnl5nj2TCWv57VBTcnBsSCIT6UVXntcUDr6V5E/s640/TS_Indicies.png" width="640" /></a></div>
<div style="box-sizing: border-box; font-size: 14px; margin-bottom: 10px;">
Of course this is a very messy index, but we do see spikes of “liquidity” index around the financial crises at the end of 2007, a rise in ‘inflat’ index before that date and at least two spikes in ‘deflat’ index around 2003 and 2015.</div>
<div style="box-sizing: border-box; font-size: 14px; margin-bottom: 10px;">
To smooth out the signal, I made a simple local linear trend model for each index and extracted the states. Below are the time series of the states.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh9rJoMbxN2TIQwEpPgFWqsgMD4qm56m_EEOof-TtPgZ-xpYszpxKibAQshr59tP64ZEzkpR3lEPtgEBc7M_Z2MPwjgV0EJBeVCb0nrGwDr7hQocICzpNpmpSe8yY9y3ckCJfeZ2uvWO0/s1600/indicty_states.png" imageanchor="1" style="font-size: 26.4px; margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="495" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh9rJoMbxN2TIQwEpPgFWqsgMD4qm56m_EEOof-TtPgZ-xpYszpxKibAQshr59tP64ZEzkpR3lEPtgEBc7M_Z2MPwjgV0EJBeVCb0nrGwDr7hQocICzpNpmpSe8yY9y3ckCJfeZ2uvWO0/s640/indicty_states.png" width="640" /></a><br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="box-sizing: border-box; font-size: 14px; margin-bottom: 10px;">
From around 2005 to mid 2007 ‘inflat’ occurred at an increasing rate in Economists articles. You can see this index sink very fast, just as the ‘liquidity index’ reached its height during the financial crises. Finally, it’s noteworthy that the most recent blip of discussion is deflation in 2015.</div>
<div style="box-sizing: border-box; font-size: 14px; margin-bottom: 10px;">
I thought the liquidity index I created looked like the VIX index so I plotted both scaled series below.</div>
<div style="box-sizing: border-box; font-size: 14px; margin-bottom: 10px;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqwT8Uk7QJEBLAuGfRpvSn4_0sUNw1V5IX9gsuZbYJhIuSQ3EkMnWeYbM11TpiET8b36EwzlT5s68FoxfkJBZ6n-TiyLAgmfpEekj1ck30MujHIw-X-tF2AjVU3rE1PD1xOSEG_Re6St4/s1600/indicy_states_vix.png" imageanchor="1" style="font-size: 26.4px; margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="492" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqwT8Uk7QJEBLAuGfRpvSn4_0sUNw1V5IX9gsuZbYJhIuSQ3EkMnWeYbM11TpiET8b36EwzlT5s68FoxfkJBZ6n-TiyLAgmfpEekj1ck30MujHIw-X-tF2AjVU3rE1PD1xOSEG_Re6St4/s640/indicy_states_vix.png" width="640" /></a></div>
<div style="box-sizing: border-box; font-size: 14px; margin-bottom: 10px;">
They do appear to increase and decrease at same rate, but not perfectly. But maybe if I’m too busy to read The Economist for a particular week, I can just check the VIX and infer how much they talk about liquidity.</div>
<div style="box-sizing: border-box; font-size: 14px; margin-bottom: 10px;">
Outline of Code: </div>
<div style="box-sizing: border-box; margin-bottom: 10px;">
</div>
<ul style="line-height: 1.4; margin: 0.5em 0px; padding: 0px 2.5em;">
<li style="font-size: 14px; margin: 0px 0px 0.25em; padding: 0px;">Scraped the economist articles Classified which paragraphs discussed business / economics / financial topics. </li>
<li style="font-size: 14px; margin: 0px 0px 0.25em; padding: 0px;">Applied model to all paragraphs and ended with prob(economics) - find more information on methodology <a href="http://scweiss.blogspot.com/2016/05/when-predictions-are-more-accurate-than.html" style="color: #888888; text-decoration: none;" target="_blank">here</a> </li>
<li style="margin: 0px 0px 0.25em; padding: 0px;"><span style="font-size: 14px;">Created corpus of words that are affiliated with the concept of ‘liquidity’ or ‘water’ in relation to economics - did this through word2vec and manually seeing which words were associated with liquidity. for instance, i found illiquid was similar to liquid so included that in the corpus. i continued this manual process until i couldn’t find any more words. I thought word2vec could be more precise in this regard and I could just find a “liquidity vector” thats similar to the words I’m looking for but this wasn’t the case. Below are words I found that I thought were appropriate </span><span style="font-size: xx-small;">(“soak”,“mop”, “bubble”,“burst”,“pop”,“frothy”,“saturate”, “liquid”,“deflat”,“choppy”,“topsy”,“mop”,“squeeze”,“damp”,“headwinds”,“dilute”,“sink”, “flow”,“inflat”,“solvent”,“ripple”,“pressure”,“expansion”,“untapped”,“reservoir”,“tap”,“funnel”,“fusion”,“pump”,“bail”,“absorb”,“intake”,“draining”,“meltdown”,“bursts”,“implos”,“explos”,“ripple”,“flotations”,“float”,“sink”,“dump”,“circul”,“spew”,“swell”,“pour”,“splashing”,“flood”,“draught”,“dry”,“reservoirs”, “reservoirs”,“fluid”,“droplets”,“dissolve”) </span></li>
<li style="font-size: 14px; margin: 0px 0px 0.25em; padding: 0px;">Created an ‘index’ by multiplying the prob(economics)*Indicator(word included) for each paragraph and summing this value by week </li>
<li style="font-size: 14px; margin: 0px 0px 0.25em; padding: 0px;">Built state-space models for index to smooth values </li>
<li style="font-size: 14px; margin: 0px 0px 0.25em; padding: 0px;">Found liquidity state sort of follows VIX index.</li>
</ul>
<br />
<pre class="r" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; overflow: auto; padding: 9.5px; word-break: break-all; word-wrap: break-word;"><code class="r" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;"><span class="identifier" style="box-sizing: border-box; color: black;">year_links</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">function</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">year</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">{</span>
<span class="identifier" style="box-sizing: border-box; color: black;">url</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">paste0</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"http://www.economist.com/printedition/covers?print_region=76980&date_filter%5Bvalue%5D%5Byear%5D="</span>,<span class="identifier" style="box-sizing: border-box; color: black;">year</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">doc</span> <span class="operator" style="box-sizing: border-box; color: #687687;">=</span> <span class="identifier" style="box-sizing: border-box; color: black;">htmlTreeParse</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">url</span>, <span class="identifier" style="box-sizing: border-box; color: black;">useInternalNodes</span> <span class="operator" style="box-sizing: border-box; color: #687687;">=</span> <span class="literal" style="box-sizing: border-box; color: #990073;">T</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">text</span> <span class="operator" style="box-sizing: border-box; color: #687687;">=</span> <span class="identifier" style="box-sizing: border-box; color: black;">xpathSApply</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">doc</span>, <span class="string" style="box-sizing: border-box; color: #dd1144;">"//a"</span>, <span class="identifier" style="box-sizing: border-box; color: black;">xmlValue</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">src</span> <span class="operator" style="box-sizing: border-box; color: #687687;">=</span> <span class="identifier" style="box-sizing: border-box; color: black;">xpathApply</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">doc</span>, <span class="string" style="box-sizing: border-box; color: #dd1144;">"//a[@href]"</span>, <span class="identifier" style="box-sizing: border-box; color: black;">xmlGetAttr</span>, <span class="string" style="box-sizing: border-box; color: #dd1144;">"href"</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">links</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">unlist</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">src</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">links</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">links</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="identifier" style="box-sizing: border-box; color: black;">grep</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paste0</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"printedition/"</span>,<span class="identifier" style="box-sizing: border-box; color: black;">year</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>,<span class="identifier" style="box-sizing: border-box; color: black;">links</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>
<span class="identifier" style="box-sizing: border-box; color: black;">links_editions</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">paste0</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"http://www.economist.com"</span>,<span class="identifier" style="box-sizing: border-box; color: black;">links</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">links_editions</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">unique</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">links_editions</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">return</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">links_editions</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="paren" style="box-sizing: border-box; color: #687687;">}</span>
<span class="identifier" style="box-sizing: border-box; color: black;">weekly_links</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">lapply</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="number" style="box-sizing: border-box; color: #009999;">1998</span><span class="operator" style="box-sizing: border-box; color: #687687;">:</span><span class="number" style="box-sizing: border-box; color: #009999;">2015</span>, <span class="identifier" style="box-sizing: border-box; color: black;">year_links</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">weekly_links</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">unlist</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">weekly_links</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;"># </span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;"># doc = htmlTreeParse(links_editions[1], useInternalNodes = T)</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;"># src = xpathApply(doc2, "//a[@href]", xmlGetAttr, "href")</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;"># links_week=unlist(src)</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;"># links_week=links_week[grep("news",links_week)]</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;"># </span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;"># </span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;"># </span>
<span class="identifier" style="box-sizing: border-box; color: black;">links_editions</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">weekly_links</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="number" style="box-sizing: border-box; color: #009999;">2</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>
<span class="identifier" style="box-sizing: border-box; color: black;">scrape_articles</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">function</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">links_editions</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">{</span>
<span class="identifier" style="box-sizing: border-box; color: black;">doc</span> <span class="operator" style="box-sizing: border-box; color: #687687;">=</span> <span class="identifier" style="box-sizing: border-box; color: black;">htmlTreeParse</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">links_editions</span>, <span class="identifier" style="box-sizing: border-box; color: black;">useInternalNodes</span> <span class="operator" style="box-sizing: border-box; color: #687687;">=</span> <span class="literal" style="box-sizing: border-box; color: #990073;">T</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">src</span> <span class="operator" style="box-sizing: border-box; color: #687687;">=</span> <span class="identifier" style="box-sizing: border-box; color: black;">xpathApply</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">doc</span>, <span class="string" style="box-sizing: border-box; color: #dd1144;">"//a[@href]"</span>, <span class="identifier" style="box-sizing: border-box; color: black;">xmlGetAttr</span>, <span class="string" style="box-sizing: border-box; color: #dd1144;">"href"</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">links_week</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">unlist</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">src</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">links_week</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">links_week</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="identifier" style="box-sizing: border-box; color: black;">unique</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">c</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">grep</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"node"</span>,<span class="identifier" style="box-sizing: border-box; color: black;">links_week</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>, <span class="identifier" style="box-sizing: border-box; color: black;">grep</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"news"</span>,<span class="identifier" style="box-sizing: border-box; color: black;">links_week</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>
<span class="identifier" style="box-sizing: border-box; color: black;">links_week</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">paste0</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"http://www.economist.com"</span>,<span class="identifier" style="box-sizing: border-box; color: black;">links_week</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">text1</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">vector</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">length</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">length</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">links_week</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">for</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">i</span> <span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">in</span> <span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="operator" style="box-sizing: border-box; color: #687687;">:</span><span class="identifier" style="box-sizing: border-box; color: black;">length</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">links_week</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">{</span>
<span class="identifier" style="box-sizing: border-box; color: black;">doc</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span> <span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">tryCatch</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">htmlTreeParse</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">links_week</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="identifier" style="box-sizing: border-box; color: black;">i</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>, <span class="identifier" style="box-sizing: border-box; color: black;">useInternalNodes</span> <span class="operator" style="box-sizing: border-box; color: #687687;">=</span> <span class="literal" style="box-sizing: border-box; color: #990073;">T</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>, <span class="identifier" style="box-sizing: border-box; color: black;">error</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">function</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">e</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span> <span class="literal" style="box-sizing: border-box; color: #990073;">NULL</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">if</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="operator" style="box-sizing: border-box; color: #687687;">!</span> <span class="identifier" style="box-sizing: border-box; color: black;">is.null</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">doc</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span> <span class="paren" style="box-sizing: border-box; color: #687687;">{</span><span class="identifier" style="box-sizing: border-box; color: black;">text</span> <span class="operator" style="box-sizing: border-box; color: #687687;">=</span> <span class="identifier" style="box-sizing: border-box; color: black;">xpathSApply</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">doc</span>, <span class="string" style="box-sizing: border-box; color: #dd1144;">'//*[contains(concat( " ", @class, " " ), concat( " ", "main-content", " " ))]'</span>, <span class="identifier" style="box-sizing: border-box; color: black;">xmlValue</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span> <span class="paren" style="box-sizing: border-box; color: #687687;">}</span>
<span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">if</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">length</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">text</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;">!=</span><span class="number" style="box-sizing: border-box; color: #009999;">0</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span> <span class="paren" style="box-sizing: border-box; color: #687687;">{</span><span class="identifier" style="box-sizing: border-box; color: black;">text1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="identifier" style="box-sizing: border-box; color: black;">i</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">text</span><span class="paren" style="box-sizing: border-box; color: #687687;">}</span>
<span class="paren" style="box-sizing: border-box; color: #687687;">}</span>
<span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">return</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">cbind</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">edition</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">rep</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">links_editions</span>,<span class="identifier" style="box-sizing: border-box; color: black;">length</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">links_week</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>,<span class="identifier" style="box-sizing: border-box; color: black;">link</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">links_week</span>, <span class="identifier" style="box-sizing: border-box; color: black;">text1</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="paren" style="box-sizing: border-box; color: #687687;">}</span>
<span class="identifier" style="box-sizing: border-box; color: black;">articles</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">lapply</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">weekly_links</span>,<span class="identifier" style="box-sizing: border-box; color: black;">scrape_articles</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">articles1</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">do.call</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">rbind</span>,<span class="identifier" style="box-sizing: border-box; color: black;">articles</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;">#extract dates</span>
<span class="identifier" style="box-sizing: border-box; color: black;">articles1</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">cbind</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">articles1</span>,<span class="identifier" style="box-sizing: border-box; color: black;">date</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">gsub</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"http://www.economist.com/printedition/"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">""</span>, <span class="identifier" style="box-sizing: border-box; color: black;">articles1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;">#remove small articles</span>
<span class="identifier" style="box-sizing: border-box; color: black;">articles1</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">articles1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="identifier" style="box-sizing: border-box; color: black;">which</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">nchar</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">articles1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="number" style="box-sizing: border-box; color: #009999;">3</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;"><</span><span class="number" style="box-sizing: border-box; color: #009999;">550</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>,<span class="paren" style="box-sizing: border-box; color: #687687;">]</span>
<span class="identifier" style="box-sizing: border-box; color: black;">articles1</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">cbind</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">articles1</span>,<span class="identifier" style="box-sizing: border-box; color: black;">numeric_date</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">as.numeric</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">as.Date</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">articles1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"date"</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">library</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">stringr</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;">##clean up text /split articles into paragraphs</span>
<span class="identifier" style="box-sizing: border-box; color: black;">articles_text</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">str_replace_all</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">articles1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="number" style="box-sizing: border-box; color: #009999;">3</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>, <span class="string" style="box-sizing: border-box; color: #dd1144;">"[^[:alnum:]]"</span>, <span class="string" style="box-sizing: border-box; color: #dd1144;">" "</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">link_articles</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">rep</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span> <span class="identifier" style="box-sizing: border-box; color: black;">unlist</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">lapply</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraphs</span>,<span class="identifier" style="box-sizing: border-box; color: black;">length</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">paragraphs</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">strsplit</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">articles1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="number" style="box-sizing: border-box; color: #009999;">3</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>, <span class="string" style="box-sizing: border-box; color: #dd1144;">"\n"</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">date_articles</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">rep</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">articles1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"date"</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>,<span class="identifier" style="box-sizing: border-box; color: black;">unlist</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">lapply</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraphs</span>,<span class="identifier" style="box-sizing: border-box; color: black;">length</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">link_articles</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">rep</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">articles1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"link"</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>,<span class="identifier" style="box-sizing: border-box; color: black;">unlist</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">lapply</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraphs</span>,<span class="identifier" style="box-sizing: border-box; color: black;">length</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;">##remove small size paragraphs</span>
<span class="identifier" style="box-sizing: border-box; color: black;">paragraphs_1</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">unlist</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraphs</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">paragraphs_2</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraphs_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="identifier" style="box-sizing: border-box; color: black;">which</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">nchar</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraphs_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;"><</span><span class="number" style="box-sizing: border-box; color: #009999;">90</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>
<span class="identifier" style="box-sizing: border-box; color: black;">link_articles_2</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">link_articles</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="identifier" style="box-sizing: border-box; color: black;">which</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">nchar</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraphs_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;"><</span><span class="number" style="box-sizing: border-box; color: #009999;">90</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>
<span class="identifier" style="box-sizing: border-box; color: black;">date_articles_2</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">date_articles</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="identifier" style="box-sizing: border-box; color: black;">which</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">nchar</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraphs_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;"><</span><span class="number" style="box-sizing: border-box; color: #009999;">90</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>
<span class="identifier" style="box-sizing: border-box; color: black;">link_articles_2</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">link_articles</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="identifier" style="box-sizing: border-box; color: black;">which</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">nchar</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraphs_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;"><</span><span class="number" style="box-sizing: border-box; color: #009999;">90</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>
<span class="identifier" style="box-sizing: border-box; color: black;">paragraph_date</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">cbind</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">date_articles_2</span>,<span class="identifier" style="box-sizing: border-box; color: black;">paragraphs_2</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">economist_paragraph_section</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">unlist</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">lapply</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">strsplit</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">link_articles_2</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"/"</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>, <span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">function</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">x</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span> <span class="identifier" style="box-sizing: border-box; color: black;">x</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="number" style="box-sizing: border-box; color: #009999;">5</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;">#create article class</span>
<span class="identifier" style="box-sizing: border-box; color: black;">economist_sections</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">c</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"united-states"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"middle-east-and-africa"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"europe"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"finance-and-economics"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"business"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"britain"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"books-and-arts"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"asia"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"science-and-technology"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"americas"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"china"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"business-and-finance"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"international"</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">economist_paragraph_section_target</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">economist_paragraph_section</span>
<span class="identifier" style="box-sizing: border-box; color: black;">economist_paragraph_section_target</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="identifier" style="box-sizing: border-box; color: black;">which</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">economist_paragraph_section_target</span> <span class="operator" style="box-sizing: border-box; color: #687687;">%in%</span> <span class="identifier" style="box-sizing: border-box; color: black;">economist_sections</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="string" style="box-sizing: border-box; color: #dd1144;">""</span>
<span class="identifier" style="box-sizing: border-box; color: black;">paragraphs_3</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">str_replace_all</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraphs_2</span>, <span class="string" style="box-sizing: border-box; color: #dd1144;">"[^[:alnum:]]"</span>, <span class="string" style="box-sizing: border-box; color: #dd1144;">" "</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">paragraphs_3</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">iconv</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraphs_3</span>, <span class="identifier" style="box-sizing: border-box; color: black;">to</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="string" style="box-sizing: border-box; color: #dd1144;">'ASCII//TRANSLIT'</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;">##create term document matrix for classification </span>
<span class="identifier" style="box-sizing: border-box; color: black;">it</span> <span class="operator" style="box-sizing: border-box; color: #687687;"><-</span> <span class="identifier" style="box-sizing: border-box; color: black;">itoken</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraphs_3</span>,
<span class="identifier" style="box-sizing: border-box; color: black;">preprocess_function</span> <span class="operator" style="box-sizing: border-box; color: #687687;">=</span> <span class="identifier" style="box-sizing: border-box; color: black;">tolower</span>,
<span class="identifier" style="box-sizing: border-box; color: black;">tokenizer</span> <span class="operator" style="box-sizing: border-box; color: #687687;">=</span> <span class="identifier" style="box-sizing: border-box; color: black;">word_tokenizer</span>,
<span class="identifier" style="box-sizing: border-box; color: black;">ids</span> <span class="operator" style="box-sizing: border-box; color: #687687;">=</span> <span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="operator" style="box-sizing: border-box; color: #687687;">:</span><span class="identifier" style="box-sizing: border-box; color: black;">length</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraphs_3</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">vocab</span> <span class="operator" style="box-sizing: border-box; color: #687687;"><-</span> <span class="identifier" style="box-sizing: border-box; color: black;">create_vocabulary</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">it</span>, <span class="identifier" style="box-sizing: border-box; color: black;">stopwords</span> <span class="operator" style="box-sizing: border-box; color: #687687;">=</span> <span class="identifier" style="box-sizing: border-box; color: black;">sw</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;"># Each element of list represents document</span>
<span class="identifier" style="box-sizing: border-box; color: black;">tokens</span> <span class="operator" style="box-sizing: border-box; color: #687687;"><-</span> <span class="identifier" style="box-sizing: border-box; color: black;">paragraphs_3</span><span class="operator" style="box-sizing: border-box; color: #687687;">%>%</span>
<span class="identifier" style="box-sizing: border-box; color: black;">tolower</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span> <span class="operator" style="box-sizing: border-box; color: #687687;">%>%</span>
<span class="identifier" style="box-sizing: border-box; color: black;">word_tokenizer</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">it</span> <span class="operator" style="box-sizing: border-box; color: #687687;"><-</span> <span class="identifier" style="box-sizing: border-box; color: black;">itoken</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">tokens</span>, <span class="identifier" style="box-sizing: border-box; color: black;">ids</span> <span class="operator" style="box-sizing: border-box; color: #687687;">=</span> <span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="operator" style="box-sizing: border-box; color: #687687;">:</span><span class="identifier" style="box-sizing: border-box; color: black;">length</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraphs_3</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">vocab</span> <span class="operator" style="box-sizing: border-box; color: #687687;"><-</span> <span class="identifier" style="box-sizing: border-box; color: black;">create_vocabulary</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">it</span>, <span class="identifier" style="box-sizing: border-box; color: black;">stopwords</span> <span class="operator" style="box-sizing: border-box; color: #687687;">=</span> <span class="identifier" style="box-sizing: border-box; color: black;">sw</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">it</span> <span class="operator" style="box-sizing: border-box; color: #687687;"><-</span> <span class="identifier" style="box-sizing: border-box; color: black;">itoken</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">tokens</span>, <span class="identifier" style="box-sizing: border-box; color: black;">ids</span> <span class="operator" style="box-sizing: border-box; color: #687687;">=</span> <span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="operator" style="box-sizing: border-box; color: #687687;">:</span><span class="identifier" style="box-sizing: border-box; color: black;">length</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraphs_3</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;"># Or</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;"># it <- itoken(movie_review$review, tolower, word_tokenizer, ids = movie_review$id)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">vectorizer</span> <span class="operator" style="box-sizing: border-box; color: #687687;"><-</span> <span class="identifier" style="box-sizing: border-box; color: black;">vocab_vectorizer</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">vocab</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">dtm</span> <span class="operator" style="box-sizing: border-box; color: #687687;"><-</span> <span class="identifier" style="box-sizing: border-box; color: black;">create_dtm</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">it</span>, <span class="identifier" style="box-sizing: border-box; color: black;">vectorizer</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">dtm_1</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">dtm</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="identifier" style="box-sizing: border-box; color: black;">which</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">economist_paragraph_section_target</span><span class="operator" style="box-sizing: border-box; color: #687687;">==</span><span class="string" style="box-sizing: border-box; color: #dd1144;">""</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>,<span class="paren" style="box-sizing: border-box; color: #687687;">]</span>
<span class="identifier" style="box-sizing: border-box; color: black;">economist_paragraph_section_target_1</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">economist_paragraph_section_target</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="identifier" style="box-sizing: border-box; color: black;">which</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">economist_paragraph_section_target</span><span class="operator" style="box-sizing: border-box; color: #687687;">==</span><span class="string" style="box-sizing: border-box; color: #dd1144;">""</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>
<span class="identifier" style="box-sizing: border-box; color: black;">economist_paragraph_section_target_2</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">rep</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="number" style="box-sizing: border-box; color: #009999;">0</span>,<span class="identifier" style="box-sizing: border-box; color: black;">length</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">economist_paragraph_section_target_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">economist_paragraph_section_target_2</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="identifier" style="box-sizing: border-box; color: black;">which</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">economist_paragraph_section_target_1</span> <span class="operator" style="box-sizing: border-box; color: #687687;">%in%</span> <span class="identifier" style="box-sizing: border-box; color: black;">c</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"business"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"business-and-finance"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"finance-and-economics"</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span>
<span class="identifier" style="box-sizing: border-box; color: black;">word_sums</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">colSums</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">dtm_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">dtm_1</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">dtm_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="identifier" style="box-sizing: border-box; color: black;">which</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">word_sums</span><span class="operator" style="box-sizing: border-box; color: #687687;"><</span><span class="number" style="box-sizing: border-box; color: #009999;">10</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;">#build model and predict on all text</span>
<span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">library</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">glmnet</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">require</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">doMC</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">registerDoMC</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">cores</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="number" style="box-sizing: border-box; color: #009999;">4</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">glmnet</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">cv.glmnet</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">dtm_1</span>,<span class="identifier" style="box-sizing: border-box; color: black;">economist_paragraph_section_target_2</span>,<span class="identifier" style="box-sizing: border-box; color: black;">parallel</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="literal" style="box-sizing: border-box; color: #990073;">TRUE</span>,<span class="identifier" style="box-sizing: border-box; color: black;">family</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"binomial"</span>,<span class="identifier" style="box-sizing: border-box; color: black;">type.measure</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"auc"</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">pred_glmnet</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">predict</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">dtm</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="identifier" style="box-sizing: border-box; color: black;">which</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">word_sums</span><span class="operator" style="box-sizing: border-box; color: #687687;"><</span><span class="number" style="box-sizing: border-box; color: #009999;">10</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>, <span class="identifier" style="box-sizing: border-box; color: black;">s</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="string" style="box-sizing: border-box; color: #dd1144;">'lambda.min'</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">paragraphs_3</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="identifier" style="box-sizing: border-box; color: black;">order</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">pred_glmnet</span>,<span class="identifier" style="box-sizing: border-box; color: black;">decreasing</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="literal" style="box-sizing: border-box; color: #990073;">TRUE</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="operator" style="box-sizing: border-box; color: #687687;">:</span><span class="number" style="box-sizing: border-box; color: #009999;">10</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>
<span class="identifier" style="box-sizing: border-box; color: black;">pred_glmnet</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">dtm</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="identifier" style="box-sizing: border-box; color: black;">which</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">word_sums</span><span class="operator" style="box-sizing: border-box; color: #687687;"><</span><span class="number" style="box-sizing: border-box; color: #009999;">10</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="operator" style="box-sizing: border-box; color: #687687;">%*%</span><span class="identifier" style="box-sizing: border-box; color: black;">coef</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">glmnet</span>,<span class="identifier" style="box-sizing: border-box; color: black;">s</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="string" style="box-sizing: border-box; color: #dd1144;">'lambda.min'</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span>,<span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="operator" style="box-sizing: border-box; color: #687687;">+</span><span class="identifier" style="box-sizing: border-box; color: black;">coef</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">glmnet</span>,<span class="identifier" style="box-sizing: border-box; color: black;">s</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="string" style="box-sizing: border-box; color: #dd1144;">'lambda.min'</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span>,<span class="paren" style="box-sizing: border-box; color: #687687;">]</span>
<span class="identifier" style="box-sizing: border-box; color: black;">prob_glmnet</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="identifier" style="box-sizing: border-box; color: black;">exp</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="identifier" style="box-sizing: border-box; color: black;">pred_glmnet</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;">/</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="operator" style="box-sizing: border-box; color: #687687;">+</span><span class="identifier" style="box-sizing: border-box; color: black;">exp</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="identifier" style="box-sizing: border-box; color: black;">pred_glmnet</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;">##words to use</span>
<span class="identifier" style="box-sizing: border-box; color: black;">words</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">unique</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">c</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"soak"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"mop"</span>, <span class="string" style="box-sizing: border-box; color: #dd1144;">"bubble"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"burst"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"pop"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"frothy"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"saturate"</span>, <span class="string" style="box-sizing: border-box; color: #dd1144;">"liquid"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"deflat"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"choppy"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"topsy"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"mop"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"squeeze"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"damp"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"headwinds"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"dilute"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"sink"</span>,
<span class="string" style="box-sizing: border-box; color: #dd1144;">"flow"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"inflat"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"solvent"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"ripple"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"pressure"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"expansion"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"untapped"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"reservoir"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"tap"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"funnel"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"fusion"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"pump"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"bail"</span>,
<span class="string" style="box-sizing: border-box; color: #dd1144;">"absorb"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"intake"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"draining"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"meltdown"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"bursts"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"implos"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"explos"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"ripple"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"flotations"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"float"</span> ,<span class="string" style="box-sizing: border-box; color: #dd1144;">"sink"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"dump"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"circul"</span>,
<span class="string" style="box-sizing: border-box; color: #dd1144;">"spew"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"swell"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"pressure"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"pour"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"splashing"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"flood"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"draught"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"dry"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"reservoirs"</span>,
<span class="string" style="box-sizing: border-box; color: #dd1144;">"reservoirs"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"fluid"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"droplets"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"dissolve"</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">business_economics_predictions</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">prob_glmnet</span>
<span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">library</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">parallel</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;">#see if word is in a paragraph</span>
<span class="identifier" style="box-sizing: border-box; color: black;">is_included</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">mclapply</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">words</span>, <span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">function</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">x</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span> <span class="identifier" style="box-sizing: border-box; color: black;">grepl</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">x</span>,<span class="identifier" style="box-sizing: border-box; color: black;">paragraphs_3</span>,<span class="identifier" style="box-sizing: border-box; color: black;">ignore.case</span> <span class="operator" style="box-sizing: border-box; color: #687687;">=</span> <span class="literal" style="box-sizing: border-box; color: #990073;">FALSE</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>, <span class="identifier" style="box-sizing: border-box; color: black;">mc.cores</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="number" style="box-sizing: border-box; color: #009999;">4</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">is_included_1</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">do.call</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">cbind</span>,<span class="identifier" style="box-sizing: border-box; color: black;">is_included</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">liquidity_words</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">rowSums</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">is_included_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="identifier" style="box-sizing: border-box; color: black;">which</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">words</span> <span class="operator" style="box-sizing: border-box; color: #687687;">%in%</span> <span class="identifier" style="box-sizing: border-box; color: black;">c</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"inflat"</span>, <span class="string" style="box-sizing: border-box; color: #dd1144;">"deflat"</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;">*</span><span class="identifier" style="box-sizing: border-box; color: black;">business_economics_predictions</span>
<span class="identifier" style="box-sizing: border-box; color: black;">inflat_words</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">is_included_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="identifier" style="box-sizing: border-box; color: black;">which</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">words</span> <span class="operator" style="box-sizing: border-box; color: #687687;">%in%</span> <span class="identifier" style="box-sizing: border-box; color: black;">c</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"inflat"</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;">*</span><span class="identifier" style="box-sizing: border-box; color: black;">business_economics_predictions</span>
<span class="identifier" style="box-sizing: border-box; color: black;">deflat_words</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">is_included_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="identifier" style="box-sizing: border-box; color: black;">which</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">words</span> <span class="operator" style="box-sizing: border-box; color: #687687;">%in%</span> <span class="identifier" style="box-sizing: border-box; color: black;">c</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"deflat"</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;">*</span><span class="identifier" style="box-sizing: border-box; color: black;">business_economics_predictions</span>
<span class="identifier" style="box-sizing: border-box; color: black;">all_words</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">is_included_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;">*</span><span class="identifier" style="box-sizing: border-box; color: black;">business_economics_predictions</span>
<span class="identifier" style="box-sizing: border-box; color: black;">date_articles_3</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">date_articles_2</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;">##aggregate by week</span>
<span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">library</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">dplyr</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">count_dates</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">as.data.frame</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">cbind</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">liquidity_words</span>,<span class="identifier" style="box-sizing: border-box; color: black;">inflat_words</span>,<span class="identifier" style="box-sizing: border-box; color: black;">deflat_words</span>,<span class="identifier" style="box-sizing: border-box; color: black;">date</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">date_articles_2</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">count_dates</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">as.numeric</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">as.character</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">count_dates</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">count_dates</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="number" style="box-sizing: border-box; color: #009999;">2</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">as.numeric</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">as.character</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">count_dates</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="number" style="box-sizing: border-box; color: #009999;">2</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">count_dates</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="number" style="box-sizing: border-box; color: #009999;">3</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">as.numeric</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">as.character</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">count_dates</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="number" style="box-sizing: border-box; color: #009999;">3</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">count_dates</span><span class="operator" style="box-sizing: border-box; color: #687687;">$</span><span class="identifier" style="box-sizing: border-box; color: black;">prob</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">business_economics_predictions</span>
<span class="identifier" style="box-sizing: border-box; color: black;">data_date</span> <span class="operator" style="box-sizing: border-box; color: #687687;"><-</span> <span class="identifier" style="box-sizing: border-box; color: black;">group_by</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">count_dates</span>, <span class="identifier" style="box-sizing: border-box; color: black;">date</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">index_by_date</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">summarise</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">data_date</span>, <span class="identifier" style="box-sizing: border-box; color: black;">liquidity_words</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">sum</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">liquidity_words</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>,<span class="identifier" style="box-sizing: border-box; color: black;">inflat_words</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">sum</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">inflat_words</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>,<span class="identifier" style="box-sizing: border-box; color: black;">deflat_words</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">sum</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">deflat_words</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>,<span class="identifier" style="box-sizing: border-box; color: black;">prob</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">sum</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">prob</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">index_by_date_1</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">as.data.frame</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">index_by_date</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">index_by_date_scaled</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">index_by_date_1</span>
<span class="identifier" style="box-sizing: border-box; color: black;">index_by_date_scaled</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">apply</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">index_by_date_scaled</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>,<span class="number" style="box-sizing: border-box; color: #009999;">2</span>,<span class="identifier" style="box-sizing: border-box; color: black;">scale</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">index_by_date_melt</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">melt</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">index_by_date_scaled</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="number" style="box-sizing: border-box; color: #009999;">5</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">library</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">reshape</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">library</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">ggplot2</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">index_plot</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">ggplot</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">index_by_date_melt</span>, <span class="identifier" style="box-sizing: border-box; color: black;">aes</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">x</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">as.Date</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">date</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>, <span class="identifier" style="box-sizing: border-box; color: black;">y</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">value</span>, <span class="identifier" style="box-sizing: border-box; color: black;">group</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">variable</span>,<span class="identifier" style="box-sizing: border-box; color: black;">colour</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">variable</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span> <span class="operator" style="box-sizing: border-box; color: #687687;">+</span> <span class="identifier" style="box-sizing: border-box; color: black;">geom_line</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;">+</span> <span class="identifier" style="box-sizing: border-box; color: black;">scale_x_date</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;">+</span> <span class="identifier" style="box-sizing: border-box; color: black;">theme_classic</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;">+</span><span class="identifier" style="box-sizing: border-box; color: black;">labs</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">title</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"Time Series of Indicies"</span>,<span class="identifier" style="box-sizing: border-box; color: black;">x</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"Date (by Week)"</span>,<span class="identifier" style="box-sizing: border-box; color: black;">y</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"Scaled Value of Index"</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">code</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"
data {
int n;
vector[n] y;
real<lower=0> theta1_mean;
real<lower=0> theta1_sd;
}
parameters {
real<lower=0> sigma_v;
real<lower=0> sigma_w;
vector[n] theta_innov;
}
transformed parameters {
vector[n] theta;
theta[1] <- theta1_mean + theta1_sd * theta_innov[1];
for (t in 2:n) {
theta[t] <- theta[t - 1] + sigma_w * theta_innov[t];
}
}
model {
theta_innov ~ normal(0, 1);
y ~ normal(theta, sigma_v);
}
"</span>
<span class="identifier" style="box-sizing: border-box; color: black;">local_linear_trend_state</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">function</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">y</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">{</span>
<span class="identifier" style="box-sizing: border-box; color: black;">fit</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">stan</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">model_code</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">code</span>, <span class="identifier" style="box-sizing: border-box; color: black;">data</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">list</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">y</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">y</span>, <span class="identifier" style="box-sizing: border-box; color: black;">n</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">length</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">y</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>, <span class="identifier" style="box-sizing: border-box; color: black;">theta1_mean</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">y</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>, <span class="identifier" style="box-sizing: border-box; color: black;">theta1_sd</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="number" style="box-sizing: border-box; color: #009999;">10</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>, <span class="identifier" style="box-sizing: border-box; color: black;">iter</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="number" style="box-sizing: border-box; color: #009999;">2000</span>,<span class="identifier" style="box-sizing: border-box; color: black;">chains</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="number" style="box-sizing: border-box; color: #009999;">3</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">mat</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">as.matrix</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">fit</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">theta</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">mat</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="identifier" style="box-sizing: border-box; color: black;">grep</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"theta"</span>, <span class="identifier" style="box-sizing: border-box; color: black;">colnames</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">mat</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>
<span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">return</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">colMeans</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">theta</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="identifier" style="box-sizing: border-box; color: black;">c</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="operator" style="box-sizing: border-box; color: #687687;">:</span><span class="identifier" style="box-sizing: border-box; color: black;">ncol</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">theta</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;">/</span><span class="number" style="box-sizing: border-box; color: #009999;">2</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="paren" style="box-sizing: border-box; color: #687687;">}</span>
<span class="identifier" style="box-sizing: border-box; color: black;">index_by_date_1</span><span class="operator" style="box-sizing: border-box; color: #687687;">$</span><span class="identifier" style="box-sizing: border-box; color: black;">all_liquidity</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">rowSums</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">index_by_date_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="identifier" style="box-sizing: border-box; color: black;">c</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"liquidity_words"</span> ,<span class="string" style="box-sizing: border-box; color: #dd1144;">"inflat_words"</span> ,<span class="string" style="box-sizing: border-box; color: #dd1144;">"deflat_words"</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">states</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">lapply</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">index_by_date_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>,<span class="identifier" style="box-sizing: border-box; color: black;">local_linear_trend_state</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">states</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">do.call</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">cbind</span>,<span class="identifier" style="box-sizing: border-box; color: black;">states</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">states_1</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">states</span>
<span class="identifier" style="box-sizing: border-box; color: black;">states_1</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">data.frame</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">date</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">index_by_date_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"date"</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>, <span class="identifier" style="box-sizing: border-box; color: black;">states_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">states_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">apply</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">states_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>,<span class="number" style="box-sizing: border-box; color: #009999;">2</span>,<span class="identifier" style="box-sizing: border-box; color: black;">scale</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">library</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">reshape</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">states_melt</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">melt</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">states_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="number" style="box-sizing: border-box; color: #009999;">5</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">library</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">ggplot2</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">states_plot</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">ggplot</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">states_melt</span>, <span class="identifier" style="box-sizing: border-box; color: black;">aes</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">x</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">as.Date</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">date</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>, <span class="identifier" style="box-sizing: border-box; color: black;">y</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">value</span>, <span class="identifier" style="box-sizing: border-box; color: black;">group</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">variable</span>,<span class="identifier" style="box-sizing: border-box; color: black;">colour</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">variable</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span> <span class="operator" style="box-sizing: border-box; color: #687687;">+</span> <span class="identifier" style="box-sizing: border-box; color: black;">geom_line</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;">+</span> <span class="identifier" style="box-sizing: border-box; color: black;">scale_x_date</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;">+</span> <span class="identifier" style="box-sizing: border-box; color: black;">theme_classic</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;">+</span><span class="identifier" style="box-sizing: border-box; color: black;">labs</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">title</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"Time Series of Indicy States"</span>,<span class="identifier" style="box-sizing: border-box; color: black;">x</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"Date (by Week)"</span>,<span class="identifier" style="box-sizing: border-box; color: black;">y</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"Scaled Value of Index"</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">library</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">Quandl</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">library</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">Quandl</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">vix</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">Quandl</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"CBOE/VIX"</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">states_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">as.Date</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">states_1</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span>
<span class="identifier" style="box-sizing: border-box; color: black;">states_2</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">merge</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">states_1</span>,<span class="identifier" style="box-sizing: border-box; color: black;">vix</span>, <span class="identifier" style="box-sizing: border-box; color: black;">by.x</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"date"</span>,<span class="identifier" style="box-sizing: border-box; color: black;">by.y</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"Date"</span>, <span class="identifier" style="box-sizing: border-box; color: black;">all</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="literal" style="box-sizing: border-box; color: #990073;">TRUE</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">states_2</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">as.factor</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">states_2</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">states_2</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">apply</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">states_2</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span>,<span class="number" style="box-sizing: border-box; color: #009999;">2</span>,<span class="identifier" style="box-sizing: border-box; color: black;">scale</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">states_3_melt</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">melt</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">states_2</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span><span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="identifier" style="box-sizing: border-box; color: black;">which</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">is.na</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">states_2</span><span class="paren" style="box-sizing: border-box; color: #687687;">[</span>,<span class="number" style="box-sizing: border-box; color: #009999;">2</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>,<span class="identifier" style="box-sizing: border-box; color: black;">c</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"date"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"liquidity_words"</span>,<span class="string" style="box-sizing: border-box; color: #dd1144;">"VIX Close"</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">]</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span></code></pre>
<div>
<code class="r" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;"><span class="paren" style="box-sizing: border-box; color: #687687;"><br /></span></code></div>
</div>
</h1>
</div>
</div>
<div style="clear: both;">
</div>
</div>
</div>
samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com6tag:blogger.com,1999:blog-6922608948294168433.post-20105256900191786892016-05-12T19:21:00.000-07:002016-05-16T09:03:52.771-07:00When the Predictions are more accurate than the Response<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="fluid-row" id="header" style="background-color: white; box-sizing: border-box; color: #333333; font-size: 14px; line-height: 20px;">
<h1 class="title toc-ignore" style="box-sizing: border-box; color: inherit; font-size: 38px; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px;">
<span style="font-size: 14px; line-height: 20px;"><span style="font-family: "georgia" , "times new roman" , serif;">The purpose of this post is to discuss the methodology of classifying paragraphs of documents, where the document is only assigned one topic. </span></span></h1>
<h1 class="title toc-ignore" style="box-sizing: border-box; color: inherit; font-size: 38px; font-weight: 500; line-height: 1.1; margin: 20px 0px 10px;">
<span style="font-size: 14px; line-height: 20px;"><span style="font-family: "georgia" , "times new roman" , serif;">In <a href="http://scweiss.blogspot.com/2016/05/an-economist-liquidity-index.html?m=1" target="_blank">my usage</a>, a document is an article that is assigned a Section (Business, Economics / Finance, Science, Europe, Middle East, etc). Of course each article can have multiple topics discussed. For Example; a discussion on Ukraine today might discuss the economics of its exchange rate along with European Union and Russian Military. I’m assuming each paragraph discusses on particular topic, and I’m interested in each which paragraphs discuss economics.</span></span></h1>
<div>
<br /></div>
</div>
<div style="background-color: white; box-sizing: border-box; color: #333333; font-size: 14px; line-height: 20px; margin-bottom: 10px;">
<span style="font-family: "georgia" , "times new roman" , serif;">The methodology I propose is to use the original classification to build a model and use this model to fit the paragraphs. The code below suggests this method increases classification performance.</span></div>
<pre class="r" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; color: #333333; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; overflow: auto; padding: 9.5px; word-break: break-all; word-wrap: break-word;"><code class="r" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;"><span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;">##Assume there are two classes in each document. Each paragraph has data - in this case a random normal - and the higher the value the higher probability it is associated with a particular topic. This could be thought of as word frequency </span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;">##create documents - each document consists of 100 paragraphs </span>
<span class="identifier" style="box-sizing: border-box; color: black;">documents</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">lapply</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="operator" style="box-sizing: border-box; color: #687687;">:</span><span class="number" style="box-sizing: border-box; color: #009999;">100</span>, <span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">function</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">x</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span> <span class="identifier" style="box-sizing: border-box; color: black;">rnorm</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="number" style="box-sizing: border-box; color: #009999;">100</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;">##create topics for each paragraph - 100 documents with a 100 paragraphs each</span>
<span class="identifier" style="box-sizing: border-box; color: black;">paragraph_classes</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">lapply</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">documents</span>, <span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">function</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">x</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span> <span class="identifier" style="box-sizing: border-box; color: black;">rbinom</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="number" style="box-sizing: border-box; color: #009999;">100</span>,<span class="identifier" style="box-sizing: border-box; color: black;">size</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span>,<span class="identifier" style="box-sizing: border-box; color: black;">prob</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="operator" style="box-sizing: border-box; color: #687687;">/</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="number" style="box-sizing: border-box; color: #009999;">1</span><span class="operator" style="box-sizing: border-box; color: #687687;">+</span><span class="identifier" style="box-sizing: border-box; color: black;">exp</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="operator" style="box-sizing: border-box; color: #687687;">-</span><span class="identifier" style="box-sizing: border-box; color: black;">x</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;">## a document consists of several paragraphs but the document assigned the most common topic</span>
<span class="identifier" style="box-sizing: border-box; color: black;">document_classes</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">sapply</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraph_classes</span>, <span class="keyword" style="box-sizing: border-box; color: #990000; font-weight: bold;">function</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">x</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span> <span class="identifier" style="box-sizing: border-box; color: black;">sum</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">x</span><span class="operator" style="box-sizing: border-box; color: #687687;">></span><span class="number" style="box-sizing: border-box; color: #009999;">0</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span> <span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;">></span><span class="number" style="box-sizing: border-box; color: #009999;">50</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">unlisted_documents</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">unlist</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">documents</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">unlisted_class</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">rep</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">document_classes</span>, <span class="identifier" style="box-sizing: border-box; color: black;">each</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="number" style="box-sizing: border-box; color: #009999;">100</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;">##the original correct classficiation rate is around 54%</span>
<span class="identifier" style="box-sizing: border-box; color: black;">table</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">unlist</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraph_classes</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>,<span class="identifier" style="box-sizing: border-box; color: black;">unlisted_class</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span></code></pre>
<pre style="background-color: white; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; color: #333333; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; overflow: auto; padding: 9.5px; word-break: break-all; word-wrap: break-word;"><code style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;">## unlisted_class
## FALSE TRUE
## 0 2643 2353
## 1 2257 2747</code></pre>
<pre class="r" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; color: #333333; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; overflow: auto; padding: 9.5px; word-break: break-all; word-wrap: break-word;"><code class="r" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;"><span class="identifier" style="box-sizing: border-box; color: black;">sum</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">diag</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">table</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">unlist</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraph_classes</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>,<span class="identifier" style="box-sizing: border-box; color: black;">unlisted_class</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;">/</span><span class="identifier" style="box-sizing: border-box; color: black;">length</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">unlisted_class</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span></code></pre>
<pre style="background-color: white; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; color: #333333; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; overflow: auto; padding: 9.5px; word-break: break-all; word-wrap: break-word;"><code style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;">## [1] 0.539</code></pre>
<pre class="r" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; color: #333333; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; overflow: auto; padding: 9.5px; word-break: break-all; word-wrap: break-word;"><code class="r" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;"><span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;">##build a model. each paragraph response variable is the original class assigned</span>
<span class="identifier" style="box-sizing: border-box; color: black;">glm</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">glm</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">unlisted_class</span><span class="operator" style="box-sizing: border-box; color: #687687;">~</span><span class="identifier" style="box-sizing: border-box; color: black;">unlisted_documents</span>, <span class="identifier" style="box-sizing: border-box; color: black;">family</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="string" style="box-sizing: border-box; color: #dd1144;">"binomial"</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="comment" style="box-sizing: border-box; color: #999988; font-style: italic;">#the predicted classification using model on data - can see classification results are over 14% greater than original classficiations</span>
<span class="identifier" style="box-sizing: border-box; color: black;">predicted_values</span><span class="operator" style="box-sizing: border-box; color: #687687;">=</span><span class="identifier" style="box-sizing: border-box; color: black;">scale</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">predict</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">glm</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span>
<span class="identifier" style="box-sizing: border-box; color: black;">table</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">predicted_values</span><span class="operator" style="box-sizing: border-box; color: #687687;">></span><span class="number" style="box-sizing: border-box; color: #009999;">0</span>,<span class="identifier" style="box-sizing: border-box; color: black;">unlist</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraph_classes</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;">></span><span class="number" style="box-sizing: border-box; color: #009999;">.5</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span></code></pre>
<pre style="background-color: white; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; color: #333333; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; overflow: auto; padding: 9.5px; word-break: break-all; word-wrap: break-word;"><code style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;">##
## FALSE TRUE
## FALSE 3386 1647
## TRUE 1610 3357</code></pre>
<pre class="r" style="background-color: whitesmoke; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; color: #333333; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; overflow: auto; padding: 9.5px; word-break: break-all; word-wrap: break-word;"><code class="r" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;"><span class="identifier" style="box-sizing: border-box; color: black;">sum</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">diag</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">table</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">predicted_values</span><span class="operator" style="box-sizing: border-box; color: #687687;">></span><span class="number" style="box-sizing: border-box; color: #009999;">0</span>,<span class="identifier" style="box-sizing: border-box; color: black;">unlist</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">paragraph_classes</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;">></span><span class="number" style="box-sizing: border-box; color: #009999;">.5</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span><span class="operator" style="box-sizing: border-box; color: #687687;">/</span><span class="identifier" style="box-sizing: border-box; color: black;">length</span><span class="paren" style="box-sizing: border-box; color: #687687;">(</span><span class="identifier" style="box-sizing: border-box; color: black;">unlisted_class</span><span class="paren" style="box-sizing: border-box; color: #687687;">)</span></code></pre>
<pre style="background-color: white; border-radius: 4px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; color: #333333; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; overflow: auto; padding: 9.5px; word-break: break-all; word-wrap: break-word;"><code style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-size: inherit; padding: 0px; white-space: pre-wrap;">## [1] 0.6743</code></pre>
</div>
samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com0tag:blogger.com,1999:blog-6922608948294168433.post-43514532034594805772016-01-11T17:58:00.002-08:002016-01-11T17:59:35.837-08:00Are Turbocharged Engines More Fuel Efficient? <div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
Introduction:<br />
<br />
<a href="http://scweiss.blogspot.com/2015/12/beyond-beta-relationships-between.html" target="_blank">My previous post</a> discussed methods to uncover effects of a particular explanatory variable on a response variable in machine learning models. These work by changing the variable of interest and measure how much the change in output, is keeping all other variables constant. However, this assumption that we can hold constant other variables is almost surely incorrect. In most applications, changing one variable changes the distributions of other covariates as well.<br />
<br />
In this post I will show the effect of a change in values by simulating a dataset, keeping only variables of interest fixed while allowing all other variables to change. I will do this by simulating data points from a method described <a href="http://scweiss.blogspot.com/2016/01/sampling-arbitrary-data.html" target="_blank">here</a>. I'll compare this method with existing techniques.<br />
<br />
The topic I'm going to explore is whether turbocharged engines actually decrease fuel economy. Over the past few years turbocharging is increasingly used for engines that reduce engine size while increasing power and fuel economy and reducing emissions. It has been <a href="http://www.economist.com/blogs/schumpeter/2014/07/car-technology" target="_blank">hailed as the solution</a> to increasing power while decreasing fuel consumption. A common theme among proponents is that one can achieve V-6 power through turbocharging I-4 engines and thereby achieve I-4 fuel consumption. However, real world driving has suggested that a turbocharged option <a href="http://autoweek.com/article/car-news/mpg-or-performance-its-trade-turbos" target="_blank">doesn't necessarily reduce consumption,</a> it merely gives you the option to reduce consumption if you don't use all the power.<br />
<br />
Data:<br />
The car data was scraped from car and driver website and included 416 car reviews with "observed mpg" along with 15 other variables including; weight, horsepower, torque, zero to 60 time, etc.<br />
<br />
I'll compare how observed fuel economy compares with a turbo I-4 and naturally aspirated V-6 with the same 0 to 60 time (6.5 seconds). The two comparisons are:<br />
<br />
<div style="text-align: center;">
Turbo Regime: {Engine Breathing=Turbo, Engine_Type=I-4, Zero.60=6.5, Date=Most recent}</div>
<div style="text-align: center;">
Naturally Aspirated Regime: {Engine Breathing=Naturally Aspirated, Engine_Type=V-6, Zero.60=6.5, Date=Most recent}</div>
<div>
<br /></div>
I picked these examples because changing from V-6 to a I-4 is a very common choice and 0-60 of 6.5 is a fairly standard time for a mid range family sedan.<br />
<br />
<a href="http://scweiss.blogspot.com/2015/12/beyond-beta-relationships-between.html" target="_blank">My previous post</a> discussed the methodology of using everything as constant. In this case I will predict each observation twice under the differences (one with turbo 4 and one with naturally aspirated v-6) and compare the predictions.<br />
<br />
<br />
<div style="text-align: center;">
f(mpg.observed | other covariates, Turbo Regime) - f(mpg.observed | other covariates, Naturally Aspirated Regime)</div>
<div style="text-align: center;">
<br /></div>
Where f() is approximated by a machine learning method. In this case it is a random Forest. Below is a histogram of the results.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFRT2wIDQV-sd_3znXYbG5lULuCOBPfXtwfzdRqCuPk1boPGAjZy7dqXKZ_4d4QaUX9p9Z4lhu_K3EHkhrMogXD9L2DvhwT9eCadqZdqlkcw0YO71tC7DHaz8c4lEc-DywCHq7_00ChCg/s1600/hist+of+diff.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="608" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFRT2wIDQV-sd_3znXYbG5lULuCOBPfXtwfzdRqCuPk1boPGAjZy7dqXKZ_4d4QaUX9p9Z4lhu_K3EHkhrMogXD9L2DvhwT9eCadqZdqlkcw0YO71tC7DHaz8c4lEc-DywCHq7_00ChCg/s640/hist+of+diff.png" width="640" /></a></div>
Using this method, the mean change in observed mpg is -.028. In addition there is a wide variation in changes (1st Qu is -.077 and 3Qu is 0.025). This results appear that turbos have much of an effect on fuel consumption.<br />
<br />
However, it's clear that changing the engine from a I-4 Turbo to a V-6 naturally aspirated engine could change other variables as well. For instance, I-4 engines are lighter than V-6 engines (2 fewer cylinders after all) so its possible that changing from Turbo Regime to Naturally Aspirated regime decreases fuel consumption through other channels.<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
From <a href="http://scweiss.blogspot.com/2016/01/sampling-arbitrary-data.html" target="_blank">this post</a>, we can simulate the distributions:<br />
<br />
<div style="text-align: center;">
P(mpg.observed, other covariates | Turbo Regime) and P(mpg.observed, other covariates | Naturally Aspirated Regime). We can the see the differences in distributions with these simulations.</div>
<div style="text-align: center;">
<br /></div>
Below is a pairs plot of several variables under each of the different regimes.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwhEri_ymKV3g67-LKXYS8o20aH1fJKywvb9DSa6897aqDVCshxLcy5TtFpH7ejmYg7Jma167ncCM7fwC4H1vDCLRoARnyaQ49r2fG07NPUp65z_tEdSh5CVAUfrRaMxFast2vXg_jugY/s1600/distributions_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="520" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwhEri_ymKV3g67-LKXYS8o20aH1fJKywvb9DSa6897aqDVCshxLcy5TtFpH7ejmYg7Jma167ncCM7fwC4H1vDCLRoARnyaQ49r2fG07NPUp65z_tEdSh5CVAUfrRaMxFast2vXg_jugY/s640/distributions_2.png" width="640" /></a></div>
<br />
<br />
<br />
<br />
The mean mpg observed under I-4 Turbo regime is 25.57 and is 24.29 for V-6 indicating that I-4 Turbos are, on average, 1.28 mpg more fuel efficient than similar performing V-6. It would appear that this is due, at least partially, to weight decrease of a turbo engine. That is, turbo engines are associated with lighter cars (on average by 150 pounds) and that reduces fuel consumption.<br />
<br />
Conclusion:<br />
This post compared existing methods of predicting changes with one that simulates the distribution under different conditions. The resulting distribution allows other covariates to change an expected amount given a change in other variables. Using existing methods found no change in average fuel consumption because the gain in fuel efficiency isn't directly caused by turbocharging an engine but through other channels like decrease in weight.<br />
<br />
<br />
<a href="https://drive.google.com/open?id=0B9nc4zDDl2T-b0hGZVc2R3JVUHc" target="_blank">Code</a> and <a href="https://drive.google.com/open?id=0B9nc4zDDl2T-czVnVmZLcFFsRlk" target="_blank">Data</a></div>
</div>
samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com0tag:blogger.com,1999:blog-6922608948294168433.post-42696931729787204712016-01-03T18:37:00.001-08:002016-01-04T18:41:04.418-08:00Sampling Arbitrary data<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both;">
Introduction:</div>
<div class="separator" style="clear: both; text-align: left;">
Generating data usually requires a variance - covariance matrix and is therefore restricted by using a linear assumption between the variables. However, using a linear assumption between data can miss important non - linear relationships. This post uses quantile random forests to simulate an arbitrary dataset.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
MCMC Sampling:<br />
MCMC sampling is a method that can simulate from any multivariate densities as long as one has the full conditionals. Full conditionals in this case are models of a particular variable given all other variables. For more concreteness; suppose we have a dataset with n variables (x1, x2, ... xn). The estimated full conditionals in this case are:<br />
<br />
<div style="text-align: center;">
f(x1 | x2, x3...xn)</div>
<div style="text-align: center;">
f(x2 | x1, x3...xn)</div>
<div style="text-align: center;">
.</div>
<div style="text-align: center;">
.</div>
<div>
<div style="text-align: center;">
f(xn | x1, x3...x(n-1))</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
Where f() is a machine learning algorithm of choice that can provide a distribution of values, in this case I use quantregForest() for continuous variables and randomForest() for categorical variables. </div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Once the models are built the algorithm is as follows:</div>
<div style="text-align: left;">
- Choose random observation as starting point</div>
<div style="text-align: left;">
-for each iteration of N iteration</div>
<div style="text-align: left;">
- for each variable</div>
<div style="text-align: left;">
- Sample proposal observation from predicted distribution and compare likelihood with current observation. Accept proposal with min(p(proposal)/p(current),1)</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Code can be found <a href="https://drive.google.com/file/d/0B9nc4zDDl2T-NE5QSmJKZlgyUlE/view?usp=sharing" target="_blank">here</a>.</div>
</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Results:</div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="text-align: left;">A random forest model was built to predict whether the simulated data could be distinguished from original data. The resulting KS test (out of sample) was insignificant so we retain null that model can't distinguish between original and simulated data. </span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="text-align: left;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="text-align: left;">While that is a good result and shows that a model can't distinguish between simulated and original data, visually we can see a difference between the two datasets shown below. </span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<b>Original Iris Data</b></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl8nH3OY2R78X8Ft7S_DqQefEaM5bW4x4Xte1DysEI5y6CGhplnQJYp6wAGFWrevRiA6Y4w6B_kr_6zyHk3n9m9yWLQsKVbppouHYI2agW1NmkvQJ79zhC9lmJiBjFhvzHRgmG9JrlhTk/s1600/original_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl8nH3OY2R78X8Ft7S_DqQefEaM5bW4x4Xte1DysEI5y6CGhplnQJYp6wAGFWrevRiA6Y4w6B_kr_6zyHk3n9m9yWLQsKVbppouHYI2agW1NmkvQJ79zhC9lmJiBjFhvzHRgmG9JrlhTk/s1600/original_2.png" /></a></div>
<b>Simulated Iris Data Set</b><br />
<div class="separator" style="clear: both;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNvsyquTexJZ3Hm-mnuOjGvq0THPOwPsB7W8fDY8gMr5QkP2jSA4AHgc3CPrcZWwJHwmwqCKpD4PH-Zl2JMxiN5Vu1Ydpu0gaRhYCzT_-560qpAiwTbp6VHjBhCIC0D5HTrrRcgOhdWhw/s1600/simulated_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNvsyquTexJZ3Hm-mnuOjGvq0THPOwPsB7W8fDY8gMr5QkP2jSA4AHgc3CPrcZWwJHwmwqCKpD4PH-Zl2JMxiN5Vu1Ydpu0gaRhYCzT_-560qpAiwTbp6VHjBhCIC0D5HTrrRcgOhdWhw/s1600/simulated_2.png" /></a></div>
<br /></div>
<div style="text-align: center;">
<span style="text-align: left;">The simulated dataset shows sharper boundaries between points that are not found in original dataset. For example, the scatterplot between Sepal.Length and Sepal.Width shows a sharp boundary at approximately 5 Sepal.Length in simulated data but it more gradual in original data.</span></div>
<br />
<br />
Conclusion:<br />
This post discussed a method to simulate an arbitrary dataset. While I cannot build a model to distinguish the two datasets, visually they are distinguishable.<br />
<br />
***Updated with code from <span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px; font-weight: bold; white-space: nowrap;">Dmytro Perepolkin - Thanks!</span><br />
<br /></div>
samhttp://www.blogger.com/profile/14711616507382332674noreply@blogger.com2