<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-36784551</id><updated>2026-06-09T07:25:26.915+01:00</updated><category term="R-project"/><category term="reproducible research"/><category term="Federal Reserve"/><category term="ggplot2"/><category term="github"/><category term="inflation"/><category term="knitr"/><category term="forecasting"/><category term="errors"/><category term="web crawler"/><category term="academic journals"/><category term="cross-country data"/><category term="data analysis teaching"/><category term="data manipulation"/><category term="legislative violence"/><category term="political science"/><category term="transparency"/><category term="Amazon EC2"/><category term="Bayesian"/><category term="Berlin"/><category term="D3.js"/><category term="Database of Political Institutions"/><category term="Dodd-Frank"/><category term="Dropbox"/><category term="European Banking Authority"/><category term="IMF country code"/><category term="Korea"/><category term="LaTeX"/><category term="R"/><category term="Rstudio"/><category term="Ruby"/><category term="Stata"/><category term="bank regulation"/><category term="blogging"/><category term="citations"/><category term="cloud computing"/><category term="conference presentation"/><category term="country names"/><category term="credible commitments"/><category term="data"/><category term="data hosting"/><category term="disproportionality"/><category term="elections"/><category term="financial regulation"/><category term="googleVis"/><category term="higher education"/><category term="install.packages"/><category term="maps"/><category term="network graphs"/><category term="non-proportional hazards"/><category term="open data"/><category term="reproducibility"/><category term="research"/><category term="signalling game"/><category term="simulations"/><category term="slidify"/><category term="source_GitHubData"/><category term="API"/><category term="APSA"/><category term="Apple Store"/><category term="Bank of Korea"/><category term="China"/><category term="Cloud statistics"/><category term="Counterfeiting"/><category term="Cox Proportional Hazards Models"/><category term="D3"/><category term="DPI"/><category term="ESRB"/><category term="European Parliament"/><category term="Excel"/><category term="FOMC"/><category term="Federal Register"/><category term="Financial Conduct Authority"/><category term="GDP growth"/><category term="Gallagher Index"/><category term="Greek debt crisis"/><category term="Haiti"/><category term="IMF"/><category term="IRT"/><category term="Ideas"/><category term="Ireland"/><category term="Irish asset bubble"/><category term="Jags"/><category term="Japan"/><category term="Jekyll-Bootstrap"/><category term="LDA"/><category term="LSE"/><category term="Latent Demand"/><category term="London School of Economics"/><category term="MEP"/><category term="Markdown"/><category term="OECD"/><category term="Pandoc"/><category term="Pirate Party"/><category term="Polity"/><category term="RCurl"/><category term="SEC"/><category term="Shiny"/><category term="Shiny web apps"/><category term="Stan"/><category term="Sweave"/><category term="The Other Blog"/><category term="Type M Errors"/><category term="WBI"/><category term="XKCD"/><category term="Zelig"/><category term="automation"/><category term="bank bailouts"/><category term="banking crisis"/><category term="bash"/><category term="beamer slideshow"/><category term="beamer theme"/><category term="caching"/><category term="confidentiality"/><category term="congressional records"/><category term="contestation"/><category term="contingent liabilities"/><category term="corrections"/><category term="credit crunch"/><category term="crony capitalism"/><category term="data storage"/><category term="debt/GDP"/><category term="deck.js"/><category term="deck.rb"/><category term="democratic consolidation"/><category term="diorama"/><category term="do-file"/><category term="election maps"/><category term="election poster"/><category term="estimation uncertainty"/><category term="event history analysis"/><category term="full guarantees"/><category term="functions"/><category term="governing majorities"/><category term="graphing uncertainty"/><category term="guarantees"/><category term="homebrew"/><category term="housing bubble"/><category term="how-to"/><category term="inequality"/><category term="interactive graphics"/><category term="javascript"/><category term="jquery"/><category term="labor market inequality"/><category term="lag"/><category term="lead"/><category term="lecture slides"/><category term="missing values"/><category term="mistakes"/><category term="monetary policy committee"/><category term="moral hazard"/><category term="museum tours"/><category term="neuroscience"/><category term="overseas development aid"/><category term="plotting"/><category term="public transportation"/><category term="publishing"/><category term="rankings"/><category term="regulatory capture"/><category term="relogit"/><category term="repmis"/><category term="research process"/><category term="scraping"/><category term="selectorate"/><category term="simPH"/><category term="slideshows"/><category term="stagnation"/><category term="standardize"/><category term="state elections"/><category term="student debt"/><category term="subway exits"/><category term="survival analysis"/><category term="text analysis"/><category term="timeline"/><category term="topic model"/><category term="university resource transfer"/><category term="variable"/><category term="whaling South Georgia Island"/><category term="winset"/><title type='text'>Christopher Gandrud  (간드루드 크리스토파)</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/-/R-project'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/search/label/R-project'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/-/R-project/-/R-project?start-index=26&amp;max-results=25'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>38</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-36784551.post-5609291667381521926</id><published>2015-05-08T07:41:00.000+01:00</published><updated>2015-05-08T07:41:41.918+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="D3.js"/><category scheme="http://www.blogger.com/atom/ns#" term="interactive graphics"/><category scheme="http://www.blogger.com/atom/ns#" term="LDA"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><category scheme="http://www.blogger.com/atom/ns#" term="Shiny"/><category scheme="http://www.blogger.com/atom/ns#" term="topic model"/><title type='text'>A Link Between topicmodels LDA and LDAvis</title><content type='html'>&lt;p&gt;Carson Sievert and Kenny Shirley have put together the really nice &lt;a href=&quot;https://github.com/cpsievert/LDAvis&quot;&gt;LDAvis&lt;/a&gt; R package. It provides a Shiny-based interactive interface for exploring the output from Latent Dirichlet Allocation topic models. If you&amp;#39;ve never used it, I highly recommend checking out their &lt;a href=&quot;http://cpsievert.github.io/xkcd/&quot;&gt;XKCD example&lt;/a&gt; (this &lt;a href=&quot;http://nlp.stanford.edu/events/illvi2014/papers/sievert-illvi2014.pdf&quot;&gt;paper&lt;/a&gt; also has some nice background).&lt;/p&gt;

&lt;p&gt;LDAvis doesn&amp;#39;t fit topic models, it just visualises the output. As such it is agnostic about what package you use to fit your LDA topic model. They have a useful &lt;a href=&quot;http://cpsievert.github.io/LDAvis/reviews/reviews.html&quot;&gt;example&lt;/a&gt; of how to use output from the &lt;a href=&quot;http://cran.r-project.org/web/packages/lda/lda.pdf&quot;&gt;lda&lt;/a&gt; package.&lt;/p&gt;
&lt;p&gt;I wanted to use LDAvis with output from the &lt;a href=&quot;http://cran.r-project.org/web/packages/topicmodels/index.html&quot;&gt;topicmodels&lt;/a&gt; package. It works really nicely with texts preprocessed using the &lt;a href=&quot;http://cran.r-project.org/web/packages/tm/index.html&quot;&gt;tm&lt;/a&gt; package. The trick is extracting the information LDAvis requires from the model and placing it into a specifically structured JSON formatted object.&lt;/p&gt;

&lt;p&gt;To make the conversion from topicmodels output to LDAvis JSON input easier, I created a linking function called &lt;code&gt;topicmodels_json_ldavis&lt;/code&gt;. The full function is below. To use it follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create a &lt;code&gt;VCorpus&lt;/code&gt; object using the tm package&amp;#39;s &lt;code&gt;Corpus&lt;/code&gt; function.&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Convert this to a document term matrix using &lt;code&gt;DocumentTermMatrix&lt;/code&gt;, also from tm.&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Run your model using topicmodel&amp;#39;s &lt;code&gt;LDA&lt;/code&gt; function.&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Convert the output into JSON format using &lt;code&gt;topicmodels_json_ldavis&lt;/code&gt;. The function requires the output from steps 1-3.&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Visualise with LDAvis&amp;#39; &lt;code&gt;serVis&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;script src=&quot;https://gist.github.com/christophergandrud/00e7451c16439421b24a.js&quot;&gt;&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/5609291667381521926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/5609291667381521926' title='27 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/5609291667381521926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/5609291667381521926'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2015/05/a-link-between-topicmodels-lda-and.html' title='A Link Between topicmodels LDA and LDAvis'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>27</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-928691058237992861</id><published>2014-12-10T15:12:00.000+00:00</published><updated>2014-12-10T15:12:22.353+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Amazon EC2"/><category scheme="http://www.blogger.com/atom/ns#" term="cloud computing"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><category scheme="http://www.blogger.com/atom/ns#" term="Stan"/><title type='text'>Set up R/Stan on Amazon EC2</title><content type='html'>&lt;p&gt;A few months ago I &lt;a href=&quot;http://christophergandrud.blogspot.de/2014/06/simple-script-from-setting-up-r-git-and.html&quot;&gt;posted the script&lt;/a&gt; 
that I use to set up my R/JAGS working environment on an Amazon EC2 instance.&lt;/p&gt;
&lt;p&gt;Since then I&#39;ve largely transitioned to using R/&lt;a href=&quot;http://mc-stan.org/&quot;&gt;Stan&lt;/a&gt; to
estimate my models. So, I&#39;ve updated my setup script (see below). &lt;/p&gt;
&lt;p&gt;There are a few other changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I don&#39;t install/use RStudio on Amazon EC2. Instead, I just use R from the terminal.
Don&#39;t get me wrong, I love RStudio. But since what I&#39;m doing on EC2 is
just running simulations (I handle the results on my local machine), RStudio is
overkill. &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I don&#39;t install git anymore. Instead I use &lt;code&gt;source_url&lt;/code&gt; (from devtools) and &lt;code&gt;source_data&lt;/code&gt; (from repmis) to
source scripts from GitHub. Again all of the manipulation I&#39;m doing to these
scripts is on my local machine. &lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;script src=&quot;https://gist.github.com/christophergandrud/c01760a65c03f7047df0.js&quot;&gt;&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/928691058237992861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/928691058237992861' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/928691058237992861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/928691058237992861'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2014/12/set-up-rstan-on-amazon-ec2.html' title='Set up R/Stan on Amazon EC2'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-2561430197066172694</id><published>2014-10-13T07:53:00.000+01:00</published><updated>2015-01-08T13:00:08.047+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="academic journals"/><category scheme="http://www.blogger.com/atom/ns#" term="political science"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><category scheme="http://www.blogger.com/atom/ns#" term="reproducible research"/><category scheme="http://www.blogger.com/atom/ns#" term="Type M Errors"/><title type='text'>Do Political Scientists Care About Effect Sizes: Replication and Type M Errors</title><content type='html'>&lt;p&gt;Reproducibility has come a long way in political science. Many major journals now require replication materials be made available either on their websites or some service such as the &lt;a href=&quot;http://thedata.org/&quot;&gt;Dataverse Network&lt;/a&gt;. Most of the top journals in political science have formally committed to reproducible research best practices by signing up to the &lt;a href=&quot;http://www.dartstatement.org/&quot;&gt;The (DA-RT) Data Access and Research Transparency Joint Statement&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This is certainly progress. But what are political scientists actually supposed to do with this new information? Data and code availability does help avoid effort duplication--researchers don&#39;t need to gather data or program statistical procedures that have already been gathered or programmed. It promotes &lt;a href=&quot;http://books.google.com/books/about/Reproducible_Research_With_R_and_Rstudio.html?id=u-nuzKGvoZwC&amp;amp;redir_esc=y&quot;&gt;better research habits&lt;/a&gt;. It definitely provides &#39;&#39;&lt;a href=&quot;http://onlinelibrary.wiley.com/doi/10.1111/1468-5965.00220/abstract&quot;&gt;procedural oversight&lt;/a&gt;&#39;&#39;. We would be highly suspect of results from authors that were unable or unwilling to produce their code/data.&lt;/p&gt;

&lt;p&gt;However, there are lots of problems that data/code availability requirements do not address. Apart from a few journals like &lt;a href=&quot;http://journals.cambridge.org/action/displayJournal?jid=RAM&quot;&gt;Political Science Research and Methods&lt;/a&gt;, most journals have no standing policy to check the replication materials&#39; veracity. Reviewers rarely have access to manuscripts&#39; code/data. Even if they did have access to it, few reviewers would be willing or able to undertake the time consuming task of reviewing this material.&lt;/p&gt;
&lt;h2 id=&quot;do-political-science-journals-care-about-coding-and-data-errors-&quot;&gt;Do political science journals care about coding and data errors?&lt;/h2&gt;

&lt;p&gt;What do we do if someone replicating published research finds clear data or coding errors that have biased the published estimates?&lt;/p&gt;

&lt;p&gt;Note that I&#39;m limiting the discussion here to honest mistakes, not active attempts to deceive. &lt;a href=&quot;http://christophergandrud.blogspot.de/2013/04/reinhart-rogoff-everyone-makes-coding.html&quot;&gt;We all make these mistakes&lt;/a&gt;. To keep it simple, I&#39;m also only talking about clear, knowable, and &lt;a href=&quot;http://polmeth.wustl.edu/mediaDetail.php?docId=1534&quot;&gt;non&lt;/a&gt;-&lt;a href=&quot;http://zmjones.com/replication-reproduction-prediction/&quot;&gt;causal&lt;/a&gt; coding and data errors.&lt;/p&gt;

&lt;p&gt;Probably the most responsible action a journal could take when clear cut coding/data biased results have been found would be to &lt;em&gt;directly adjoin to the original article a note detailing the bias&lt;/em&gt;. This way readers will always be aware of the correction and will have the best information possible. This is a more efficient way of getting out corrected information than relying on some probabilistic process where readers may or may not stumble upon the information posted elsewhere.&lt;/p&gt;
&lt;p&gt;As far as I know, however, no political science journal has a written procedure (please correct me if I&#39;m wrong) for dealing with this new information. My sense is that there are a series of ad hoc responses that closely correspond to how the bias affects the results:&lt;/p&gt;
&lt;h3 id=&quot;statistical-significance&quot;&gt;Statistical significance&lt;/h3&gt;
&lt;p&gt;The situation where a journal is most likely to do anything is when correcting the bias makes the results no longer statistically significant. This might get a journal to append a note to the original article. But maybe not, they could just ignore it.&lt;/p&gt;
&lt;h3 id=&quot;sign&quot;&gt;Sign&lt;/h3&gt;

&lt;p&gt;It might be that once the coding/data bias is corrected, the sign of an estimated effect flips--the result of what Andrew Gelman calls &lt;a href=&quot;http://andrewgelman.com/2004/12/29/type_1_type_2_t/&quot;&gt;Type S errors&lt;/a&gt;. I really have no idea what a journal would do in this situation. They might append a note or maybe not.&lt;/p&gt;
&lt;h3 id=&quot;magnitude&quot;&gt;Magnitude&lt;/h3&gt;

&lt;p&gt;Perhaps the most likely outcome of correcting honest coding/data bias is that the effect size changes. These errors would be the result of Gelman&#39;s &lt;strong&gt;Type M&lt;/strong&gt; errors. My sense (and experience) is that in a context where &lt;a href=&quot;http://edr.sagepub.com/content/early/2014/07/23/0013189X14545513.abstract&quot;&gt;novelty is greatly privileged over facts&lt;/a&gt; journal editors will almost certainly ignore this new information. It will be buried.&lt;/p&gt;
&lt;h2 id=&quot;do-political-scientists-care-about-effect-size-&quot;&gt;Do political scientists care about effect size?&lt;/h2&gt;

&lt;p&gt;Due to the complexity of what political scientists study, we rarely (perhaps with the exception of specific topics like election forecasting) think that we are very close to estimating a given effect&#39;s real magnitude. Most researchers are aiming for statistical significance and a sign that matches their theory.&lt;/p&gt;

&lt;p&gt;Does this mean that we don&#39;t care about trying to estimate magnitudes as closely as possible?&lt;/p&gt;

&lt;p&gt;Looking at political science practice pre-publication, there is a lot of evidence that we do care about Type M errors. Considerable effort is given to finding new estimation methods that produce less biased results. Questions of omitted variable bias are very common at research seminars and in journal reviews. Most researchers do carefully build their data sets and code to minimise coding/data bias. Many of these efforts are focused on the headline stuff--whether or not a given effect is significant and what the direction of the effect is. But, these efforts are also part of a desire to make the most accurate estimate of an effect as possible.&lt;/p&gt;

&lt;p&gt;However, the review process and journals&#39; responses to finding Type M errors caused by honest coding/data errors in published findings suggest that perhaps we don&#39;t care about effect size. Reviewers almost never look at code and data. Journals (as far as I know, please correct me if I&#39;m wrong) never append information on replications that find Type M errors to original papers.&lt;/p&gt;
&lt;h2 id=&quot;prescription&quot;&gt;Prescription&lt;/h2&gt;
&lt;p&gt;I have a simple prescription for demonstrating that we actually care about estimating accurate effect sizes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Develop a standard practice of including a short authored write up of the data/code bias with corrected results in the original article&#39;s supplementary materials. Append a notice to the article pointing to this.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Doing this would not only give readers more accurate effect size estimates, but also make replication materials more useful.&lt;/p&gt;
&lt;p&gt;Standardising the practice of publishing authored notes will incentivise people to use replication materials, find errors, and publicly correct them.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/2561430197066172694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/2561430197066172694' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/2561430197066172694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/2561430197066172694'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2014/10/do-political-scientists-care-about.html' title='Do Political Scientists Care About Effect Sizes: Replication and Type M Errors'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-4990330832622813463</id><published>2014-07-22T10:51:00.000+01:00</published><updated>2014-07-22T10:51:01.838+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="homebrew"/><category scheme="http://www.blogger.com/atom/ns#" term="install.packages"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><category scheme="http://www.blogger.com/atom/ns#" term="XKCD"/><title type='text'>Note to self: brew cleanup r</title><content type='html'>&lt;p&gt;Note to self: after updating R with &lt;a href=&quot;http://brew.sh/&quot;&gt;Homebrew&lt;/a&gt; remember to &lt;code&gt;cleanup&lt;/code&gt; old versions:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#39;sh&#39;&gt;brew cleanup r
&lt;/code&gt;&lt;/pre&gt;

Otherwise I&#39;m liable to get a &lt;a href=&quot;http://xkcd.com/371/&quot;&gt;segfault&lt;/a&gt;. (&lt;a href=&quot;https://sagebionetworks.jira.com/browse/SYNR-590&quot;&gt;see also&lt;/a&gt;)</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/4990330832622813463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/4990330832622813463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/4990330832622813463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/4990330832622813463'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2014/07/note-to-self-brew-cleanup-r.html' title='Note to self: brew cleanup r'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-3672867262048334471</id><published>2014-06-28T15:38:00.002+01:00</published><updated>2014-06-28T15:38:51.699+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Amazon EC2"/><category scheme="http://www.blogger.com/atom/ns#" term="Jags"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><title type='text'>Simple script from setting up R, Git, and Jags on Amazon EC2 Ubuntu Instance</title><content type='html'>&lt;p&gt;Just wanted to put up the script I&#39;ve been using to create an Amazon EC2 Ubuntu instance for running RStudio, Git, and Jags. There isn&#39;t anything really new in here, but it it has been serving me well.&lt;/p&gt;

&lt;p&gt;The script begins after the basic instance has been set up in the Amazon EC2 console (&lt;a href=&quot;http://blog.yhathq.com/posts/r-in-the-cloud-part-1.html&quot;&gt;yhat&lt;/a&gt; has a nice post on how to do this, though some of their screenshots are a little old). Just SSH into the instance and get started. &lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/christophergandrud/67cf1261d2fc8aefbc6f.js&quot;&gt;&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/3672867262048334471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/3672867262048334471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/3672867262048334471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/3672867262048334471'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2014/06/simple-script-from-setting-up-r-git-and.html' title='Simple script from setting up R, Git, and Jags on Amazon EC2 Ubuntu Instance'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-2677926967548497545</id><published>2014-05-11T16:51:00.000+01:00</published><updated>2014-05-11T16:51:15.027+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="caching"/><category scheme="http://www.blogger.com/atom/ns#" term="data"/><category scheme="http://www.blogger.com/atom/ns#" term="Excel"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><title type='text'>Updates to repmis: caching downloaded data and Excel data downloading</title><content type='html'>&lt;p&gt;Over the past few months I’ve added a few improvements to the &lt;a href=&quot;http://christophergandrud.github.io/repmis/&quot;&gt;repmis&lt;/a&gt;–miscellaneous functions for reproducible research–R package. I just want to briefly highlight two of them:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Caching&lt;/strong&gt; downloaded data sets.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;source_XlsxData&lt;/code&gt; for downloading data in Excel formatted files.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both of these capabilities are in &lt;strong&gt;repmis&lt;/strong&gt; version 0.2.9 and greater.&lt;/p&gt;
&lt;div id=&quot;caching&quot; class=&quot;section level2&quot;&gt;
&lt;h2&gt;Caching&lt;/h2&gt;
&lt;p&gt;When working with data sourced directly from the internet, it can be time consuming (and make the data hoster angry) to repeatedly download the data. So, &lt;strong&gt;repmis&lt;/strong&gt;’s &lt;code&gt;source&lt;/code&gt; functions (&lt;code&gt;source_data&lt;/code&gt;, &lt;code&gt;source_DropboxData&lt;/code&gt;, and &lt;code&gt;source_XlsxData&lt;/code&gt;) can now &lt;a href=&quot;http://en.wikipedia.org/wiki/Cache_(computing)&quot;&gt;cache&lt;/a&gt; a downloaded data set by setting the argument &lt;code&gt;cache = TRUE&lt;/code&gt;. For example:&lt;/p&gt;
&lt;pre class=&quot;r&quot;&gt;&lt;code&gt;DisData &amp;lt;- source_data(&amp;quot;http://bit.ly/156oQ7a&amp;quot;, cache = TRUE)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When the function is run again, the data set at &lt;a href=&quot;http://bit.ly/156oQ7a&quot;&gt;http://bit.ly/156oQ7a&lt;/a&gt; will be loaded locally, rather than downloaded.&lt;/p&gt;
&lt;p&gt;To delete the cached data set, simply run the function again with the argument &lt;code&gt;clearCache = TRUE&lt;/code&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;source_xlsxdata&quot; class=&quot;section level2&quot;&gt;
&lt;h2&gt;&lt;code&gt;source_XlsxData&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;I recently added the &lt;code&gt;source_XlsxData&lt;/code&gt; function to download Excel data sets directly into R. This function works very similarly to the other &lt;code&gt;source&lt;/code&gt; functions. There are two differences:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You need to specify the &lt;code&gt;sheet&lt;/code&gt; argument. This is either the name of one specific sheet in the downloaded Excel workbook or its number (e.g. the first sheet in the workbook would be &lt;code&gt;sheet = 1&lt;/code&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can pass other arguments to the &lt;a href=&quot;http://www.inside-r.org/packages/cran/xlsx/docs/read.xlsx&quot;&gt;read.xlsx&lt;/a&gt; function from the &lt;a href=&quot;http://cran.r-project.org/web/packages/xlsx/index.html&quot;&gt;xlsx&lt;/a&gt; package.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here’s a simple example:&lt;/p&gt;
&lt;pre class=&quot;r&quot;&gt;&lt;code&gt;RRurl &amp;lt;- &#39;http://www.carmenreinhart.com/user_uploads/data/22_data.xls&#39;

RRData &amp;lt;- source_XlsxData(url = RRurl, sheet = 2, startRow = 5)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;startRow = 5&lt;/code&gt; basically drops the first 4 rows of the sheet.&lt;/p&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/2677926967548497545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/2677926967548497545' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/2677926967548497545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/2677926967548497545'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2014/05/updates-to-repmis-caching-downloaded.html' title='Updates to repmis: caching downloaded data and Excel data downloading'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-8891283528025242440</id><published>2014-05-09T15:43:00.000+01:00</published><updated>2014-05-09T15:44:10.419+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="D3.js"/><category scheme="http://www.blogger.com/atom/ns#" term="network graphs"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><category scheme="http://www.blogger.com/atom/ns#" term="Shiny web apps"/><title type='text'>d3Network Plays Nice with Shiny Web Apps</title><content type='html'>&lt;p&gt;After some delay (and because of helpful prompting by Giles Heywood and code contributions by &lt;a href=&quot;https://github.com/johndharrison&quot;&gt;John Harrison&lt;/a&gt;) &lt;a href=&quot;http://christophergandrud.github.io/d3Network/&quot;&gt;d3Network&lt;/a&gt; now plays nicely with &lt;a href=&quot;http://shiny.rstudio.com/&quot;&gt;Shiny web apps&lt;/a&gt;. This means you can fully integrate R/D3.js network graphs into your web apps.&lt;/p&gt;

&lt;p&gt;Here is what one simple &lt;a href=&quot;https://github.com/christophergandrud/d3ShinyExample&quot;&gt;example&lt;/a&gt; looks like:&lt;/p&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKfxEujA9Xc2aG1WZuTkOuaBb0eH1ixVL5k5EuG5LGJhyphenhyphenYulvRiEBi-_aFZfxnWLodpnahMn7K3PKCeH4ntvgHCTldLfq3SDteSWMtgwtCkFqUKmMob7j43xsJXDt2tP-Vu2zP/s1600/d3Network_Shiny_Example.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKfxEujA9Xc2aG1WZuTkOuaBb0eH1ixVL5k5EuG5LGJhyphenhyphenYulvRiEBi-_aFZfxnWLodpnahMn7K3PKCeH4ntvgHCTldLfq3SDteSWMtgwtCkFqUKmMob7j43xsJXDt2tP-Vu2zP/s1600/d3Network_Shiny_Example.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;An explanation of the code is &lt;a href=&quot;http://christophergandrud.github.io/d3Network/#shiny&quot;&gt;here&lt;/a&gt; and you can download the app and play with it using:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;r&quot;&gt;shiny::runGitHub(&#39;d3ShinyExample&#39;, &#39;christophergandrud&#39;)
&lt;/code&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/8891283528025242440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/8891283528025242440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/8891283528025242440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/8891283528025242440'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2014/05/d3network-plays-nice-with-shiny-web-apps.html' title='d3Network Plays Nice with Shiny Web Apps'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKfxEujA9Xc2aG1WZuTkOuaBb0eH1ixVL5k5EuG5LGJhyphenhyphenYulvRiEBi-_aFZfxnWLodpnahMn7K3PKCeH4ntvgHCTldLfq3SDteSWMtgwtCkFqUKmMob7j43xsJXDt2tP-Vu2zP/s72-c/d3Network_Shiny_Example.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-5864939464922798276</id><published>2014-02-23T16:41:00.000+00:00</published><updated>2014-02-24T07:29:53.855+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Database of Political Institutions"/><category scheme="http://www.blogger.com/atom/ns#" term="DPI"/><category scheme="http://www.blogger.com/atom/ns#" term="political science"/><category scheme="http://www.blogger.com/atom/ns#" term="Polity"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><category scheme="http://www.blogger.com/atom/ns#" term="reproducible research"/><category scheme="http://www.blogger.com/atom/ns#" term="selectorate"/><category scheme="http://www.blogger.com/atom/ns#" term="winset"/><title type='text'>Programmatically download political science data with the psData package</title><content type='html'>&lt;p&gt;A lot of progress has been made on improving political scientists&amp;#8217; ability to access data &amp;#8216;programmatically&amp;#8217;, e.g. data can be downloaded with source code R. Packages such as &lt;a href=&quot;http://cran.r-project.org/web/packages/WDI/index.html&quot;&gt;WDI&lt;/a&gt; for World Bank Development Indicator and &lt;a href=&quot;http://cran.r-project.org/web/packages/dvn/index.html&quot;&gt;dvn&lt;/a&gt; for many data sets stored on the &lt;a href=&quot;http://thedata.org/&quot;&gt;Dataverse Network&lt;/a&gt; make it much easier for political scientists to use this data as part of a highly &lt;a href=&quot;http://christophergandrud.blogspot.de/2013/07/getting-started-with-reproducible.html&quot;&gt;integrated and reproducible workflow&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;There are nonetheless still many commonly used political science data sets that aren&amp;#8217;t easily accessible to researchers. Recently, I&amp;#8217;ve been using the &lt;a href=&quot;http://econ.worldbank.org/WBSITE/EXTERNAL/EXTDEC/EXTRESEARCH/0,,contentMDK:20649465~pagePK:64214825~piPK:64214943~theSitePK:469382,00.html&quot;&gt;Database of Political Institutions (DPI)&lt;/a&gt;, &lt;a href=&quot;http://www.systemicpeace.org/polity/polity4.htm&quot;&gt;Polity IV&lt;/a&gt; democracy indicators, and &lt;a href=&quot;http://www.carmenreinhart.com/data/browse-by-topic/topics/7/&quot;&gt;Reinhart and Rogoff&amp;#8217;s (2010)&lt;/a&gt; financial crisis occurrence data. All three of these data sets are freely available for download online. However, getting them, cleaning them up, and merging them together is kind of a pain. This is especially true for the Reinhart and Rogoff data, which is in 4 Excel files with over 70 individual sheets, one for each country&amp;#8217;s data. &lt;/p&gt;

&lt;p&gt;Also, I&amp;#8217;ve been using variables that are combinations and/or transformations of indicators in regularly updated data sets, but which themselves aren&amp;#8217;t regularly updated. In particular, &lt;a href=&quot;http://www.nyu.edu/gsas/dept/politics/data/bdm2s2/Logic.htm&quot;&gt;Bueno de Mesquita et al. (2003)&lt;/a&gt; devised two variables that they called the &amp;#8216;winset&amp;#8217; and the &amp;#8216;selectorate&amp;#8217;. These are basically specific combinations of data in DPI and Polity IV. However, the winset and selectorate variables haven&amp;#8217;t been updated alongside the yearly updates of DPI and Polity IV. &lt;/p&gt;

&lt;p&gt;There are two big problems here:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;A lot of time is wasted by political scientists (and their RAs) downloading, cleaning, and transforming these data sets for their own research.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There are many opportunities while doing this work to introduce errors. Imagine the errors that might be introduced and go unnoticed if a copy-and-paste approach is used to merge the 70 Reinhart and Rogoff Excel sheets. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As a solution, I&amp;#8217;ve been working on a new R package called &lt;em&gt;&lt;a href=&quot;https://github.com/christophergandrud/psData&quot;&gt;psData&lt;/a&gt;&lt;/em&gt;. This package includes functions that automate the gathering, cleaning, and creation of common political science data and variables. So far (February 2014) it gathers DPI, Polity IV, and Reinhart and Rogoff data, as well as creates winset and selectorate variables. Hopefully the package will save political scientists a lot of time and reduce the number of data management errors. &lt;/p&gt;

&lt;p&gt;There certainly could be errors in the way &lt;em&gt;psData&lt;/em&gt; gathers data. However, once spotted the errors could be easily reported on the package&amp;#8217;s &lt;a href=&quot;https://github.com/christophergandrud/psData/issues&quot;&gt;Issues Page&lt;/a&gt;. Once fixed, the correction will be spread to all users via a package update.&lt;/p&gt;

&lt;h2 id=&quot;typesoffunctions&quot;&gt;Types of functions&lt;/h2&gt;

&lt;p&gt;There are two basic types of functions in &lt;em&gt;psData&lt;/em&gt;: &lt;strong&gt;Getters&lt;/strong&gt; and &lt;strong&gt;Variable Builders&lt;/strong&gt;. Getter functions automate the gathering and cleaning of particular data sets so that they can easily be merged with other data. They do not transform the underlying data. Variable Builders use Getters to gather data and then transform it into new variables suggested by the political science literature.&lt;/p&gt;

&lt;h2 id=&quot;examples&quot;&gt;Examples&lt;/h2&gt;

&lt;p&gt;To download only the &lt;strong&gt;polity2&lt;/strong&gt; variable from &lt;a href=&quot;http://www.systemicpeace.org/polity/polity4.htm&quot;&gt;Polity IV&lt;/a&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;r&quot;&gt;# Load package
library(psData)

# Download polity2 variable
PolityData &lt;- PolityGet(vars = &quot;polity2&quot;)

# Show data
head(PolityData)


##   iso2c     country year polity2
## 1    AF Afghanistan 1800      -6
## 2    AF Afghanistan 1801      -6
## 3    AF Afghanistan 1802      -6
## 4    AF Afghanistan 1803      -6
## 5    AF Afghanistan 1804      -6
## 6    AF Afghanistan 1805      -6
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Note that the &lt;strong&gt;iso2c&lt;/strong&gt; variable refers to the &lt;a href=&quot;http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2&quot;&gt;ISO two letter country code country ID&lt;/a&gt;. This standardised country identifier could be used to easily merge the Polity IV data with another data set. Another country ID type can be selected with the &lt;code&gt;OutCountryID&lt;/code&gt; argument. See the package documentation for details.&lt;/p&gt;

&lt;p&gt;To create &lt;strong&gt;winset&lt;/strong&gt; (&lt;strong&gt;W&lt;/strong&gt;) and &lt;strong&gt;selectorate&lt;/strong&gt; (&lt;strong&gt;ModS&lt;/strong&gt;) data use the following code:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;r&quot;&gt;WinData &lt;- WinsetCreator()

head(WinData)


##    iso2c     country year    W ModS
## 1     AF Afghanistan 1975 0.25    0
## 2     AF Afghanistan 1976 0.25    0
## 3     AF Afghanistan 1977 0.25    0
## 15    AF Afghanistan 1989 0.50    0
## 16    AF Afghanistan 1990 0.50    0
## 17    AF Afghanistan 1991 0.50    0
&lt;/code&gt;&lt;/pre&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;install&quot;&gt;Install&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;psData&lt;/em&gt; should be on &lt;a href=&quot;http://cran.r-project.org/&quot;&gt;CRAN&lt;/a&gt; soon, but while it is in the development stage you can install it with the &lt;a href=&quot;https://github.com/hadley/devtools&quot;&gt;devtools&lt;/a&gt; package:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;r&quot;&gt;devtools::install_github(&#39;psData&#39;, &#39;christophergandrud&#39;)
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;suggestions&quot;&gt;Suggestions&lt;/h2&gt;

&lt;p&gt;Please feel free to suggest other data set downloading and variable creating functions. To do this just leave a note on the package&amp;#8217;s &lt;a href=&quot;https://github.com/christophergandrud/psData/issues&quot;&gt;Issues page&lt;/a&gt; or make a pull request with a new function added.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/5864939464922798276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/5864939464922798276' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/5864939464922798276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/5864939464922798276'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2014/02/programmatically-download-political.html' title='Programmatically download political science data with the psData package'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-8068884889501402455</id><published>2013-12-06T17:43:00.000+00:00</published><updated>2013-12-06T17:43:17.532+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="data manipulation"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><title type='text'>Three Quick and Simple Data Cleaning Helper Functions (December 2013)</title><content type='html'>&lt;p&gt;As I go about cleaning and merging data sets with R I often end up creating and using simple functions over and over. When this happens, I stick them in the &lt;a href=&quot;http://christophergandrud.github.io/DataCombine/&quot;&gt;DataCombine&lt;/a&gt; package. This makes it easier for me to remember how to do an operation and others can possibly benefit from simplified and (hopefully) more intuitive code. &lt;/p&gt;

&lt;p&gt;I&amp;#39;ve talked about some of the commands in &lt;strong&gt;DataCombine&lt;/strong&gt; in &lt;a href=&quot;http://christophergandrud.blogspot.de/2013/05/slide-one-function-for-laglead.html&quot;&gt;previous&lt;/a&gt; &lt;a href=&quot;http://christophergandrud.blogspot.de/2013/02/fillin-function-for-filling-in-missing.html&quot;&gt;posts&lt;/a&gt;. In this post I&amp;#39;ll give examples for a few more that I&amp;#39;ve added over the past couple of months. Note: these examples are based on &lt;strong&gt;DataCombine&lt;/strong&gt; version 0.1.11.&lt;/p&gt;

&lt;p&gt;Here is a brief run down of the functions covered in this post:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;#FindReplace&quot;&gt;&lt;code&gt;FindReplace&lt;/code&gt;&lt;/a&gt;: a function to replace multiple patterns found in a character string column of a data frame.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;#MoveFront&quot;&gt;&lt;code&gt;MoveFront&lt;/code&gt;&lt;/a&gt;: moves variables to the front of a data frame. This can be useful if you have a data frame with many variables and want to move a variable or variables to the front.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;#rmExcept&quot;&gt;&lt;code&gt;rmExcept&lt;/code&gt;&lt;/a&gt;: removes all objects from a work space except those specified by the user.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;FindReplace&quot;&gt;&lt;code&gt;FindReplace&lt;/code&gt;&lt;/h1&gt;

&lt;p&gt;Recently I needed to replace many patterns in a column of strings. Here is a short example. Imagine we have a data frame like this:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;r&quot;&gt;ABData &amp;lt;- data.frame(a = c(&amp;quot;London, UK&amp;quot;, &amp;quot;Oxford, UK&amp;quot;, &amp;quot;Berlin, DE&amp;quot;, &amp;quot;Hamburg, DE&amp;quot;, &amp;quot;Oslo, NO&amp;quot;), b = c(8, 0.1, 3, 2, 1))
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ok, now I want to replace the &lt;code&gt;UK&lt;/code&gt; and &lt;code&gt;DE&lt;/code&gt; parts of the strings with &lt;code&gt;England&lt;/code&gt; and &lt;code&gt;Germany&lt;/code&gt;. So I create a data frame with two columns. The first records the pattern and the second records what I want to replace the pattern with:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;r&quot;&gt;Replaces &amp;lt;- data.frame(from = c(&amp;quot;UK&amp;quot;, &amp;quot;DE&amp;quot;), to = c(&amp;quot;England&amp;quot;, &amp;quot;Germany&amp;quot;))
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now I can just use &lt;code&gt;FindReplace&lt;/code&gt; to make the replacements all at once:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;r&quot;&gt;library(DataCombine)

ABNewDF &amp;lt;- FindReplace(data = ABData, Var = &amp;quot;a&amp;quot;, replaceData = Replaces, from = &amp;quot;from&amp;quot;, to = &amp;quot;to&amp;quot;, exact = FALSE)

# Show changes
ABNewDF
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code&gt;##                  a   b
## 1  London, England 8.0
## 2  Oxford, England 0.1
## 3  Berlin, Germany 3.0
## 4 Hamburg, Germany 2.0
## 5         Oslo, NO 1.0
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you set &lt;code&gt;exact = TRUE&lt;/code&gt; then &lt;code&gt;FindReplace&lt;/code&gt; will only replace exact pattern matches. Also, you can set &lt;code&gt;vector = TRUE&lt;/code&gt; to return only a vector of the column you replaced (the &lt;code&gt;Var&lt;/code&gt; column), rather than the whole data frame.&lt;/p&gt;

&lt;h1 id=&quot;MoveFront&quot;&gt;&lt;code&gt;MoveFront&lt;/code&gt;&lt;/h1&gt;

&lt;p&gt;On occasion I&amp;#39;ve wanted to move a few variables to the front of a data frame. The &lt;code&gt;MoveFront&lt;/code&gt; function makes this pretty simple. It only has two arguments: &lt;code&gt;data&lt;/code&gt; and &lt;code&gt;Var&lt;/code&gt;. Data is the data frame and &lt;code&gt;Var&lt;/code&gt; is a character vector with the columns I want to move to the front of the data frame in the order that I want them. Here is an example:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;r&quot;&gt;# Create dummy data
A &amp;lt;- B &amp;lt;- C &amp;lt;- 1:50
OldOrder &amp;lt;- data.frame(A, B, C)

names(OldOrder)
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code&gt;## [1] &amp;quot;A&amp;quot; &amp;quot;B&amp;quot; &amp;quot;C&amp;quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&quot;r&quot;&gt;# Move B and A to the front
NewOrder2 &amp;lt;- MoveFront(OldOrder, c(&amp;quot;B&amp;quot;, &amp;quot;A&amp;quot;))
names(NewOrder2)
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code&gt;## [1] &amp;quot;B&amp;quot; &amp;quot;A&amp;quot; &amp;quot;C&amp;quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;h1 id=&quot;rmExcept&quot;&gt;&lt;code&gt;rmExcept&lt;/code&gt;&lt;/h1&gt;

&lt;p&gt;Finally, sometimes I want to clean up my work space and only keep specific objects. I want to remove everything else. This is straightforward with &lt;code&gt;rmExcept&lt;/code&gt;. For example:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;r&quot;&gt;# Create objects
A &amp;lt;- 1
B &amp;lt;- 2
C &amp;lt;- 3

# Remove all objects except for A
rmExcept(&amp;quot;A&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code&gt;## Removed the following objects:
## ABData, ABNewDF, B, C, NewOrder2, OldOrder, Replaces
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&quot;r&quot;&gt;# Show workspace
ls()
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code&gt;## [1] &amp;quot;A&amp;quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can set the environment you want to clean up with the &lt;code&gt;envir&lt;/code&gt; argument. By default is is your global environment.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/8068884889501402455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/8068884889501402455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/8068884889501402455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/8068884889501402455'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2013/12/three-quick-and-simple-data-cleaning.html' title='Three Quick and Simple Data Cleaning Helper Functions (December 2013)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-2999289374540492304</id><published>2013-09-02T14:27:00.000+01:00</published><updated>2014-02-02T12:16:39.350+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cox Proportional Hazards Models"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><category scheme="http://www.blogger.com/atom/ns#" term="simPH"/><category scheme="http://www.blogger.com/atom/ns#" term="simulations"/><title type='text'>Showing results from Cox Proportional Hazard Models in R with simPH</title><content type='html'>&lt;p&gt;&lt;strong&gt;Update 2 February 2014:&lt;/strong&gt; A new version of simPH (Version 1.0) will soon be available for download from CRAN. It allows you to plot using points, ribbons, and (new) lines. See the &lt;a href=&quot;http://ssrn.com/abstract=2318977&quot;&gt;updated package description paper&lt;/a&gt; for examples. Note that the &lt;code&gt;ribbons&lt;/code&gt; argument will no longer work as in the examples below. Please use &lt;code&gt;type = &#39;ribbons&#39;&lt;/code&gt; (or &lt;code&gt;&#39;points&#39;&lt;/code&gt; or &lt;code&gt;&#39;lines&#39;&lt;/code&gt;).

&lt;/p&gt;

&lt;p&gt;Effectively showing estimates and uncertainty from &lt;a href=&quot;http://en.wikipedia.org/wiki/Proportional_hazards_models&quot;&gt;Cox Proportional Hazard (PH) models&lt;/a&gt;, especially for interactive and non-linear effects, can be challenging with currently available software. So, researchers often just simply display a results table. These are pretty useless for Cox PH models. It is difficult to decipher a simple linear variable&amp;#8217;s estimated effect and basically impossible to understand time interactions, interactions between variables, and nonlinear effects without the reader further calculating quantities of interest for a variety of fitted values.&lt;/p&gt;

&lt;p&gt;So, I&amp;#8217;ve been putting together the &lt;a href=&quot;https://github.com/christophergandrud/SimPH&quot;&gt;simPH&lt;/a&gt; R package to hopefully make it easier to show results from Cox PH models. The package uses plots of post-estimation simulations (the same idea behind the plotting facilities in the &lt;a href=&quot;http://projects.iq.harvard.edu/zelig&quot;&gt;Zelig&lt;/a&gt; package) to show Cox PH estimates and the uncertainty surrounding them.&lt;/p&gt;

&lt;p&gt;Here I want to give an overview of how to use &lt;code&gt;simPH&lt;/code&gt;. First the general process, then a few examples. Have a look at &lt;a href=&quot;http://ssrn.com/abstract=2318977&quot;&gt;this paper&lt;/a&gt; for details about the math behind the graphs.&lt;/p&gt;

&lt;h3 id=&quot;generalsteps&quot;&gt;General Steps&lt;/h3&gt;

&lt;p&gt;There are three steps to use &lt;code&gt;simPH&lt;/code&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Estimate a Cox PH model in the usual way with the &lt;code&gt;coxph&lt;/code&gt; command in the &lt;a href=&quot;http://cran.r-project.org/web/packages/survival/index.html&quot;&gt;survival&lt;/a&gt; package.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Simulate quantities of interest--&lt;a href=&quot;http://en.wikipedia.org/wiki/Hazard_ratio&quot;&gt;hazard ratios&lt;/a&gt;, &lt;a href=&quot;http://pan.oxfordjournals.org/content/19/2/227.abstract&quot;&gt;first differences&lt;/a&gt;, &lt;a href=&quot;http://pan.oxfordjournals.org/content/14/1/63&quot;&gt;marginal effect&lt;/a&gt;, &lt;a href=&quot;http://pan.oxfordjournals.org/content/19/2/227.abstract&quot;&gt;relative hazards&lt;/a&gt;, or &lt;a href=&quot;http://en.wikipedia.org/wiki/Survival_analysis#Hazard_function_and_cumulative_hazard_function&quot;&gt;hazard rates&lt;/a&gt;--with the appropriate &lt;code&gt;simPH&lt;/code&gt; simulation command.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Plot the simulations with the &lt;code&gt;simGG&lt;/code&gt; method.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;afewexamples&quot;&gt;A Few Examples&lt;/h3&gt;

&lt;p&gt;Here are some basic examples that illustrate the process and key syntax. Before getting started you can install &lt;code&gt;simPH&lt;/code&gt; in the normal R way from CRAN.&lt;/p&gt;

&lt;h4 id=&quot;lineareffects&quot;&gt;Linear effects&lt;/h4&gt;

&lt;p&gt;Let&amp;#8217;s look at a simple example with a linear non-interactive effect. The data set I&amp;#8217;m using is from &lt;a href=&quot;http://www.jstor.org/stable/3088394&quot;&gt;Carpenter (2002)&lt;/a&gt;. It is included with &lt;code&gt;simPH&lt;/code&gt;. See the package documentation for details.&lt;/p&gt;

&lt;p&gt;First, let&amp;#8217;s estimate a Cox PH model where the event of interest is a drug receiving FDA approval.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# Load packages
library(survival)
library(simPH)

# Load Carpenter (2002) data
data(&quot;CarpenterFdaData&quot;)

# Estimate survival model
 M1 &lt;- coxph(Surv(acttime, censor) ~ prevgenx + lethal +
            deathrt1 + acutediz + hosp01  + hhosleng +
            mandiz01 + femdiz01 + peddiz01 + orphdum +
            vandavg3 + wpnoavg3 + condavg3 + orderent +
            stafcder, data = CarpenterFdaData)

&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now say we want to examine the effect that the number of FDA staff reviewing a drug application has on it being accepted. This variable is called &lt;code&gt;stafcder&lt;/code&gt; in the model we just estimated. To do this let&amp;#8217;s use &lt;code&gt;simPH&lt;/code&gt; to simulate hazard ratios. We will simulate hazard ratios for units \(j\) and \(l\), i.e. \(\frac{h_{j}(t)}{h_{l}(t)}\) using &lt;code&gt;simPH&lt;/code&gt;&amp;#8217;s &lt;code&gt;coxsimLinear&lt;/code&gt; command, because we estimate the effect of the number of staff as linear. In the following code we use the &lt;code&gt;Xj&lt;/code&gt; argument to set the \(j\) values. We could use &lt;code&gt;Xl&lt;/code&gt; also, but as we don&amp;#8217;t &lt;code&gt;coxsimLinear&lt;/code&gt; assumes all \(x_{l}\) are 0. &lt;/p&gt;

&lt;p&gt;Notice that the argument &lt;code&gt;spin = TRUE&lt;/code&gt;. This finds the shortest 95% probability interval of the simulations using the &lt;a href=&quot;http://arxiv.org/pdf/1302.2142v1.pdf&quot;&gt;SPIn method&lt;/a&gt;. SPIn can be especially useful for showing simulated quantities of interest generated from Cox PH models, because then can often be crowded close to a lower boundary (0 in the case of hazard rates). We should be more interested in the area with the highest probability&amp;#8211;most simulated values&amp;#8211;rather than an arbitrary central interval. That being said, if &lt;code&gt;spin = FALSE&lt;/code&gt;, then we will simply find the central 95% interval of the simulations.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# Simulate and plot Hazard Ratios for stafcder variable
Sim1 &amp;lt;- coxsimLinear(M1, b = &amp;quot;stafcder&amp;quot;, 
                    qi = &amp;quot;Hazard Ratio&amp;quot;, ci = 0.95,
                    Xj = seq(1237, 1600, by = 2), spin = TRUE)
# Plot
simGG(Sim1)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href=&quot;http://figshare.com/articles/Example_Linear_Effect_Created_by_simPH/785759&quot;&gt;&lt;img src=&quot;http://figshare.com/download/file/1187133/1&quot; style=&quot;display: block; margin: auto;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notice in the plot that each simulation is plotted as an individual point. These are all of the simulations in the shortest 95% probability interval. Each point has a bit of transparency (they are 90% transparent by default). So the plot is &lt;a href=&quot;https://dl. dropboxusercontent.com/u/3011470/WorkingPapers/HSIANG_VISUALLY_WEIGHTED_ REGRESSION_v1.pdf&quot;&gt;visually weighted&lt;/a&gt;; the darker areas of the graph have a higher concentration of the simulations. This gives us a very clear picture of the simulation distribution, i.e. the estimated effect and our uncertainty about it. &lt;/p&gt;

&lt;p&gt;If you don&amp;#8217;t want to plot every point, you can simply use ribbons showing the constricted 95% and the middle 50% of this interval. To do this simply use the &lt;code&gt;ribbons = TRUE&lt;/code&gt; argument.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;simGG(Sim1, ribbons = TRUE, alpha = 0.5)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href=&quot;http://figshare.com/articles/Example_Linear_Effect_Graph_Created_By_simPH/785758&quot;&gt;&lt;img src=&quot;http://figshare.com/download/file/1187132/1&quot; title=&quot;plot of chunk unnamed-chunk-4&quot; alt=&quot;plot of chunk unnamed-chunk-4&quot; style=&quot;display: block; margin: auto;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notice the &lt;code&gt;alpha = 0.5&lt;/code&gt; argument. This increased the transparency of the widest ribbon to 50%.&lt;/p&gt;

&lt;p&gt;The syntax we&amp;#8217;ve used here is very similar to what we use when we are working with nonlinear effects estimated with polynomials and splines. Post-estimation simulations can be run with the &lt;code&gt;coxsimPoly&lt;/code&gt; and &lt;code&gt;coxsimSpline&lt;/code&gt; commands. See the &lt;code&gt;simPH&lt;/code&gt; documentation for more examples.&lt;/p&gt;

&lt;h4 id=&quot;interactions&quot;&gt;Interactions&lt;/h4&gt;

&lt;p&gt;The syntax for two-way interactions simulated with the &lt;code&gt;coxsimInteract&lt;/code&gt; command is a little different. Using the same data, let&amp;#8217;s look at how to show results for interactions. In the following model we are interacting two variables &lt;code&gt;lethal&lt;/code&gt; and &lt;code&gt;prevgenx&lt;/code&gt;. We can think of these variables as &lt;code&gt;X1&lt;/code&gt; and &lt;code&gt;X2&lt;/code&gt;, respectively. For interactions it can be useful to examine the &lt;a href=&quot;http://pan.oxfordjournals.org/content/14/1/63&quot;&gt;marginal effect&lt;/a&gt;. To find the marginal effect of a one unit increase in the &lt;code&gt;lethal&lt;/code&gt; variable given various values of &lt;code&gt;prevgenx&lt;/code&gt; let&amp;#8217;s use the following code:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# Estimate the model
M2 &lt;- coxph(Surv(acttime, censor) ~ lethal*prevgenx, data = CarpenterFdaData)
 
# Simulate Marginal Effect of lethal for multiple values of prevgenx
Sim2 &lt;- coxsimInteract(M2, b1 = &quot;lethal&quot;, b2 = &quot;prevgenx&quot;,
                       qi = &quot;Marginal Effect&quot;,
         X2 = seq(2, 115, by = 2), nsim = 1000)

# Plot the results
simGG(Sim2, ribbons = TRUE, alpha = 0.5, xlab = &quot;\nprevgenx&quot;,
      ylab = &quot;Marginal effect of lethal\n&quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href=&quot;http://figshare.com/articles/simPH_Marginal_Effect_Example/785760&quot;&gt;&lt;img src=&quot;http://figshare.com/download/file/1187134/1&quot; title=&quot;plot of chunk unnamed-chunk-5&quot; alt=&quot;plot of chunk unnamed-chunk-5&quot; style=&quot;display: block; margin: auto;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The order of the &lt;code&gt;X1&lt;/code&gt; and &lt;code&gt;X2&lt;/code&gt; variables in the interactions matters. The marginal effect is always calculated for the &lt;code&gt;X1&lt;/code&gt; variable over a range of &lt;code&gt;X2&lt;/code&gt; values.&lt;/p&gt;

&lt;p&gt;Notice also that we set the &lt;code&gt;x&lt;/code&gt; and &lt;code&gt;y&lt;/code&gt; axis labels with the &lt;code&gt;xlab&lt;/code&gt; and &lt;code&gt;ylab&lt;/code&gt; arguments.&lt;/p&gt;

&lt;h4 id=&quot;time-varyingeffects&quot;&gt;Time-varying Effects&lt;/h4&gt;

&lt;p&gt;Finally, let&amp;#8217;s look at how to use with the &lt;code&gt;coxsimtvc&lt;/code&gt; command to show results from effects that we estimate to vary over time. Here we are going to use another data set that is also included with &lt;code&gt;simPH&lt;/code&gt;. The event of interest in the following model is when deliberation is stopped on a European Union directive (the model is from &lt;a href=&quot;http://pan.oxfordjournals.org/content/19/2/227.short&quot;&gt;Licht (2011)&lt;/a&gt;). We will create hazard ratios for the effect that the number of backlogged items (&lt;code&gt;backlog&lt;/code&gt;) has on deliberation time. We will estimate the effect as a log-time interaction.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# Load Golub &amp; Steunenberg (2007) data. The data is included with simPH.
data(&quot;GolubEUPData&quot;)

# Create natural log-time interactions
Golubtvc &lt;- function(x){
  tvc(data = GolubEUPData, b = x, tvar = &quot;end&quot;, tfun = &quot;log&quot;)
}
GolubEUPData$Lcoop &lt;- Golubtvc(&quot;coop&quot;)
GolubEUPData$Lqmv &lt;- Golubtvc(&quot;qmv&quot;)
GolubEUPData$Lbacklog &lt;- Golubtvc(&quot;backlog&quot;)
GolubEUPData$Lcodec &lt;- Golubtvc(&quot;codec&quot;)
GolubEUPData$Lqmvpostsea &lt;- Golubtvc(&quot;qmvpostsea&quot;)
GolubEUPData$Lthatcher &lt;- Golubtvc(&quot;thatcher&quot;)

# Estimate model
M1 &lt;- coxph(Surv(begin, end, event) ~ qmv + qmvpostsea + qmvpostteu +
              coop + codec + eu9 + eu10 + eu12 + eu15 + thatcher + 
              agenda + backlog + Lqmv + Lqmvpostsea + Lcoop + Lcodec +
              Lthatcher + Lbacklog,
            data = GolubEUPData, ties = &quot;efron&quot;)

&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Much of the first half of the code is dedicated to creating the log-time interactions with the &lt;code&gt;tvc&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;Now we simply create the simulations for a range of values of &lt;code&gt;backlog&lt;/code&gt; and plot them. Note in the following code that we tell &lt;code&gt;coxsimtvc&lt;/code&gt; the name of both the base &lt;code&gt;backlog&lt;/code&gt; variable and its log-time interaction term &lt;code&gt;Lbacklog&lt;/code&gt; using the &lt;code&gt;btvc&lt;/code&gt; argument. We also need to tell &lt;code&gt;coxsimtvc&lt;/code&gt; that it is a log-time interaction with &lt;code&gt;tfun = &amp;quot;log&amp;quot;&lt;/code&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# Create simtvc object for relative hazard
Sim2 &lt;- coxsimtvc(obj = M1, b = &quot;backlog&quot;, btvc = &quot;Lbacklog&quot;,
                  qi = &quot;Relative Hazard&quot;, Xj = seq(40, 200, 40),
                  tfun = &quot;log&quot;, from = 1200, to = 2000, by = 10,
                  nsim = 500)

# Create relative hazard plot
simGG(Sim2, xlab = &quot;\nTime in Days&quot;, ribbons = TRUE,
        leg.name = &quot;Backlogged \n Items&quot;, alpha = 0.2)

&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href=&quot;http://figshare.com/articles/Relative_Hazards_of_Backlog_on_EU_Directive_Deliberation_Time/785761&quot;&gt;&lt;img src=&quot;http://figshare.com/download/file/1187135/1&quot; title=&quot;plot of chunk unnamed-chunk-7&quot; alt=&quot;plot of chunk unnamed-chunk-7&quot; style=&quot;display: block; margin: auto;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4 id=&quot;simggplotsareggplot2&quot;&gt;simGG Plots are ggplot2&lt;/h4&gt;

&lt;p&gt;Finally, because almost every plot created by &lt;code&gt;simGG&lt;/code&gt; is a &lt;a href=&quot;http://docs.ggplot2.org/current/&quot;&gt;ggplot2&lt;/a&gt; plot, you can use almost the full range of customisation options that that package allows. See the &lt;a href=&quot;http://docs.ggplot2.org/current/&quot;&gt;ggplot2&lt;/a&gt; documentation for many examples.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/2999289374540492304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/2999289374540492304' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/2999289374540492304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/2999289374540492304'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2013/09/showing-results-from-cox-proportional.html' title='Showing results from Cox Proportional Hazard Models in R with simPH'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-5845272374699227686</id><published>2013-08-23T04:42:00.000+01:00</published><updated>2013-08-23T04:42:27.794+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="data hosting"/><category scheme="http://www.blogger.com/atom/ns#" term="github"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><title type='text'>GitHub renders CSV in the browser, becomes even better for social data set creation</title><content type='html'>&lt;p&gt;I&#39;ve &lt;a href=&quot;http://christophergandrud.github.io/RepResR-RStudio/&quot;&gt;written&lt;/a&gt; in a &lt;a href=&quot;http://polmeth.wustl.edu/methodologist/tpm_v20_n2.pdf&quot;&gt;number&lt;/a&gt; of &lt;a href=&quot;http://christophergandrud.blogspot.kr/2013/01/sourcegithubdata-simple-function-for.html&quot;&gt;places&lt;/a&gt; about how &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt; can be a great place to store data. Unlike basically all other web data storage sites (many of which I really like such as &lt;a href=&quot;http://thedata.org/&quot;&gt;Dataverse&lt;/a&gt; and &lt;a href=&quot;http://figshare.com/&quot;&gt;FigShare&lt;/a&gt;) GitHub enables deep social data set development and fits nicely into a reproducible research workflow with R.&lt;/p&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://github.com/christophergandrud/Disproportionality_Data/blob/master/Disproportionality.csv#L2&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjEPc8DXjJ6az_OZXiZmaKJdBAkE6kpG-DfApkdMmj3mLjIWCyZuXogELqGoFP3L5KodYgUDz5tCxms09Zk15L8iMupiQTJl7EKJwB29FYK4xGOqbQuzYwsvY8g1_yrLeM4jlW/s320/Disproportionality_Data_Disproportionality.csv_at_master_%C2%B7_christophergandrud_Disproportionality_Data.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;One negative though, especially compared to FigShare, was that there was no easy way to view CSV or TSV data files in the browser. Unless you downloaded the data and opened it in Excel or an R viewer or whatever, you had to look at the raw data file in the browser. It&#39;s basically impossible to make sense of a data set of any size like this.&lt;/p&gt;

&lt;p&gt;However, from at least today, GitHub now renders the data set in the browser as you would expect. Take a look at &lt;a href=&quot;https://github.com/blog/1601-see-your-csvs&quot;&gt;their blog post&lt;/a&gt; for the details.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/5845272374699227686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/5845272374699227686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/5845272374699227686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/5845272374699227686'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2013/08/github-renders-csv-in-browser-becomes.html' title='GitHub renders CSV in the browser, becomes even better for social data set creation'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjEPc8DXjJ6az_OZXiZmaKJdBAkE6kpG-DfApkdMmj3mLjIWCyZuXogELqGoFP3L5KodYgUDz5tCxms09Zk15L8iMupiQTJl7EKJwB29FYK4xGOqbQuzYwsvY8g1_yrLeM4jlW/s72-c/Disproportionality_Data_Disproportionality.csv_at_master_%C2%B7_christophergandrud_Disproportionality_Data.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-7123482737287344054</id><published>2013-07-16T00:35:00.000+01:00</published><updated>2013-12-20T10:23:30.785+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><category scheme="http://www.blogger.com/atom/ns#" term="reproducible research"/><title type='text'>Getting Started with Reproducible Research: A chapter from my new book</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/Reproducible-Research-RStudio-Chapman-Series/dp/1466572841/ref=sr_1_1?ie=UTF8&amp;qid=1365636095&amp;sr=8-1&amp;keywords=christopher+gandrud&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY-w0Tc5v-PESyk3Yb9vW6yhHUQPwvS8OzVoJL7lXceD0OXIfwsWOHRJ36gKzfQ_ZY9rdPpkZZ0L917PIY0AWQtIVr46MkFkeDMk2n4Z90-w8f-VqK269W1Tlx6fV-2jRkf46_/s320/RepResCover.jpg&quot; width=&quot;160&quot; height=&quot;220&quot;/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is an abridged excerpt from Chapter 2 of my new book &lt;a href=&quot;http://christophergandrud.github.io/RepResR-RStudio/&quot;&gt;Reproducible Research with R and RStudio&lt;/a&gt;. It&#39;s published by &lt;a href=&quot;http://www.crcpress.com/product/isbn/9781466572843&quot;&gt;Chapman &amp;amp; Hall/CRC Press&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can purchase it on &lt;a href=&quot;http://www.amazon.com/Reproducible-Research-RStudio-Chapman-Series/dp/1466572841/ref=sr_1_1?ie=UTF8&amp;amp;qid=1365636095&amp;amp;sr=8-1&amp;amp;keywords=christopher+gandrud&quot;&gt;Amazon&lt;/a&gt;. &quot;Search inside this book&quot; includes a complete table of contents.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Researchers often start thinking about making their work reproducible near the end of the research process when they write up their results or maybe even later when a journal requires their data and code be made available for publication. Or maybe even later when another researcher asks if they can use the data from a published article to reproduce the findings. By then there may be numerous versions of the data set and records of the analyses stored across multiple folders on the researcher’s computers. It can be difficult and time consuming to sift through these files to create an accurate account of how the results were reached. Waiting until near the end of the research process to start thinking about reproducibility can lead to incomplete documentation that does not give an accurate account of how findings were made. Focusing on reproducibility from the beginning of the process and continuing to follow a few simple guidelines throughout your research can help you avoid these problems. Remember &quot;reproducibility is not an afterthought–it is something that must be built into the project from the beginning&quot; (&lt;a href=&quot;http://biostatistics.oxfordjournals.org/content/11/3/385.short&quot;&gt;Donoho, 2010&lt;/a&gt;, 386).&lt;/p&gt;

&lt;p&gt;This chapter first gives you a brief overview of the reproducible research process: a workflow for reproducible research. Then it covers some of the key guidelines that can help make your research more reproducible.&lt;/p&gt;

&lt;h1&gt;The Big Picture: A Workflow for Reproducible Research&lt;/h1&gt;

&lt;p&gt;The three basic stages of a typical computational empirical research project are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;data gathering,&lt;/li&gt;
&lt;li&gt;data analysis,&lt;/li&gt;
&lt;li&gt;results presentation.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Instead of starting to use the individual tools of reproducible research as soon as you learn them I recommend briefly stepping back and considering how the stages of reproducible research tie together overall. This will make your workflow more coherent from the beginning and save you a lot of backtracking later on. The figure below illustrates the workflow. Notice that most of the arrows connecting the workflow’s parts point in both directions, indicating that you should always be thinking how to make it easier to go backwards through your research, i.e. reproduce it, as well as forwards.&lt;/p&gt;

&lt;hr /&gt;

&lt;h3&gt;Example Workflow &amp;amp; A Selection of Commands to Tie it Together&lt;/h3&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwAsAUnFcPZloBoYKaG7dMdX48DkibhxjZAZ4iiUOrvkm0N_MymV6hhyphenhyphenBtPJXUlcuSY9zDy6HEWVX8silAbC2tmZ4cuR-E-LCGkUZ7qKTyvL7jjebzzR9WL8Qzz8kgeaE9XUVv/s1600/Workflow.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwAsAUnFcPZloBoYKaG7dMdX48DkibhxjZAZ4iiUOrvkm0N_MymV6hhyphenhyphenBtPJXUlcuSY9zDy6HEWVX8silAbC2tmZ4cuR-E-LCGkUZ7qKTyvL7jjebzzR9WL8Qzz8kgeaE9XUVv/s640/Workflow.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;hr /&gt;

&lt;p&gt;Around the edges of the figure are some of the commands that make it easier to go forwards and backwards through the process. These commands tie your research together. For example, you can use &lt;a href=&quot;http://en.wikipedia.org/wiki/Application_programming_interface&quot;&gt;API&lt;/a&gt;-based R packages to gather data from the internet. You can use R’s &lt;code&gt;merge&lt;/code&gt; command to combine data gathered from different sources into one data set. The &lt;code&gt;getURL&lt;/code&gt; from R’s &lt;a href=&quot;http://cran.r-project.org/web/packages/RCurl/index.html&quot;&gt;RCurl&lt;/a&gt; package and the read.table commands can be used to bring this data set into your statistical analyses. The &lt;a href=&quot;http://yihui.name/knitr/&quot;&gt;knitr&lt;/a&gt; package then ties your analyses into your presentation documents. This includes the code you used, the figures you created, and, with the help of tools such as the &lt;a href=&quot;http://cran.r-project.org/web/packages/xtable/index.html&quot;&gt;xtable&lt;/a&gt; package, tables of results. You can even tie multiple presentation documents together. For example, you can access the same figure for use in a LaTeX article and a Markdown created website with the &lt;code&gt;includegraphics&lt;/code&gt; and &lt;code&gt;![]()&lt;/code&gt; commands, respectively. This helps you maintain a consistent presentation of results across multiple document types.&lt;/p&gt;

&lt;h1&gt;Practical Tips for Reproducible Research&lt;/h1&gt;

&lt;p&gt;Before learning the details of the reproducible research workflow with R and RStudio, it’s useful to cover a few broad tips that will help you organize your research process and put these skills in perspective. The tips are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Document everything!,&lt;/li&gt;
&lt;li&gt;Everything is a (text) file,&lt;/li&gt;
&lt;li&gt;All files should be human readable,&lt;/li&gt;
&lt;li&gt;Explicitly tie your files together,&lt;/li&gt;
&lt;li&gt;Have a plan to organize, store, and make your files available.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Using these tips will help make your computational research really reproducible.&lt;/p&gt;

&lt;h2&gt;Document everything!&lt;/h2&gt;

&lt;p&gt;In order to reproduce your research others must be able to know what you did. You have to tell them what you did by documenting as much of your research process as possible. Ideally, you should tell your readers how you gathered your data, analyzed it, and presented the results. Documenting everything is the key to reproducible research and lies behind all of the other tips here.&lt;/p&gt;

&lt;h2&gt;Everything is a (text) file&lt;/h2&gt;

&lt;p&gt;Your documentation is stored in files that include data, analysis code, the write up of results, and explanations of these files (e.g. data set codebooks, session info files, and so on). Ideally, you should use the simplest file format possible to store this information. Usually the simplest file format is the humble, but versatile, text file.&lt;/p&gt;

&lt;p&gt;Text files are extremely nimble. They can hold your data in, for example, comma-separated values (&lt;strong&gt;.csv&lt;/strong&gt;) format. They can contain your analysis code in &lt;strong&gt;.R&lt;/strong&gt; files. And they can be the basis for your presentations as markup documents like &lt;strong&gt;.tex&lt;/strong&gt; or &lt;strong&gt;.md&lt;/strong&gt;, for LaTeX and Markdown files, respectively. All of these files can be opened by any program that can read text files.&lt;/p&gt;

&lt;p&gt;One reason reproducible research is best stored in text files is that this helps future proof your research. Other file formats, like those used by Microsoft Word (&lt;strong&gt;.docx&lt;/strong&gt;) or Excel (&lt;strong&gt;.xlsx&lt;/strong&gt;), change regularly and may not be compatible with future versions of these programs. Text files, on the other hand, can be opened by a very wide range of currently existing programs and, more likely than not, future ones as well. Even if future researchers do not have R or a LaTeX distribution, they will still be able to open your text files and, aided by frequent comments (see below), be able to understand how we conducted your research (&lt;a href=&quot;http://polmeth.wustl.edu/methodologist/tpm_v18_n2.pdf&quot;&gt;Bowers, 2011&lt;/a&gt;, 3).&lt;/p&gt;

&lt;p&gt;Text files are also very easy to search and manipulate with a wide range of programs–such as R and RStudio–that can find and replace text characters as well as merge and separate files. Finally, text files are easy to version and changes can be tracked using programs such as &lt;a href=&quot;http://git-scm.com/&quot;&gt;Git&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;All files should be human readable&lt;/h2&gt;

&lt;p&gt;Treat all of your research files as if someone who has not worked on the project will, in the future, try to understand them. Computer code is a way of communicating with the computer. It is &#39;machine readable&#39; in that the computer is able to use it to understand what you want to do. However, there is a very good chance that other people (or you six months in the future) will not understand what you were telling the computer. So, you need to make all of your files &#39;human readable&#39;. To make them human readable, you should comment on your code with the goal of communicating its design and purpose (&lt;a href=&quot;http://arxiv.org/pdf/1210.0530v3&quot;&gt;Wilson et al., 2012&lt;/a&gt;). With this in mind it is a good idea to comment frequently (&lt;a href=&quot;http://polmeth.wustl.edu/methodologist/tpm_v18_n2.pdf&quot;&gt;Bowers, 2011&lt;/a&gt;, 3) and format your code using a style guide (&lt;a href=&quot;http://www.nyu.edu/classes/nagler/quant2/coding_style.html&quot;&gt;Nagler, 1995&lt;/a&gt;). For especially important pieces of code you should use literate programming–where the source code and the presentation text describing its design and purpose appear in the same document (&lt;a href=&quot;http://www-cs-faculty.stanford.edu/~uno/lp.html&quot;&gt;Knuth, 1992&lt;/a&gt;). Doing this will make it very clear to others how you accomplished a piece of research.&lt;/p&gt;

&lt;h2&gt;Explicitly tie your files together&lt;/h2&gt;

&lt;p&gt;If everything is just a text file then research projects can be thought of as individual text files that have a relationship with one another. They are tied together. A data file is used as input for an analysis file. The results of an analysis are shown and discussed in a markup file that is used to create a PDF document. Researchers often do not explicitly document the relationships between files that they used in their research. For example, the results of an analysis–a table or figure–may be copied and pasted into a presentation document. It can be very difficult for future researchers to trace the table or figure back to a particular statistical model and a particular data set without clear documentation. Therefore, it is important to make the links between your files explicit.&lt;/p&gt;

&lt;p&gt;Tie commands are the most dynamic way to explicitly link your files together (see the figure above for examples). These commands instruct the computer program you are using to use information from another file.&lt;/p&gt;

&lt;h2&gt;Have a plan to organize, store, &amp;amp; make your files available&lt;/h2&gt;

&lt;p&gt;Finally, in order for independent researchers to reproduce your work they need to be able access the files that instruct them how to do this. Files also need to be organized so that independent researchers can figure out how they fit together. So, from the beginning of your research process you should have a plan for organizing your files and a way to make them accessible.&lt;/p&gt;

&lt;p&gt;One rule of thumb for organizing your research in files is to limit the amount of content any one file has. Files that contain many different operations can be very difficult to navigate, even if they have detailed comments. For example, it would be very difficult to find any particular operation in a file that contained the code used to gather the data, run all of the statistical models, and create the results figures and tables. If you have a hard time finding things in a file you created, think of the difficulties independent researchers will have!&lt;/p&gt;

&lt;p&gt;Because we have so many ways to link files together there is really no need to lump many different operations into one file. So, we can make our files modular. One source code file should be used to complete one or just a few tasks. Breaking your operations into discrete parts will also make it easier for you and others to find errors (&lt;a href=&quot;(http://www.nyu.edu/classes/nagler/quant2/coding_style.html&quot;&gt;Nagler, 1995&lt;/a&gt;, 490).&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/7123482737287344054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/7123482737287344054' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/7123482737287344054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/7123482737287344054'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2013/07/getting-started-with-reproducible.html' title='Getting Started with Reproducible Research: A chapter from my new book'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY-w0Tc5v-PESyk3Yb9vW6yhHUQPwvS8OzVoJL7lXceD0OXIfwsWOHRJ36gKzfQ_ZY9rdPpkZZ0L917PIY0AWQtIVr46MkFkeDMk2n4Z90-w8f-VqK269W1Tlx6fV-2jRkf46_/s72-c/RepResCover.jpg" height="72" width="72"/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-3172074441084111891</id><published>2013-06-09T03:00:00.000+01:00</published><updated>2013-06-12T11:19:45.405+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="D3"/><category scheme="http://www.blogger.com/atom/ns#" term="network graphs"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><title type='text'>Quick and Simple D3 Network Graphs from R</title><content type='html'>&lt;a href=&quot;http://dl.dropboxusercontent.com/u/12581470/Presentations/OddsAndEnds/NetworkD3.html&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; style=&quot;float:right&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2sZf3iKRxH6a4f6fgKlKVO3dXkIEDdoJeaFssH32bdgQVlnbOygBc0xAQgJv0jIXtSKZYAYZT0gdV_TWI1ANWCTcw43HM2Yttywg8d-LsRyPYIbM88vAD4I2IZpGWvLiQXvSh/s320/NetworkD3.png&quot;/&gt;&lt;/a&gt;

&lt;p&gt;Sometimes I just want to quickly make a simple &lt;a href=&quot;http://d3js.org/&quot;&gt;D3&lt;/a&gt; JavaScript directed &lt;a href=&quot;http://bl.ocks.org/mbostock/4062045&quot;&gt;network graph&lt;/a&gt; with data in R. Because D3 network graphs can be manipulated in the browser&amp;ndash;i.e. nodes can be moved around and highlighted&amp;ndash;they&amp;#39;re really nice for data exploration. They&amp;#39;re also really nice in &lt;a href=&quot;http://slidify.org/&quot;&gt;HTML presentations&lt;/a&gt;. So I put together a bare-bones simple function&amp;ndash;called &lt;a href=&quot;https://gist.github.com/christophergandrud/5734624&quot;&gt;d3SimpleNetwork&lt;/a&gt; for turning an R data frame into a D3 network graph. &lt;/p&gt;

&lt;h1&gt;Arguments&lt;/h1&gt;

&lt;p&gt;By bare-bones I mean other than the arguments indicating the &lt;code&gt;Data&lt;/code&gt; data frame, as well as the &lt;code&gt;Source&lt;/code&gt; and &lt;code&gt;Target&lt;/code&gt; variables it only has three arguments: &lt;code&gt;height&lt;/code&gt;, &lt;code&gt;width&lt;/code&gt;, and &lt;code&gt;file&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;The data frame you use should have two columns that contain the source and target variables. Here&amp;#39;s an example using fake data:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;r&quot;&gt;Source &amp;lt;- c(&amp;quot;A&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot;)
Target &amp;lt;- c(&amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;J&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;F&amp;quot;, &amp;quot;G&amp;quot;, &amp;quot;H&amp;quot;, &amp;quot;I&amp;quot;)
NetworkData &amp;lt;- data.frame(Source, Target)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;height&lt;/code&gt; and &lt;code&gt;width&lt;/code&gt; arguments obviously set the graph&amp;#39;s frame height and width. You can tell &lt;code&gt;file&lt;/code&gt; the file name to output the graph to. This will create a standalone webpage. If you leave &lt;code&gt;file&lt;/code&gt; as &lt;code&gt;NULL&lt;/code&gt;, then the graph will be printed to the console. This can be useful if you are creating a document using &lt;a href=&quot;http://yihui.name/knitr/&quot;&gt;knitr&lt;/a&gt; &lt;a href=&quot;http://daringfireball.net/projects/markdown/&quot;&gt;Markdown&lt;/a&gt; &lt;strike&gt;or (similarly) &lt;a href=&quot;http://slidify.org/&quot;&gt;slidify&lt;/strike&gt;&lt;/a&gt;. Just set the code chunk &lt;code&gt;results=&amp;#39;asis&lt;/code&gt; and the graph will be rendered in the document.&lt;/p&gt;

&lt;h1&gt;Example&lt;/h1&gt;

&lt;p&gt;Here&amp;#39;s a simple example. First load &lt;code&gt;d3SimpleNetwork&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;r&quot;&gt;# Load packages to download d3SimpleNetwork
library(digest)
library(devtools)

# Download d3SimpleNetwork
source_gist(&amp;quot;5734624&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now just run the function with the example &lt;code&gt;NetworkData&lt;/code&gt; from before:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;r&quot;&gt;d3SimpleNetwork(NetworkData, height = 300, width = 700)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href=&quot;http://dl.dropboxusercontent.com/u/12581470/Presentations/OddsAndEnds/NetworkD3.html&quot;&gt;Click here&lt;/a&gt; for the fully manipulable version. If you click on individual nodes they will change colour and become easier to see. In the future I might add more customisability, but I kind of like the function&amp;#39;s current simplicity.&lt;/p&gt;

&lt;hr&gt;

&lt;strong&gt;Update 12 June 2013:&lt;/strong&gt; The original &lt;code&gt;d3SimpleNetwork&lt;/code&gt; command discussed here doesn&#39;t work easily with slidify. I have created a new &lt;a href=&quot;http://christophergandrud.github.io/d3Network/&quot;&gt;d3Network&lt;/a&gt; R package that does work well with slidify (and other knitr-created HTML slideshows). Use its &lt;code&gt;d3Network&lt;/code&gt; command and set the argument &lt;code&gt;iframe = TRUE&lt;/code&gt;.</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/3172074441084111891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/3172074441084111891' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/3172074441084111891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/3172074441084111891'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2013/06/quick-and-simple-d3-network-graphs-from.html' title='Quick and Simple D3 Network Graphs from R'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2sZf3iKRxH6a4f6fgKlKVO3dXkIEDdoJeaFssH32bdgQVlnbOygBc0xAQgJv0jIXtSKZYAYZT0gdV_TWI1ANWCTcw43HM2Yttywg8d-LsRyPYIbM88vAD4I2IZpGWvLiQXvSh/s72-c/NetworkD3.png" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-985779376726969232</id><published>2013-05-21T11:18:00.000+01:00</published><updated>2013-05-21T11:18:30.149+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="data manipulation"/><category scheme="http://www.blogger.com/atom/ns#" term="lag"/><category scheme="http://www.blogger.com/atom/ns#" term="lead"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><category scheme="http://www.blogger.com/atom/ns#" term="variable"/><title type='text'>Slide: one function for lag/lead variables in data frames, including time-series cross-sectional data</title><content type='html'>&lt;p&gt;I often want to quickly create a lag or lead variable in an R data frame. Sometimes I also want to create the lag or lead variable for different groups in a data frame, for example, if I want to lag GDP for each country in a data frame.&lt;/p&gt;

&lt;p&gt;I&amp;#39;ve found the various R methods for doing this hard to remember and usually need to look at old &lt;a href=&quot;http://christophergandrud.tumblr.com/post/35695637523/r-lagged-variables-with-time-series-cross-sectional&quot;&gt;blog&lt;/a&gt; &lt;a href=&quot;http://christophergandrud.tumblr.com/post/35758599399/r-1-lag&quot;&gt;posts&lt;/a&gt;. Any time we find ourselves using the same series of codes over and over, it&#39;s probably time to put them into a function. &lt;/p&gt;

&lt;p&gt;So, I added a new command&amp;ndash;&lt;code&gt;slide&lt;/code&gt;&amp;ndash;to the &lt;a href=&quot;http://cran.r-project.org/web/packages/DataCombine/DataCombine.pdf&quot;&gt;DataCombine&lt;/a&gt; R package (v0.1.5).&lt;/p&gt;

&lt;p&gt;Building on the &lt;code&gt;shift&lt;/code&gt; function TszKin Julian posted on his &lt;a href=&quot;http://ctszkin.com/2012/03/11/generating-a-laglead-variables/&quot;&gt;blog&lt;/a&gt;, &lt;code&gt;slide&lt;/code&gt; allows you to slide a variable up by any time unit to create a lead or down to create a lag. It returns the lag/lead variable to a new column in your data frame. It works with both data that has one observed unit and with time-series cross-sectional data.&lt;/p&gt;

&lt;p&gt;Note: your data needs to be in ascending time order with equally spaced time increments. For example 1995, 1996, 1997. &lt;/p&gt;

&lt;hr&gt;

&lt;h2&gt;Examples&lt;/h2&gt;

&lt;h3&gt;Not Cross-sectional data&lt;/h3&gt;

&lt;p&gt;Let&amp;#39;s create an example data set with three variables:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;r&quot;&gt;# Create time variable
Year &amp;lt;- 1980:1999

# Dummy covariates
A &amp;lt;- B &amp;lt;- 1:20

Data1 &amp;lt;- data.frame(Year, A, B)

head(Data1)
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code&gt;##   Year A B
## 1 1980 1 1
## 2 1981 2 2
## 3 1982 3 3
## 4 1983 4 4
## 5 1984 5 5
## 6 1985 6 6
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now let&amp;#39;s lag the &lt;code&gt;A&lt;/code&gt; variable by one time unit.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;r&quot;&gt;library(DataCombine)

DataSlid1 &amp;lt;- slide(Data1, Var = &amp;quot;A&amp;quot;, slideBy = -1)

head(DataSlid1)
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code&gt;##   Year A B A-1
## 1 1980 1 1  NA
## 2 1981 2 2   1
## 3 1982 3 3   2
## 4 1983 4 4   3
## 5 1984 5 5   4
## 6 1985 6 6   5
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The lag variable is automatically given the name &lt;code&gt;A-1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;To lag a variable (i.e. the lag value at a given time is the value of the non-lagged variable at a time in the past) set the &lt;code&gt;slideBy&lt;/code&gt; argument as a negative number. Lead variables, are created by using positive numbers in &lt;code&gt;slideBy&lt;/code&gt;. Lead variables at a given time have the value of the non-lead variable from some time in the future.&lt;/p&gt;

&lt;h3&gt;Time-series Cross-sectional data&lt;/h3&gt;

&lt;p&gt;Now let&amp;#39;s use &lt;code&gt;slide&lt;/code&gt; to create a lead variable with time-series cross-sectional data. First create the example data:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;r&quot;&gt;# Create time and unit ID variables
Year &amp;lt;- rep(1980:1983, 5)
ID &amp;lt;- sort(rep(seq(1:5), 4))

# Dummy covariates
A &amp;lt;- B &amp;lt;- 1:20

Data2 &amp;lt;- data.frame(Year, ID, A, B)

head(Data2)
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code&gt;##   Year ID A B
## 1 1980  1 1 1
## 2 1981  1 2 2
## 3 1982  1 3 3
## 4 1983  1 4 4
## 5 1980  2 5 5
## 6 1981  2 6 6
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now let&amp;#39;s create a two time unit lead variable based on &lt;code&gt;B&lt;/code&gt; for each unit identified by &lt;code&gt;ID&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;r&quot;&gt;DataSlid2 &amp;lt;- slide(Data2, Var = &amp;quot;B&amp;quot;, GroupVar = &amp;quot;ID&amp;quot;,
                    slideBy = 2)

head(DataSlid2)
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code&gt;##   Year ID A B B2
## 1 1980  1 1 1  3
## 2 1981  1 2 2  4
## 3 1982  1 3 3 NA
## 4 1983  1 4 4 NA
## 5 1980  2 5 5  7
## 6 1981  2 6 6  8
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Hopefully you&amp;#39;ll find &lt;code&gt;slide&lt;/code&gt; useful in your own data analysis. Any suggestions for improvement are always welcome.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/985779376726969232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/985779376726969232' title='61 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/985779376726969232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/985779376726969232'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2013/05/slide-one-function-for-laglead.html' title='Slide: one function for lag/lead variables in data frames, including time-series cross-sectional data'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>61</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-5503658742336471987</id><published>2013-04-17T07:36:00.000+01:00</published><updated>2013-04-17T09:39:31.951+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debt/GDP"/><category scheme="http://www.blogger.com/atom/ns#" term="mistakes"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><category scheme="http://www.blogger.com/atom/ns#" term="reproducible research"/><title type='text'>Reinhart &amp; Rogoff: Everyone makes coding mistakes, we need to make it easy to find them + Graphing uncertainty</title><content type='html'>&lt;p&gt;You may have already seen a lot written on the replication of Reinhart &amp;amp; Rogoff&amp;#8217;s (R &amp;amp R) &lt;a href=&quot;http://qz.com/75117/how-influential-was-the-study-warning-high-debt-kills-growth/&quot;&gt;much cited&lt;/a&gt; 2010 &lt;a href=&quot;http://www.nber.org/papers/w15639.pdf&quot;&gt;paper&lt;/a&gt; done by &lt;a href=&quot;http://www.peri.umass.edu/fileadmin/pdf/working_papers/working_papers_301-350/WP322.pdf&quot;&gt;Herndon, Ash, and Pollin&lt;/a&gt;. If you haven&amp;#8217;t, here is a round up of some of some of what has been written: &lt;a href=&quot;http://www.nextnewdeal.net/rortybomb/researchers-finally-replicated-reinhart-rogoff-and-there-are-serious-problems#.UW14rDQo2L4.twitter&quot;&gt;Konczal&lt;/a&gt;, &lt;a href=&quot;http://www.slate.com/blogs/moneybox/2013/04/16/reinhart_rogoff_coding_error_austerity_policies_founded_on_bad_coding.html&quot;&gt;Yglesias&lt;/a&gt;, &lt;a href=&quot;http://krugman.blogs.nytimes.com/2013/04/16/holy-coding-error-batman/?utm_source=feedly&quot;&gt;Krugman&lt;/a&gt;, &lt;a href=&quot;http://marginalrevolution.com/marginalrevolution/2013/04/an-update-on-the-reinhart-and-rogoff-critique-and-some-observations.html&quot;&gt;Cowen&lt;/a&gt;, &lt;a href=&quot;http://simplystatistics.org/2013/04/16/i-wish-economists-made-better-plots/&quot;&gt;Peng&lt;/a&gt;, &lt;a href=&quot;http://blogs.ft.com/ftdata/2013/04/17/the-reinhart-rogoff-response-i/?utm_source=dlvr.it&amp;utm_medium=twitter&quot;&gt;FT Alphaville&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This is an interesting issue for me because it involves three topics I really like: political economy, reproducibility, and communicating uncertainty. Others have already commented on these topics in detail. I just wanted to add to this discussion by (a) talking about how this event highlights a real need for researchers to use systems that make &lt;strong&gt;finding and correcting mistakes&lt;/strong&gt; easy, (b) &lt;strong&gt;incentivising mistake finding/correction&lt;/strong&gt; rather than penalising it, and (c) showing &lt;strong&gt;uncertainty&lt;/strong&gt;.&lt;/p&gt;

&lt;h2 id=&quot;systemsforfindingandcorrectingmistakes&quot;&gt;Systems for Finding and Correcting Mistakes&lt;/h2&gt;

&lt;p&gt;One of the problems Herndon, Ash, and Pollin found in R&amp;amp;R&amp;#8217;s analysis was and &lt;a href=&quot;http://www.nextnewdeal.net/rortybomb/researchers-finally-replicated-reinhart-rogoff-and-there-are-serious-problems#.UW14rDQo2L4.twitter&quot;&gt;Excel coding error&lt;/a&gt;. I love to hate on Excel as much as the next R devotee, but I think that is missing the point. The real lesson is not &amp;#8220;don&amp;#8217;t use Excel&amp;#8221; the real lesson is: &lt;strong&gt;we all make mistakes&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;(Important point: I refer throughout this post to errors caused by coding mistakes rather than purposeful fabrications and falsifications.)&lt;/p&gt;

&lt;p&gt;Coding mistakes are an ever present part of our work. The problem is not that we make coding mistakes. Despite our best efforts we always will. The problem is that we often use tools and practices that make it difficult to &lt;strong&gt;find and correct our mistakes&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;This is where I can get in some Excel hating: tools and practices that make it difficult to find mistakes include binary files (like Excel&amp;#8217;s) that can&amp;#8217;t be version controlled in a way that fully reveals the research process, not commenting code, not making your data readily available in formats that make replication easy, not having a system for quickly fixing mistakes when they are found. Sorry R users, but the last three are definitely not exclusive to Excel. &lt;/p&gt;

&lt;p&gt;It took Herndon, Ash, and Pollin a considerable amount of time to replicate R &amp;amp; R&amp;#8217;s findings and therefore find the Excel error. This seems partially because R &amp;amp; R did not make their analysis files readily available (Herndon, Ash, and Pollin had to ask for them). I&amp;#8217;m not sure how this error is going to be corrected and documented. But I imagine it will be like most research corrections: kind of on the fly, mostly emailing and reposting. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How big of a detail is this?&lt;/strong&gt; There is some debate over how big of a problem this mistake is. Roger Peng ends &lt;a href=&quot;http://simplystatistics.org/2013/04/16/i-wish-economists-made-better-plots/&quot;&gt;his really nice post&lt;/a&gt;: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The vibe on the Internets seems to be that if only this problem had been identified sooner, the world would be a better place. But my cynical mind says, uh, no. You can toss this incident in the very large bucket of papers with some technical errors that are easily fixed. Thankfully, someone found these errors and fixed them, and that’s a good thing. Science moves on.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I agree with most of this paragraph. But, given how &lt;a href=&quot;http://qz.com/75117/how-influential-was-the-study-warning-high-debt-kills-growth/&quot;&gt;important R &amp;amp; R&amp;#8217;s finding was&lt;/a&gt; to major policy debates it would have been much better if the mistake was caught sooner rather than later. The tools and practices R &amp;amp; R used made it harder to find and correct the mistake, so policymakers were operating with less accurate information for longer. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solutions:&lt;/strong&gt; I&amp;#8217;ve written in some detail in the &lt;a href=&quot;http://polmeth.wustl.edu/methodologist/tpm_v20_n2.pdf&quot;&gt;most recent issue of The Political Methodologist&lt;/a&gt; about how cloud-based version control systems like &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt; can be used to make finding and correcting mistakes easier. Pull requests, for example, are a really nice way to directly suggest corrections. &lt;/p&gt;

&lt;h2 id=&quot;incentivisingerrorfindingandcorrection&quot;&gt;Incentivising Error Finding and Correction&lt;/h2&gt;

&lt;p&gt;Going forward I think it will be interesting to see how this incident shapes researchers&amp;#8217; perceived &lt;strong&gt;incentives&lt;/strong&gt; to make their work easily replicable. Replication is an important part of finding the mistakes that everyone makes. If being found to make a coding mistake (not a fabrication) has a negative impact on your academic career then there are incentives to make finding mistakes difficult, by for example making replication difficult. Most papers do not receive nearly as much attention as R &amp;amp; R&amp;#8217;s. So, for most researchers making replication difficult will make it pretty unlikely that anyone will replicate your research and you&amp;#8217;ll be home free. &lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p&gt;I can&#39;t send you my data b/c I think you might find out I made an error. &lt;a href=&quot;https://twitter.com/search/%23overlyhonestmethods&quot;&gt;#overlyhonestmethods&lt;/a&gt;&lt;/p&gt;&amp;mdash; Carlisle Rainey (@carlislerainey) &lt;a href=&quot;https://twitter.com/carlislerainey/status/289097513926017024&quot;&gt;January 9, 2013&lt;/a&gt;&lt;/blockquote&gt;

&lt;script async src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;This is a perverse incentive indeed. &lt;/p&gt;

&lt;p&gt;What can we do? Many journals now require replicable code to accompany published articles. This is a good incentive. Maybe we should go further, and somehow directly incentivise the finding and correction of errors in data sets and analysis code. Ideas could include giving more weight to replication studies at hiring and promotion committees. Maybe even allowing these committees to include information on researchers&amp;#8217; GitHub pull requests that meaningfully improve other&amp;#8217;s work by correcting mistakes. &lt;/p&gt;

&lt;p&gt;This of course might create future perversion incentives to add errors so that they can then be found. I think this is a bit fanciful. There are surely enough negative social incentives (i.e. embarrassment) surrounding making mistakes to prevent this.&lt;/p&gt;

&lt;h2 id=&quot;showinguncertainty&quot;&gt;Showing Uncertainty&lt;/h2&gt;

&lt;p&gt;Roger Peng&amp;#8217;s post highlighted the issue of graphing uncertainty, but I just wanted to build it out a little further. The interpretation of the correlation R &amp;amp; R&amp;#8217;s found between GDP Growth and Government Debt could have been tempered significantly before any mistakes were found by more directly communicating their original uncertainty. In their original paper, they presented the relationship using bar graphs of average and median GDP growth per grouped debt/GDP level: &lt;/p&gt;

&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIU2INytLDjZJbEpD8NWVXzXM7j2vnevjMJ2b2IP27C0x596ZC9CRIinMTnduBqGtPROXMJ-YgMRZTlHlNgwLCvD7LAFTWTeWPBwBON7QNbNAlS4FiahWmuXdXFtxXZZ49IOzc/s1600/RAndR.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIU2INytLDjZJbEpD8NWVXzXM7j2vnevjMJ2b2IP27C0x596ZC9CRIinMTnduBqGtPROXMJ-YgMRZTlHlNgwLCvD7LAFTWTeWPBwBON7QNbNAlS4FiahWmuXdXFtxXZZ49IOzc/s320/RAndR.png&quot; /&gt;&lt;/a&gt;

&lt;p&gt;Beyond showing the mean and median there is basically no indication of the distribution of the data they are from. &lt;/p&gt;

&lt;p&gt;Herndon, Ash, and Pollin put together some nice graphs of these distributions (and avoid that thing economists do of using two vertical axis with two different meanings). &lt;/p&gt;

&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigIerd5pPeggs6-9ZwRfl4OW5qhr6UXnY6vVCRZdcmFUNv3i4IDPVDiBIm4qqCqx_CU5hKU-FDQHgAqfL7etLAXOKhe99VHKwsH7kvhvZwN_wERksZ_vgU7wEZAl1vgcwvWWBm/s1600/Rep2.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigIerd5pPeggs6-9ZwRfl4OW5qhr6UXnY6vVCRZdcmFUNv3i4IDPVDiBIm4qqCqx_CU5hKU-FDQHgAqfL7etLAXOKhe99VHKwsH7kvhvZwN_wERksZ_vgU7wEZAl1vgcwvWWBm/s320/Rep2.png&quot; /&gt;&lt;/a&gt;

&lt;p&gt;Here is one that gets rid of the groups altogether:&lt;/p&gt;

&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioE2laaZC_h4A1wPoJ_tV7awft5iz7oko9xofC5U9uLAdDq38eAyd74Y3tQYp-zuPvOR9VVs2B5b7a0VIkGOkP5sfTEuIk_FykSvLS9QHvHrBUYbs2MsnvRecm6JTD-P1OhxAl/s1600/Rep3.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioE2laaZC_h4A1wPoJ_tV7awft5iz7oko9xofC5U9uLAdDq38eAyd74Y3tQYp-zuPvOR9VVs2B5b7a0VIkGOkP5sfTEuIk_FykSvLS9QHvHrBUYbs2MsnvRecm6JTD-P1OhxAl/s320/Rep3.png&quot; /&gt;&lt;/a&gt;

&lt;p&gt;If R &amp;amp; R had shown a simple scatter plot like this (though they did exclude some of the higher GDP Growth country-years at the high debt end, so their&#39;s would have looked different), it would have been much more difficult to overly interpret the substantive&amp;#8211;policy&amp;#8211;value of a correlation between GDP/growth and debt/GDP. &lt;/p&gt;

&lt;p&gt;Maybe this wouldn&amp;#8217;t have actually changed the policy debate that much, As Mark Blyth argues in his &lt;a href=&quot;http://www.oup.com/us/catalog/general/subject/Economics/Political/?view=usa&amp;amp;ci=9780199828302&quot;&gt;recent book&lt;/a&gt; on austerity &amp;#8220;facts never disconfirm a good ideology&amp;#8221; (p. 18). But at least Paul Krugman might not have had to debate debt/GDP cutoff points on CNBC (for example time point 12:40):&lt;/p&gt;

&lt;p&gt;&lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/9dcPhfraCnY&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;P.S.&lt;/strong&gt; To R &amp;amp; R&amp;#8217;s credit, they do often make their data &lt;a href=&quot;http://www.carmenreinhart.com/data/&quot;&gt;available&lt;/a&gt;. Their data has been useful for at least one of my &lt;a href=&quot;http://ssrn.com/abstract=2155986&quot;&gt;papers&lt;/a&gt;. However, it is often available in a format that is hard to use for cross-country statistical analysis, including, I would imagine, their own. Though I have never found any errors in the data, reporting and implementing corrections to this data would be piecemeal at best. &lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/5503658742336471987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/5503658742336471987' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/5503658742336471987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/5503658742336471987'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2013/04/reinhart-rogoff-everyone-makes-coding.html' title='Reinhart &amp; Rogoff: Everyone makes coding mistakes, we need to make it easy to find them + Graphing uncertainty'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIU2INytLDjZJbEpD8NWVXzXM7j2vnevjMJ2b2IP27C0x596ZC9CRIinMTnduBqGtPROXMJ-YgMRZTlHlNgwLCvD7LAFTWTeWPBwBON7QNbNAlS4FiahWmuXdXFtxXZZ49IOzc/s72-c/RAndR.png" height="72" width="72"/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-2531985114663327659</id><published>2013-04-11T23:05:00.000+01:00</published><updated>2013-04-12T08:56:38.979+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Dropbox"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><title type='text'>Dropbox &amp; R Data</title><content type='html'>&lt;p&gt;I&amp;#39;m always looking for ways to download data from the internet into R. Though I prefer to host and access plain-text data sets (CSV is my personal favourite) from &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt; (see my &lt;a href=&quot;http://polmeth.wustl.edu/methodologist/tpm_v20_n2.pdf&quot;&gt;short paper&lt;/a&gt; on the topic) sometimes it&amp;#39;s convenient to get data stored on &lt;a href=&quot;https://www.dropbox.com/&quot;&gt;Dropbox&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;There has been a change in the way Dropbox URLs work and I just added some functionality to the &lt;a href=&quot;http://christophergandrud.github.io/repmis/&quot;&gt;repmis&lt;/a&gt; R package. So I though that I&amp;#39;ld write a quick post on how to directly download data from Dropbox into R. &lt;/p&gt;

&lt;p&gt;The download method is different depending on whether or not your &lt;em&gt;plain-text&lt;/em&gt; data is in a Dropbox Public folder or not.&lt;/p&gt;

&lt;h2&gt;Dropbox Public Folder&lt;/h2&gt;

&lt;p&gt;Dropbox is trying to do away with its public folders. New users need to &lt;a href=&quot;https://www.dropbox.com/help/16/en&quot;&gt;actively create&lt;/a&gt; a Public folder. Regardless, sometimes you may want to download data from one. It used to be that files in Public folders were accessible through non-secure (http) URLs. It&amp;#39;s easy to download these into R, just use the &lt;code&gt;read.table&lt;/code&gt; command, where the URL is the file name. Dropbox recently changed Public links to be secure (https) URLs. These cannot be accessed with &lt;code&gt;read.table&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Instead you need can use the &lt;code&gt;source_data&lt;/code&gt; command from &lt;strong&gt;repmis&lt;/strong&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;R&quot;&gt;FinURL &lt;-&quot;https://dl.dropbox.com/u/12581470/code/Replicability_code/Fin_Trans_Replication_Journal/Data/public.fin.msm.model.csv&quot;

# Download data
FinRegulatorData &lt;- repmis::source_data(FinURL,
                             sep = &quot;,&quot;,
                             header = TRUE)
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Non-Public Dropbox Folders&lt;/h2&gt;

&lt;p&gt;Getting data from a non-Public folder into R was a trickier. When you click on a Dropbox-based file&amp;#39;s &lt;a href=&quot;https://www.dropbox.com/help/167/en&quot;&gt;Share Link&lt;/a&gt; button you are taken to a secure URL, but not for the file itself. The Dropbox webpage you&amp;#39;re taken to is filled with lots of other Dropbox information. I used to think that accessing a plain-text data file embedded in one of these webpages would require some tricky web scrapping. Luckily, today I ran across this &lt;a href=&quot;http://thebiobucket.blogspot.kr/2013/04/download-files-from-dropbox.html&quot;&gt;blog post&lt;/a&gt; by Kay Cichini. &lt;/p&gt;

&lt;p&gt;With some modifications I was able to easily create a function that could download data from non-Public Dropbox folders. The &lt;code&gt;source_DropboxData&lt;/code&gt; command is in the most recent version of &lt;strong&gt;repmis&lt;/strong&gt; (v0.2.4) is the result. All you need to know is the name of the file you want to download and its Dropbox key. You can find both of these things in the URL for the webpage that appears when you click on &lt;code&gt;Share Link&lt;/code&gt;. Here is an example:&lt;/p&gt;

&lt;blockquote&gt;https://www.dropbox.com/s/exh4iobbm2p5p1v/fin_research_note.csv&lt;/blockquote&gt;

&lt;p&gt;The file name is at the very end (&lt;code&gt;fin_research_note.csv&lt;/code&gt;) and the key is the string of letters and numbers in the middle (&lt;code&gt;exh4iobbm2p5p1v&lt;/code&gt;). Now we have all of the information we need for &lt;code&gt;source_DropboxData&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;R&quot;&gt;FinDataFull &lt;- repmis::source_DropboxData(&quot;fin_research_note.csv&quot;,
                                  &quot;exh4iobbm2p5p1v&quot;,
                                  sep = &quot;,&quot;,
                                  header = TRUE)
&lt;/code&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/2531985114663327659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/2531985114663327659' title='78 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/2531985114663327659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/2531985114663327659'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2013/04/dropbox-r-data.html' title='Dropbox &amp; R Data'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>78</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-5684068981941815847</id><published>2013-02-15T11:16:00.000+00:00</published><updated>2013-03-10T06:49:43.502+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="data manipulation"/><category scheme="http://www.blogger.com/atom/ns#" term="missing values"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><title type='text'>FillIn: a function for filling in missing data in one data frame with info from another</title><content type='html'>&lt;p&gt;&lt;strong&gt;Update (10 March 2013):&lt;/strong&gt; &lt;code&gt;FillIn&lt;/code&gt; is now part of the budding &lt;a href=&quot;http://christophergandrud.github.com/DataCombine/&quot;&gt;DataCombine&lt;/a&gt; package.&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;Sometimes I want to use R to fill in values that are missing in one data frame with values from another. For example, I have data from the World Bank on government deficits. However, there are some country-years with missing data. I gathered data from Eurostat on deficits and want to use this data to fill in some of the values that are missing from my World Bank data.&lt;/p&gt;

&lt;p&gt;Doing this is kind of a pain so I created a function that would do it for me. It&#39;s called &lt;code&gt;FillIn&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;An Example&lt;/h2&gt;

&lt;p&gt; Here is an example using some fake data. (This example and part of the function was inspired by a Stack Exchange &lt;a href=&quot;http://stackoverflow.com/questions/8349909/creating-a-function-to-replace-nas-from-one-data-frame-with-values-from-another&quot;&gt;conversation&lt;/a&gt; between JD Long and Josh O&#39;Brien.)&lt;/p&gt;

&lt;p&gt;First let&#39;s make two data frames: one with missing values in a variable called &lt;code&gt;fNA&lt;/code&gt;. And a data frame with a more complete variable called &lt;code&gt;fFull&lt;/code&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code type = &quot;R&quot;&gt;# Create data set with missing values
naDF &amp;lt;- data.frame(a = sample(c(1,2), 100, rep=TRUE), 
                   b = sample(c(3,4), 100, rep=TRUE), 
                   fNA = sample(c(100, 200, 300, 400, NA), 100, rep=TRUE))
                   
# Created full data set
fillDF &amp;lt;- data.frame(a = c(1,2,1,2), 
                     b = c(3,3,4,4),
                     fFull = c(100, 200, 300, 400))
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Now we just enter some information into &lt;code&gt;FillIn&lt;/code&gt; about what the data set names are, what variables we want to fill in, and what variables to join the data sets on. 

&lt;pre&gt;&lt;code type=&quot;R&quot;&gt;# Fill in missing f&#39;s from naDF with values from fillDF
FilledInData &lt;- FillIn(D1 = naDF, D2 = fillDF, 
                       Var1 = &quot;fNA&quot;, Var2 = &quot;fFull&quot;, KeyVar = c(&quot;a&quot;, &quot;b&quot;))

&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&quot;output&quot;&gt;&lt;pre class=&quot;knitr r&quot;&gt;## [1] &quot;16 NAs were replaced.&quot;
## [1] &quot;The correlation between fNA and fFull is 0.313&quot;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt; &lt;code&gt;D1&lt;/code&gt; and &lt;code&gt;Var1&lt;/code&gt; are for the data frame and variables you want to fill in. &lt;code&gt;D2&lt;/code&gt; and &lt;code&gt;Var2&lt;/code&gt; are what you want to use to fill them in with. &lt;code&gt;KeyVar&lt;/code&gt; specifies what variables you want to use to joint the two data frames.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;FillIn&lt;/code&gt; lets you know how many missing values it is filling in and what the correlation coefficient is between the two variables you are using. Depending on your missing data issues, this could be an indicator of whether or not &lt;code&gt;Var2&lt;/code&gt; is an appropriate substitute for &lt;code&gt;Var1&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;Installation&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;FillIn&lt;/code&gt; is currently available as a GitHub Gist and can be installed with this code:&lt;/p&gt;

&lt;pre&gt;&lt;code type=&quot;R&quot;&gt;devtools::source_gist(&quot;4959237&quot;)
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;You will need the &lt;strong&gt;devtools&lt;/strong&gt; package to install it. For it to work properly you will also need the &lt;a href=&quot;http://cran.r-project.org/web/packages/data.table/index.html&quot;&gt;data.table&lt;/a&gt; package.&lt;/p&gt;

&lt;h2&gt;The Full Code&lt;/h2&gt;

&lt;p&gt;&lt;script src=&quot;https://gist.github.com/christophergandrud/4959237.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/5684068981941815847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/5684068981941815847' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/5684068981941815847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/5684068981941815847'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2013/02/fillin-function-for-filling-in-missing.html' title='FillIn: a function for filling in missing data in one data frame with info from another'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-7811493999310526087</id><published>2013-02-03T09:41:00.000+00:00</published><updated>2013-02-03T09:41:06.218+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="citations"/><category scheme="http://www.blogger.com/atom/ns#" term="install.packages"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><category scheme="http://www.blogger.com/atom/ns#" term="repmis"/><category scheme="http://www.blogger.com/atom/ns#" term="reproducible research"/><title type='text'>InstallOldPackages: a repmis command for installing old R package versions</title><content type='html'>&lt;p&gt;A big problem in reproducible research is that software changes. The code you used to do a piece of research may depend on a specific version of software that has since been changed. This is an annoying problem in R because &lt;code&gt;install.packages&lt;/code&gt; only installs the most recent version of a package. It can be tedious to collect the old versions.&lt;/p&gt;

&lt;p&gt;On &lt;a href=&quot;http://sugiyama-www.cs.titech.ac.jp/~toby/&quot;&gt;Toby Dylan Hocking&lt;/a&gt;&#39;s suggestion, I added tools to the &lt;a href=&quot;http://christophergandrud.github.com/repmis/&quot;&gt;repmis&lt;/a&gt; package so that you can install, load, and cite specific R package versions. It should work for any package version that is stored on the CRAN archive (&lt;a href=&quot;http://cran.r-project.org&quot;&gt;http://cran.r-project.org&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;To only install old package versions use the new &lt;strong&gt;repmis&lt;/strong&gt; command &lt;code&gt;InstallOldPackages&lt;/code&gt;. For example:&lt;/p&gt; 

&lt;pre&gt;&lt;code type=&quot;R&quot;&gt;# Install old versions of the e1071 and gtools packages.

# Create vectors of the package names and versions to install
# Note the names and version numbers must be in the same order
Names &amp;lt- c(&quot;e1071&quot;, &quot;gtools&quot;)
Vers &amp;lt- c(&quot;1.6&quot;, &quot;2.6.1&quot;)

# Install old package versions into the default library
InstallOldPackages(pkgs = Names, versions = Vers)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can also now have &lt;code&gt;LoadandCite&lt;/code&gt; install specific package versions:&lt;/p&gt;

&lt;pre&gt;&lt;code type=&quot;R&quot;&gt;# Install, load, and cite specific package versions

# Create vectors of the package names and versions to install
# Note the names and version numbers must be in the same order
Names &amp;lt- c(&quot;e1071&quot;, &quot;gtools&quot;) 
Vers &amp;lt- c(&quot;1.6&quot;, &quot;2.6.1&quot;)

# Run LoadandCite
LoadandCite(pkgs = Names, versions = Vers, install = TRUE, file = &quot;PackageCites.bib&quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;See this &lt;a href=&quot;http://christophergandrud.blogspot.com/2013/01/repmis-misc-tools-for-reproducible.html&quot;&gt;post&lt;/a&gt; for more details on &lt;code&gt;LoadandCite&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;Future&lt;/h2&gt;

&lt;p&gt;I intend to continue improving these capabilities. So please post any suggestions for improvement (or report any bugs) at on the &lt;a href=&quot;https://github.com/christophergandrud/repmis/issues&quot;&gt;GitHub issues page&lt;/a&gt;.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/7811493999310526087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/7811493999310526087' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/7811493999310526087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/7811493999310526087'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2013/02/installoldpackages-repmis-command-for.html' title='InstallOldPackages: a repmis command for installing old R package versions'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-3243022822011048597</id><published>2013-01-31T04:32:00.000+00:00</published><updated>2013-01-31T05:34:26.911+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="citations"/><category scheme="http://www.blogger.com/atom/ns#" term="knitr"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><category scheme="http://www.blogger.com/atom/ns#" term="reproducible research"/><category scheme="http://www.blogger.com/atom/ns#" term="source_GitHubData"/><title type='text'>repmis: misc. tools for reproducible research in R</title><content type='html'>&lt;p&gt;I&#39;ve started to put together an R package called &lt;a href&quot;https://github.com/christophergandrud/repmis&quot;&gt;repmis&lt;/a&gt;. It has miscellaneous tools for reproducible research with R. The idea behind the package is to collate commands that simplify some of the common R code used within &lt;a href=&quot;http://yihui.name/knitr/&quot;&gt;knitr&lt;/a&gt;-type reproducible research papers.&lt;/p&gt;

&lt;p&gt;It&#39;s still very much in the early stages of development and has two commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;LoadandCite&lt;/code&gt;: a command to load all of the R packages used in a paper and create a &lt;a href=&quot;http://en.wikipedia.org/wiki/BibTeX&quot;&gt;BibTeX&lt;/a&gt; file containing citation information for them. It can also install the packages if they are on &lt;a href=&quot;http://cran.r-project.org/&quot;&gt;CRAN&lt;/a&gt;.&lt;/li&gt;

&lt;li&gt;&lt;code&gt;source_GitHubData&lt;/code&gt;: a command for downloading plain-text formatted data stored on GitHub or at any other secure (https) URL.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I&#39;ve written about why you might want to use &lt;code&gt;source_GitHubData&lt;/code&gt; before (see &lt;a href=&quot;http://christophergandrud.blogspot.kr/2012/06/data-on-github-easy-way-to-make-your.html&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://christophergandrud.blogspot.kr/2013/01/sourcegithubdata-simple-function-for.html&quot;&gt;here&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;You can use &lt;code&gt;LoadandCite&lt;/code&gt; in a code chunk near the beginning of a knitr reproducible research document to load all of the R packages you will use in the document and automatically generate a BibTeX file you can draw on to cite them. Here&#39;s an example:

&lt;pre&gt;&lt;code type = &quot;R&quot;&gt;# Create vector of package names
PackagesUsed &amp;lt- c(&quot;knitr&quot;, &quot;xtable&quot;)

# Load and Cite
repmis::LoadandCite(PackagesUsed, file = &quot;PackageCitations.bib&quot;) 
&lt;/code&gt;&lt;/pre&gt; 

&lt;p&gt;&lt;code&gt;LoadandCite&lt;/code&gt; draws on knitr&#39;s &lt;code&gt;write_bib&lt;/code&gt; command to create the bibliographies, so each citation is given a BibTeX key like this: &lt;em&gt;R-package_name&lt;/em&gt;. For example the key for the &lt;strong&gt;xtable&lt;/strong&gt; package is &lt;em&gt;R-xtable&lt;/em&gt;. Be careful to save the citations in a new .bib file, because &lt;code&gt;LoadandCite&lt;/code&gt; overwrites existing files.&lt;/p&gt;

&lt;p&gt;Citation of R packages is very inconsistent in academic publications. Hopefully by making it easier to cite packages more people will do so. &lt;/p&gt;

&lt;h2&gt;Install/Constribute&lt;/h2&gt;
&lt;p&gt;Instructions for how to install &lt;strong&gt;repmis&lt;/strong&gt; are available &lt;a href=&quot;https://github.com/christophergandrud/repmis&quot;&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Please feel free to fork the package and suggest additional commands that could be included.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/3243022822011048597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/3243022822011048597' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/3243022822011048597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/3243022822011048597'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2013/01/repmis-misc-tools-for-reproducible.html' title='repmis: misc. tools for reproducible research in R'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-8381426007123358920</id><published>2013-01-06T09:42:00.000+00:00</published><updated>2013-01-31T05:37:10.388+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="data storage"/><category scheme="http://www.blogger.com/atom/ns#" term="functions"/><category scheme="http://www.blogger.com/atom/ns#" term="github"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><category scheme="http://www.blogger.com/atom/ns#" term="source_GitHubData"/><title type='text'>source_GitHubData: a simple function for downloading data from GitHub into R</title><content type='html'>&lt;p&gt;&lt;strong&gt;Update 31 January:&lt;/strong&gt; I&#39;ve folded &lt;code&gt;source_GitHubData&lt;/code&gt; into the &lt;strong&gt;repmis&lt;/strong&gt; packaged. See &lt;a href= &quot;http://christophergandrud.blogspot.kr/2013/01/repmis-misc-tools-for-reproducible.html&quot;&gt;this post&lt;/a&gt;. &lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;&lt;strong&gt;Update 7 January 2012:&lt;/strong&gt; I updated the internal workings of &lt;code&gt;source_GitHubData&lt;/code&gt; so that it now relies on &lt;a href=&quot;http://cran.r-project.org/web/packages/httr/httr.pdf&quot;&gt;httr&lt;/a&gt; rather than &lt;code&gt;RCurl&lt;/code&gt;. Also it is more directly descended from &lt;code&gt;devtool&lt;/code&gt;&#39;s &lt;code&gt;source_url&lt;/code&gt; command. &lt;/p&gt;

&lt;p&gt;This has two advantages.

&lt;ul&gt;
&lt;li&gt;Shortened URL&#39;s can be used instead of the data sets&#39; full GitHub URL,&lt;/li&gt;
&lt;li&gt;The ssl.verifypeer issue is resolved. (Though please let me know if you have problems). &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; The post has been rewritten to reflect these changes.&lt;/p&gt;

&lt;hr /&gt; 

&lt;p&gt;In &lt;a href=&quot;http://christophergandrud.blogspot.com/2012/06/data-on-github-easy-way-to-make-your.html&quot;&gt;previous&lt;/a&gt; &lt;a href=&quot;http://christophergandrud.blogspot.com/2012/06/update-to-data-on-github-post-solution.html&quot;&gt;posts&lt;/a&gt; I&#39;ve discussed how to download data stored in plain-text data files (e.g. CSV, TSV) on &lt;a href =&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt; directly into R.&lt;/p&gt;

&lt;p&gt;Not sure why it took me so long to get around to this, but I&#39;ve finally created a little function that simplifies the process of downloading plain-text data from GitHub. It&#39;s called &lt;code&gt;source_GitHubData&lt;/code&gt;. (The name mimicks the &lt;a href=&quot;https://github.com/hadley/devtools&quot;&gt;devtools&lt;/a&gt; syntax for functions like &lt;code&gt;source_gist&lt;/code&gt; and &lt;code&gt;source_url&lt;/code&gt;. The function&#39;s syntax is actually just a modified version of &lt;code&gt;source_url&lt;/code&gt;.)&lt;/p&gt;

&lt;p&gt;The function is stored in a GitHub Gist &lt;a href=&quot;https://gist.github.com/4466237&quot;&gt;HERE&lt;/a&gt; (it&#39;s also at the end of this post). You can load it directly into R with devtools&#39; &lt;code&gt;source_gist&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;Here is an example of how to use the function to download the electoral disproportionality data I discussed in an earlier &lt;a href=&quot;http://christophergandrud.blogspot.com/2012/06/data-on-github-easy-way-to-make-your.html&quot;&gt;post&lt;/a&gt;. &lt;/p&gt;

&lt;pre&gt;&lt;code type=&quot;R&quot;&gt;
# Load source_GitHubData
library(devtools)

# The functions&#39; gist ID is 4466237
source_gist(&quot;4466237&quot;)

# Create Disproportionality data UrlAddress object
# Make sure the URL is for the &quot;raw&quot; version of the file
# The URL was shortened using bitly
UrlAddress &amp;lt;- &quot;http://bit.ly/Ss6zDO&quot;

# Download data
Data &amp;lt;- source_GitHubData(url = UrlAddress)

# Show Data variable names
names(Data)

&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&quot;output&quot;&gt;&lt;pre class=&quot;knitr r&quot;&gt;## [1] &quot;country&quot;            &quot;year&quot;               &quot;disproportionality&quot;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;There you go.&lt;/p&gt;

&lt;p&gt;Note that the the function is set by default to load comma-separated data (CSV). This can easily be changed with the &lt;code&gt;sep&lt;/code&gt; argument.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/4466237.js&quot;&gt;&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/8381426007123358920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/8381426007123358920' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/8381426007123358920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/8381426007123358920'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2013/01/sourcegithubdata-simple-function-for.html' title='source_GitHubData: a simple function for downloading data from GitHub into R'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-4836141389360004028</id><published>2012-12-30T07:40:00.000+00:00</published><updated>2013-07-31T01:54:03.326+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="event history analysis"/><category scheme="http://www.blogger.com/atom/ns#" term="non-proportional hazards"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><category scheme="http://www.blogger.com/atom/ns#" term="survival analysis"/><title type='text'>Update to Graphing Non-Proportional Hazards in R</title><content type='html'>&lt;hr&gt;

&lt;p&gt;&lt;strong&gt;Update 31 July 2013:&lt;/strong&gt; I&#39;ve moved all of the functionality described in this post into an R package called &lt;a href=&quot;http://christophergandrud.github.io/simPH/&quot;&gt;simPH&lt;/a&gt;. Have a look. It is much easier to use.&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;This is a quick update for a previous post on &lt;a href=&quot;http://christophergandrud.blogspot.com/2012/10/graphing-non-proportional-hazards-in-r.html&quot;&gt;Graphing Non-Proportional Hazards in R&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;In the previous post I showed how to simulate and graph 1,000 non-proportional hazard ratios at roughly every point in time across an observation period. In the previous example I kept in simulation outliers. Some people have suggested dropping the top and bottom 2.5 percent of simulated values (i.e. keeping the middle 95 percent).&lt;/p&gt;

&lt;p&gt;Luckily this can be accomplished with &lt;a href=&quot;http://had.co.nz/&quot;&gt;Hadley Wickham&lt;/a&gt;&#39;s &lt;a href=&quot;http://plyr.had.co.nz/&quot;&gt;plyr&lt;/a&gt; package and three lines of code. The trick is to use plyr&#39;s &lt;code&gt;ddply&lt;/code&gt; command to subset the data frame at each point in &lt;code&gt;Time&lt;/code&gt; where we simulated values. In the previous example the simulated values were in a variable called &lt;code&gt;HRqmv&lt;/code&gt;. In each subset we use the &lt;code&gt;quantile&lt;/code&gt; command from &lt;code&gt;base&lt;/code&gt; R to create logical variables indicating if a simulation of &lt;code&gt;HRqmv&lt;/code&gt; is greater than the 0.975 or less than the 0.025 quantile. Then we simply &lt;code&gt;subset&lt;/code&gt; the data frame.&lt;/p&gt;

&lt;p&gt;Here&#39;s how you do it: after all of the values have been simulated and the data set ordered and right before graphing the results add this code:&lt;/p&gt;

&lt;pre&gt;&lt;code type=&quot;R&quot;&gt;
# Indicate bottom 2.5% of observations
TVSimPerc &amp;lt;- ddply(TVSim, .(Time), transform, Lower = HRqmv &lt; quantile(HRqmv, c(0.025)))

# Indicate top 2.5% of observations
TVSimPerc &amp;lt;- ddply(TVSimPerc, .(Time), transform, Upper = HRqmv &gt; quantile(HRqmv, c(0.975)))

# Drop simulations outside of the middle 95%
TVSimPerc &amp;lt;- subset(TVSimPerc, Lower == FALSE &amp; Upper == FALSE)

&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Adding this code to the previous example creates this graph:&lt;/p&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGVvHIvMYlUPQP8Vi5Wpiyfd-X46ITOwQlXy9w7zlZk763ryqu-Io69PTDKUlPLIebDFFBTvzMw7dK5-uYNLm2thOzq3wQ1mncW4FPXYB53n3N40OyfwIR6E7PEfd_c_py2d5N/s1600/HazardRatioUpdate.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;283&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGVvHIvMYlUPQP8Vi5Wpiyfd-X46ITOwQlXy9w7zlZk763ryqu-Io69PTDKUlPLIebDFFBTvzMw7dK5-uYNLm2thOzq3wQ1mncW4FPXYB53n3N40OyfwIR6E7PEfd_c_py2d5N/s320/HazardRatioUpdate.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;




&lt;p&gt;Here is the full code to replicate the example:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/4411413.js&quot;&gt;&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/4836141389360004028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/4836141389360004028' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/4836141389360004028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/4836141389360004028'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2012/12/update-to-graphing-non-proportional.html' title='Update to Graphing Non-Proportional Hazards in R'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGVvHIvMYlUPQP8Vi5Wpiyfd-X46ITOwQlXy9w7zlZk763ryqu-Io69PTDKUlPLIebDFFBTvzMw7dK5-uYNLm2thOzq3wQ1mncW4FPXYB53n3N40OyfwIR6E7PEfd_c_py2d5N/s72-c/HazardRatioUpdate.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-3565330665489602806</id><published>2012-11-14T06:54:00.000+00:00</published><updated>2012-11-16T07:49:40.364+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="googleVis"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="jquery"/><category scheme="http://www.blogger.com/atom/ns#" term="maps"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><category scheme="http://www.blogger.com/atom/ns#" term="slidify"/><category scheme="http://www.blogger.com/atom/ns#" term="timeline"/><title type='text'>Timeline Maps with googleVis &amp; Twitter Bootstrap Carousel (&amp; updated Slidify)</title><content type='html'>&lt;p&gt; I&#39;ve wanted to create timeline maps with interactive &lt;a href=&quot;http://code.google.com/p/google-motion-charts-with-r/&quot;&gt;googleVis&lt;/a&gt; Geomaps for a while. These would be a nice way to quickly show the spatial distribution of some data over time.&lt;/p&gt;

&lt;p&gt; It turns out that it&#39;s pretty easy to do with a plugin for &lt;a href=&quot;http://twitter.github.com/bootstrap/&quot;&gt;Twitter Bootstrap&lt;/a&gt; called &lt;a href=&quot;http://twitter.github.com/bootstrap/javascript.html#carousel&quot;&gt;Carousel&lt;/a&gt;. Carousel is probably intended for regular picture slide shows. But because it can hold iframes, it can pretty much include anything, even interactive maps.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://christophergandrud.github.com/CarouselMapsHowTo/#1&quot;&gt;Here&lt;/a&gt; is a short slide show with examples and code for how to combine googleVis and Twitter Bootstrap Carousel to create interactive timeline maps.&lt;/p&gt;

&lt;p&gt;Note: I used the newest version (0.3.1) of &lt;a href=&quot;https://twitter.com/ramnath_vaidya&quot;&gt;Ramnath Vaidyanathan&#39;s&lt;/a&gt; &lt;a href=&quot;http://ramnathv.github.com/slidify/&quot;&gt;Slidify&lt;/a&gt; to create the presentation. He is really putting a lot of good work into that package. I especially like the choice to set the default slide framework to Google&#39;s &lt;a href=&quot;https://code.google.com/p/io-2012-slides/&quot;&gt;I/O 2012&lt;/a&gt; style. It has many features you don&#39;t find in other HTML slide frameworks. Particularly useful here, it begins to load iframes when you are on the previous slide rather than waiting until you get to the slide with the iframe.&lt;/p&gt;

&lt;hr&gt;
&lt;Strong&gt;Code:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href=&quot;https://github.com/christophergandrud/amc-site/blob/gh-pages/maps.html&quot;&gt;Code&lt;/a&gt; for the example website with a googleVis Carousel timeline map shown in the presentation.
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;https://github.com/christophergandrud/CarouselMapsHowTo&quot;&gt;Code&lt;/a&gt; for the presentation on GitHub. (Note: the code I used to &#39;Slidify&#39; the presentation is virtually identical to Ramnath Vaidyanathan&#39;s &lt;a href=&quot;http://ramnathv.github.com/slidify/start.html&quot;&gt;example&lt;/a&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;strong&gt;Update (16 Nov. 2012):&lt;/strong&gt; Ramnath Vaidyanathan has created a great &lt;a href=&quot;http://ramnathv.github.com/carouselDemo/#1&quot;&gt;demonstration&lt;/a&gt; of how to use the &lt;a href=&quot;http://cran.r-project.org/web/packages/whisker/index.html&quot;&gt;whisker&lt;/a&gt; package to include this timeline map directly into Slidify slides.</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/3565330665489602806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/3565330665489602806' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/3565330665489602806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/3565330665489602806'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2012/11/timeline-maps-with-googlevis-twitter.html' title='Timeline Maps with googleVis &amp; Twitter Bootstrap Carousel (&amp; updated Slidify)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-1853036335929035563</id><published>2012-10-04T06:03:00.000+01:00</published><updated>2013-07-30T07:50:24.480+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="estimation uncertainty"/><category scheme="http://www.blogger.com/atom/ns#" term="ggplot2"/><category scheme="http://www.blogger.com/atom/ns#" term="non-proportional hazards"/><category scheme="http://www.blogger.com/atom/ns#" term="plotting"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><category scheme="http://www.blogger.com/atom/ns#" term="simulations"/><title type='text'>Graphing Non-Proportional Hazards in R</title><content type='html'>&lt;hr&gt;

&lt;p&gt;&lt;strong&gt;Update 30 July 2013:&lt;/strong&gt; I&#39;ve moved all of the functionality described in this post into an R package called &lt;a href=&quot;http://christophergandrud.github.io/simPH/&quot;&gt;simPH&lt;/a&gt;. Have a look. It is much easier to use.&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;&lt;strong&gt;Update 30 December 2012:&lt;/strong&gt; I updated the code &lt;a href=&quot;http://christophergandrud.blogspot.kr/2012/12/update-to-graphing-non-proportional.html&quot;&gt;HERE&lt;/a&gt; so that it keeps only the middle 95 percent of the simulated values.&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;I really like &lt;a href=&quot;http://pan.oxfordjournals.org/content/19/2/227.abstract&quot;&gt;this article&lt;/a&gt; by &lt;a href=&quot;http://people.cas.sc.edu/licht/&quot;&gt;Amanda Licht&lt;/a&gt; in Political Analysis. It gives a lot of information on how to interpret nonproportional hazards and includes some nice graphs.&lt;/p&gt;

&lt;p&gt;Her &lt;a href=&quot;http://hdl.handle.net/1902.1/15633&quot;&gt;source code&lt;/a&gt; is really helpful for learning the nuts and bolts of how to simulate quantities of interests over time. However, it&#39;s in Stata code, which doesn&amp;#39;t really fit into my R-based workflow at the moment. So I decided to port the code over. This post gives an example of what I did.&lt;/p&gt;

&lt;h2&gt;What is a non-proportional hazard &amp;amp; why use them?&lt;/h2&gt;

&lt;p&gt;Here is my motivation for being interested in non-proportional hazards: In a &lt;a href=&quot;http://papers.ssrn.com/sol3/papers.cfm?abstract_id=2139869&quot;&gt;few&lt;/a&gt; &lt;a href=&quot;http://papers.ssrn.com/sol3/papers.cfm?abstract_id=2155986&quot;&gt;papers&lt;/a&gt; I used &lt;a href=&quot;http://en.wikipedia.org/wiki/Proportional_hazards_models&quot;&gt;Cox Proportional Hazard (PH) models&lt;/a&gt; to examine countries&amp;#39; policy adoption decisions. The problem with Cox PH models is that they assume the risk of adopting a policy at each point in time changes proportionally. However, in my papers I had good reasons to suspect that this risk actually changed non-proportionally over time. To overcome these model-assumption-busting problems I included time interactions, a pretty common way of dealing with the problem.&lt;/p&gt;

&lt;p&gt;When you include time interactions, the variables&amp;#39; coefficients (\( \beta_{cc} \)) are now a combination of the estimates for the base coeffiecient (\( \beta_{1} \)) plus the time interaction (\( \beta_{2}(t) \)):&lt;/p&gt;

&lt;p&gt;\[ 
  \beta_{cc} = \beta_{1} + \beta_{2}(t)
 \]&lt;/p&gt;

&lt;p&gt;You&amp;#39;ll probably notice that the combined coefficient is different at each point in time \( t \).&lt;/p&gt;

&lt;p&gt;See Amanda&amp;#39;s original article for a more detailed discussion of these issues. &lt;/p&gt;

&lt;h2&gt;The Problem&lt;/h2&gt;

&lt;p&gt;The problem I had before was conveying the substantive effect of the combined coefficient and our uncertainty about it over time. Licht&amp;#39;s article solves these problems with Stata. How do we do it in R?&lt;/p&gt;

&lt;h2&gt;Non-proportional Relative Hazards in R&lt;/h2&gt;

&lt;p&gt;To demonstrate how to achieve these goals I&amp;#39;ll recreate part of a figure from Licht&amp;#39;s paper using R. This figure uses data/methods from an earlier paper by &lt;a href=&quot;http://eup.sagepub.com/content/8/4/555.refs&quot;&gt;Golub &amp;amp; Steunenberg (2007)&lt;/a&gt;. You can download the data &lt;a href=&quot;http://hdl.handle.net/1902.1/15633&quot;&gt;here&lt;/a&gt; (it&amp;#39;s called &lt;code&gt;GolubEUPdata.tab&lt;/code&gt;). My goal is a figure plotting simulated values of the relative non-proportional hazard for the variable &lt;code&gt;qmv&lt;/code&gt; between times 80 and 2000. 

&lt;p&gt; So, this is the figure I created:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfgAAAH4CAYAAACmKP9/AAAEJGlDQ1BJQ0MgUHJvZmlsZQAAOBGFVd9v21QUPolvUqQWPyBYR4eKxa9VU1u5GxqtxgZJk6XtShal6dgqJOQ6N4mpGwfb6baqT3uBNwb8AUDZAw9IPCENBmJ72fbAtElThyqqSUh76MQPISbtBVXhu3ZiJ1PEXPX6yznfOec7517bRD1fabWaGVWIlquunc8klZOnFpSeTYrSs9RLA9Sr6U4tkcvNEi7BFffO6+EdigjL7ZHu/k72I796i9zRiSJPwG4VHX0Z+AxRzNRrtksUvwf7+Gm3BtzzHPDTNgQCqwKXfZwSeNHHJz1OIT8JjtAq6xWtCLwGPLzYZi+3YV8DGMiT4VVuG7oiZpGzrZJhcs/hL49xtzH/Dy6bdfTsXYNY+5yluWO4D4neK/ZUvok/17X0HPBLsF+vuUlhfwX4j/rSfAJ4H1H0qZJ9dN7nR19frRTeBt4Fe9FwpwtN+2p1MXscGLHR9SXrmMgjONd1ZxKzpBeA71b4tNhj6JGoyFNp4GHgwUp9qplfmnFW5oTdy7NamcwCI49kv6fN5IAHgD+0rbyoBc3SOjczohbyS1drbq6pQdqumllRC/0ymTtej8gpbbuVwpQfyw66dqEZyxZKxtHpJn+tZnpnEdrYBbueF9qQn93S7HQGGHnYP7w6L+YGHNtd1FJitqPAR+hERCNOFi1i1alKO6RQnjKUxL1GNjwlMsiEhcPLYTEiT9ISbN15OY/jx4SMshe9LaJRpTvHr3C/ybFYP1PZAfwfYrPsMBtnE6SwN9ib7AhLwTrBDgUKcm06FSrTfSj187xPdVQWOk5Q8vxAfSiIUc7Z7xr6zY/+hpqwSyv0I0/QMTRb7RMgBxNodTfSPqdraz/sDjzKBrv4zu2+a2t0/HHzjd2Lbcc2sG7GtsL42K+xLfxtUgI7YHqKlqHK8HbCCXgjHT1cAdMlDetv4FnQ2lLasaOl6vmB0CMmwT/IPszSueHQqv6i/qluqF+oF9TfO2qEGTumJH0qfSv9KH0nfS/9TIp0Wboi/SRdlb6RLgU5u++9nyXYe69fYRPdil1o1WufNSdTTsp75BfllPy8/LI8G7AUuV8ek6fkvfDsCfbNDP0dvRh0CrNqTbV7LfEEGDQPJQadBtfGVMWEq3QWWdufk6ZSNsjG2PQjp3ZcnOWWing6noonSInvi0/Ex+IzAreevPhe+CawpgP1/pMTMDo64G0sTCXIM+KdOnFWRfQKdJvQzV1+Bt8OokmrdtY2yhVX2a+qrykJfMq4Ml3VR4cVzTQVz+UoNne4vcKLoyS+gyKO6EHe+75Fdt0Mbe5bRIf/wjvrVmhbqBN97RD1vxrahvBOfOYzoosH9bq94uejSOQGkVM6sN/7HelL4t10t9F4gPdVzydEOx83Gv+uNxo7XyL/FtFl8z9ZAHF4bBsrEwAAQABJREFUeAHsnQm8XdPZ/58b85QECQ0Rak7Mc1DErAgVtEGV0qoaqsa29FV0pHT4l+rrbQ2tqUhRRcXYmok5hhJTiMYURIgpOf/nu859TvY9Oedm33PPufeem9/z+eyz91577bXX/u5z9m89z1p7n5aCm8lEQAREQAREQAR6FYE+vepsdDIiIAIiIAIiIAKJgAReXwQREAEREAER6IUEJPC98KLqlERABERABERAAq/vgAiIgAiIgAj0QgIS+F54UXVKIiACIiACIiCB13dABERABERABHohAQl8L7yoOiUREAEREAERkMDrOyACIiACIiACvZCABL4XXlSdkgiIgAiIgAhI4PUdEAEREAEREIFeSEAC3wsvqk5JBERABERABCTw+g6IgAiIgAiIQC8kIIHvhRdVpyQCIiACIiACEnh9B0RABERABESgFxKQwPfCi6pTEgEREAEREAEJvL4DIiACIiACItALCfRagX/33Xftqaeesk8++aQXXjadkgh0L4GZM2faM888Yy+99JKx3GjjGK+++qo98sgj9vrrrzf6cJ0uv6v5dLrCTVzAZ599lqv2nf2e1vs4eeuTN18lCL1O4H/729/aCiusYIsvvritscYatuiii9o666xjN9xwQ5vzv+6666ylpcXGjh3bJr2RK5dddlk65t13393hw0yYMMH+/ve/d3i/ajtcfPHFqS4PPvhgtSz25ptvpjxwyk59+vSxxRZbzNZaay37zW9+U3X/9jbUk0VXX8upU6cmHvvtt1/VU9xnn31SnmnTplXN09M25PlOUOebb77ZllxySRs6dKitvPLK9vHHHzfsVLipnnbaaTZ48GBbbrnlbP3117fPfe5ztsoqq9jvf//72Y779NNPl76r3/nOd2bbHglXXnllKd+LL75o99xzT1o/5JBDIkvF+dFHH53yPfnkkxW3k9iVfKpWYg4byu8nXf0bmkP15riZ39UxxxxjgwYNsvnnn9+GDBmSvifl38VCoZC+J9tss40ttNBCtt5661X83lQ74OTJk+0b3/hG+s7NN9986Xislzcy8x6n3vmq1TvSe5XAH3roofbd737Xdt11V/vHP/5ht9xyi5166qlJ5ElD/MP4YowaNcqWWmqpSOqxc25yw4YNs3//+9/dUscRI0bYFVdcUZouvfRSO+KII2zBBRc0bniHHXZYl9WrEotmupZdBqqBBzruuOOMmx2N5nHjxqUbZyMOR/Rt7733Tr/hkSNHGqJM4/j//b//lxoXhx9+ePoectMsNxqhY8aMqRpdoIGZtc0228xWX331dIxykYh8n376qV1yySW2ySabJOch0svnXcWn/Lh513vDb4h79x/+8AejQYaTRoOahuBBBx3UBsPPf/5zO/7442233XZLDa9ddtnFjjzySDvllFPa5Ku0QhR4q622St/zb37zm+k4zGkMbbnllvbee++Vdst7nHrnK1Wg2oL/OHqFOezCAgssUPjSl7402/l4a6+w9NJLF5ZddtmChztm295VCS6M3IkKd911V4cO6Te6tN+xxx7bof3ay/yXv/wllfnAAw9UzfbGG2+kPF//+tcr5vEbXmHFFVcseMu48MEHH1TMUy2xJ7GoVsdq6XzXuI777rtvtSyF0aNHpzzvv/9+1Tw9bUOe7wR1XmKJJQouvA2v/o477liYZ555Ct6wrXisH/zgB4nxt771rdJ275ZLaX4DTvNK+8a9wqMBKc8LL7yQ9j/jjDPSujcMSuVlF6699tq0/bzzzssmz7bcVXxmO3DOhEbcT3Ieui7Z/vOf/6TrcNRRR7UpL35z3Lewhx9+OH1/3Mlrk8+dk3TPci+8TXr5ytlnn52Oc/7557fZxPXn9/9///d/KT3vceqdr02lqqz0Gg+eViktbObltsgii6SW+emnn27Tp09Pm11kbdNNN7X7778/reMds/7yyy8bkQBCPquttpqdfPLJafsdd9xhhHn69u1rG2ywgbF/GCE59n388ccjKc3/+c9/pvT2wnm0AvGG11133RRpcMFMXgt9mxihtC222CIt4zlzHPoiMb+m9qtf/SrVh5A54ctf//rXKT1laP0gpHzSSSelkDphTo730UcfZbPUtDzvvPOm+sD0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8Z0gT3v1YXslo0HOd5/rGEw4Po9IcVP3MG1qXLhXlnavJPAIDvvwHeU7EdaewJPHIynpmBynI1bOp73zzsOtM2Jbrd7l95Py31Bnj5n3twVb99xL15Z74e9+97tq1S6le7S0QOMxvhPM3SMv8BvKmo83SfdUj1qkvD5mqMAbEMPRy+YtX0Y3suWXLyP4YXmPU+98cfxq8xY2eMV7nRHeZjQng3+qDQBqxEkzSp/wT7xsIc8xqCujgelLJ6RUzchH/3r5+RDiot+JP/6I8FulMtxjSN0X0RdUKU890/LWK3vMzrLIlpV3uZZ65i27PF/e8yvfr9J6Pcqq93eCgWOM75jTd7HS+bSXxm2KJzj4/tNHHn3y1D/GrDCyulmtUdza41HtftLePh3dlue35Q2wNFaDex+DdjtihNEZ5+FiXPUFRJTHwFK+lzFWqCPH6EjevMepd75qdey1Al/thJUuAiIgAiIgAnMDgV4zyG5uuFg6RxEQAREQARHIS0ACn5eU8omACIiACIhAExGQwDfRxVJVRUAEREAERCAvAQl8XlLKJwIiIAIiIAJNREAC30QXS1UVAREQAREQgbwEJPB5SSmfCIiACIiACDQRAQl8E10sVVUEREAEREAE8hKQwOclpXwiIAIiIAIi0EQEJPBNdLFUVREQAREQARHIS0ACn5eU8omACIiACIhAExGQwDfRxVJVRUAEREAERCAvAQl8XlLKJwIiIAIiIAJNREAC30QXS1UVAREQAREQgbwEJPB5SSmfCIiACIiACDQRAQl8E10sVVUEREAEREAE8hKQwOclpXwiIAIiIAIi0EQEJPBNdLFUVREQAREQARHIS0ACn5eU8omACIiACIhAExGQwDfRxVJVRUAEREAERCAvAQl8XlLKJwIiIAIiIAJNREAC30QXS1UVAREQAREQgbwEJPB5SSmfCIiACIiACDQRAQl8E10sVVUEREAEREAE8hKQwOclpXwiIAJNR+Cxxx6z9957b7Z6z5w505jmZIVCYU5ZSts/++wzmz59emm92kK1fI8//ri9++671XZrivS8XJviZHpBJSXwveAi6hTaJzBq1ChraWlpM/Xv398222wzO+GEE3LdlNs/QuO2rrzyyrbLLrs07gA5Sw6Gn376abt7bLDBBolru5nKNq677rr2hS98oSx19tUZM2bYeeedZx999NHsGyukXH/99bbHHnvY/PPPX9p65ZVX2vrrr28LL7xwmtZbbz0bM2ZMaXssPPnkk3b44YfbsssuawMHDjTO/5VXXonNs82p04gRI2zvvfeebVs2ob181Hf06NGWp1Fx0kkntfk+l3+/WeccsFquSbbOeZbzcs1TlvLUj8C89StKJYlAzybw29/+1uaZZ55USW60Tz31lP3qV7+yW2+91R544IHStp59Fj27dttss43NN998DankT37yEzvllFNs3333nWP5b731lh188MH2hz/8wRZaaKGU/9xzz7XDDjvMRo4caccff3wS0ksuucT22msvY9uhhx6a8r355pu2ww472LBhw+yCCy6wDz/80H70ox/ZJptsYuPGjbNlllmmzfHffvttO+igg+zuu+9utzE2p3zHHnus/elPf7Lf//73qXHR5iBVVn7wgx+kRkilzYMGDUrJjbwmHCAv10p1VFqDCXhrUSYCvZqAe3HEWQuffPLJbOf585//PG275ZZbZtvWExJWWmmlws4779ztVWmPYWcrt8466xQ233zzORZz4oknpmv1/vvvzzGvi2VhjTXWKOXz0HHBPfHCCiusUPBIQCndIxKF5ZdfvuCeeinNvfXCoosuWpg2bVopbfLkyYV55523cMwxx5TSKNMbiAWPBhVc9AuLLbZYwaMtpe2xkDcf+T1CUVh88cULU6dOjd0rzoOFd0FU3N5ViR3h2lV10nFmEVCIvsENKBXfswkst9xyqYKEf7N2ww032Pbbb5+8I8L5G2+8cfKs/KdTyoan941vfMMoo2/fvsnDO/vss0vbY+G5555LoWI8P7wqwsYTJkyIzaX5TTfdlLzJJZdcMoWsb7/99tK2OS089NBD9sUvfjGFkznOl770JXvmmWfa7Pa1r33NvEGTIhZ4df369TNC1Oeff36bfJ1ZOfDAA+2QQw5pU8Sjjz6aOLm4pvpx/s8++2ybPKzcdttt6bypF90nF110USnP97///dI6dT/11FNL28oX8JTx3Al3hxGxOfnkk+2cc86xPn1m3fZctG311Vc39nGxMvrHb7zxxsRvkUUWid1t6aWXtq233trw+MPobz/uuONSROCJJ56wJZZYIja1mefNx050BXgDJnnFbQrpxEqla8J37Stf+YoNGDDANtpoI7vqqqtSlIK8HbG8XDtSpvLWkcAsrdeSCPROAtW8z//+97+F4cOHJ+/Lb8Klk8eL8p9YYYsttih4WLhw1FFHFYYMGZLSLrzwwlK+LbfcMnlb3lebPDlvEKQ8P/3pT0t5XHiTN4hH6CHgAhED71dP3p6LQinfgw8+WPC+4oL3lxbOOuuslNdDywXvK56jB3/XXXcVXLQKePsc+7TTTit4oyPte99995WOgafsYecC5W633XYFF83CiiuumOr8t7/9rZSv0kI1huV5vX+7sOmmm5aSX3zxxcJSSy1V+PznP1/42c9+VnBBLLioFLzfvYD3h1EvF/XEycPvyUt2QS14P3Lh73//e8rjwpq8fK6Lh9cL3ueb0it9uFilc/IumEqb26ThmXu3TanO3vBI+/7P//xPm3ysfPOb30zbfNBe2ob3P378+FI+IgGVPPi8+aKgbbfdNn33Yr3SvCMefPk1uf/++9N3jXS+a0ceeWRa5zp5g6/S4TqcVs61wwVoh7oQoB9KJgK9mkCI01prrVVYe+21C8wRQO8rTqFZRCgM0UGAV1lllQI35rCXXnop3dwJ32KvvfZaWke0wgj9ujdU4HhhW221Vbp5kj9sypQpqWGw0047RVI65mqrrVbINjR+97vfpWO0F6KnjuzH+bzzzjul8l5//fWCRwIKG264YRshRSCvu+66Ur6XX345CdyXv/zlUlqlhWBYqZsjm79cTAi9I+juIZeyIdrU4+KLL05pCDzrl19+eSmPDxBLaTSKwkLU5hSi//GPf5zOyb3x2LXq/Otf/3o6zj//+c+Uh4YWdfnNb34z2z7f+9730raJEyfOto2EagJfnnlO+RBcmLVnwQK+fI/Kp2zjpvya0Nii+yL7XeNacN71Evhyru2di7Y1jsCsWJVfXZkI9GYCDLZi9DShV/eo02AwF9400I4wKsbo43/9618pjE34NoxQJqFv7xtNSYTtF1hgAfvrX/+aBlcR3iX0y2A994ZTHsqmLBfHFJqPsryP1XbbbTdzUbEPPvjAPJKQQvaEthdccMHIZu4xptB/KaHCwvPPP2//+c9/7IgjjjDqFObemH3rW99Kg8JckCI5hZp33XXX0rpHJlI3BN0N9TZvfJgLpvnNvk34mkFuhIgZdR5GWJ6QcRgD3Oj6qBTKjzzV5gye/NznPjfHQZM//OEP0yA6OO24446pOG/ApHk2PB/H4buDcV6NtMGDBxuDBJnmZFx/zrd8YmBgJfOGqnmDNn1fst81Bi7yXaiHVeJaj3JVRscJzLqDdXxf7SECTUXAQ9ltRnh7u9k8pG0ejk3pHq5M54OQe+g19bfSt/r000+nR464+bu3nPLQWKA/m5HPPOLFo1Tuaad+X/emUp7oZ+e4PAqWtbh5v/DCC+bhzLSJR+KyRgPCva1s0mzLiDuGIJabe2kpCZF0rzEtI5rlRt/xxx9/XJ7c6XXGAMDMoyGzlcUo9ayVnzvbEGkf6JbNlmuZ68XjbdWM6+5ecuqP32effdI88tIwwio9Ox9pNA4baQg8hmh7N1C7h6Kh5FGpdvNkNzIeAlt11VWzyalhSxpjEWq19rjWWqb26xwBefCd46e9m5gA3jreBjfUa6+9tnQmiD43TQZy8eyzh9mTp17u4Rx99NHJQ2aOV86gMAa68cgUxmApbM011zQGhmUnD4kb+9FQCG8r+7x22tE/fGR2LFacEwHAaAyUWzyuxkCosEr5Ylu9594VkYrMc8ysN9nZevCymGz0JVsekRYiCgy2+/a3v20emm7j6cejZd7dkd0tLZNGlCYbKZktUx0Sou6NeOlNNJgQ43Lj3Gq1OXGttVzt1zkC8uA7x0979wIChN/xtrlJIeiIPh7mNddcU3qGmm14e1mPGgH3/vwU4ud5erzp/fffP4V9iQr4oLdEB0+U7VlDmBE+buYhxN4fns2Sll999dWK3nlkjGMQei23SOP43WHBinMoN95JwHa6KuptjHivFNrnGjJK/C9/+YudcsopadR4+bEJzRPRiJfEZLeTNnTo0DYvzslur9dy1J3zqLdFpITQvg/ma1M8aTwN0lHLw7WjZSp/fQjU3mSrz/FVigh0KwEfZW6E4XlUCA+GZYxwO951GI9w4QnzGBVG3zI3Q17yEUb4Hs8cw9vzEeopzHz11Ve3efsaj+T5CP20He+d8Dkh/uxjYZTho50tRJr1SkZonuhB+aNu3HR5SQvbeBSuO4zICF0CjFPIGoy/+93vWiXhz+YrX46XFM2pOyH6sMu98DPOOCOJOxGaH/mLa6oZjTTGR2Q9aMSP8RVxfavtW4/0EPgI1dejzCiDt9rxfeMxwvgus43HQjnHWiwv11rK1j6dIyAPvnP8tHcTEaC/PESCmxveOjdyhN1Hw6czIZyOV41wI554PDyP7i84SR53DLKjQYCXH/sRxudZ9PBMEVW6ABAT3qjGQDsiA4RGubk+8sgjdtlll6VBfxyYV7DyDDThY38szyZNmpTeZhbefTXM9AfzfDfhfiIM1JMGBPVCKHiFaIR8q5XRkfQsw+x+DNKCSdbg6iPak9f81a9+NdWRBssvfvGL1EcOl44YjRUM75sGGN0hlYyuEF4/S0TFH4NMWRjnwLXAQ3/jjTdSXcr3ZUwFXQUMWOR9Brwi+Mwzz0zjE3htLWMJfCR9+W51X6feNBbbG0dQ60H5PnGe++23n40YMcK4LjS0/KmBdO58Z8OIYPHGP763BxxwQCS3mXeEa5sdtdI1BPyGIxOBXk0gHvHyXxQdj2ny8Hh6Nptt/orRNufPI0P+WtL0HDb53eMpuGCk569dLAs8gobxDDSPFUWZPE/Ns/F+w2xTnnvm6Vlw8vkNND3rzvPw5eaikupEPp6J51lsnsVv7zG5KMNfb5oevYtj8CigNyBic5pXe2Mcz6T7i2Xa5C1fqcQwzps554iVP5JF2h//+MeCh71LnDw0X8i+ObBavXjk0F8wRBHJvNGTnuPneGyrZjz2SB5vSJWy8P6CbH0rLbvHXspP/bw/Pu3jopgeQ+P58faM70ml5+DL92kvn0eJCh4ZKniDrXy3NuvxmFyeN9lVuiY+5iS9V4Bj8R3mPQhcB75vYX/+85/T+Vd6ZDDydJRr7Kd51xBo4TD+ZZeJgAiUEeDxNTyaOfVh4xEy0R+eDeuXFWc8NodXO6fyGFnPSP5aBp7hIeOlEvLvaUbd4Mlgxayn2NF6MniPc2xv8B7vlyeCwT+0dcaoM4PqGj2wLurojaEUQeBJgBjDENvqMSdyxViPFVZYoRTNinLpTiEKE495RrrmzUtAAt+81041FwERqEKAZ70ZEMf4h2qh/Cq7dlsy4yboFuI1w3RjNMLovqFbh+6l7JMj7q2nMPyvf/3rND6iEcdWmV1PQALf9cx1RBEQgS4gwD+tMYiyI+/074JqVT0Efd78ox3/XTCnxyOrFpJjA3+R/Mtf/jI9Cso7/3k6AE68AOmKK66o65iNHNVRlgYSkMA3EK6KFgER6D4CPMbIY3g8TUBIuqfbd77znTQoMM/f4XbmXOiVZUAoA0x5CRNdS/7/AelNgnMa1NmZ42rfricgge965jqiCIiACIiACDScgJ6DbzhiHUAEREAEREAEup6ABL7rmeuIIiACIiACItBwAhL4hiPWAURABERABESg6wlI4LueuY4oAiIgAiIgAg0nIIFvOGIdQAREQAREQAS6noAEvuuZ64giIAIiIAIi0HACEviGI9YBREAEREAERKDrCUjgu565jigCIiACIiACDScggW84Yh1ABERABERABLqegAS+65nriCIgAiIgAiLQcAIS+IYj1gFEQAREQAREoOsJSOC7nrmOKAIiIAIiIAINJyCBbzhiHUAEREAEREAEup6ABL7rmeuIIiACIiACItBwAhL4hiPWAURABERABESg6wlI4LueuY4oAiIgAiIgAg0nIIFvOGIdQAREQAREQAS6nsC8XX/IrjvilClTbMaMGTUfsFAoWEtLS837a0cR6K0E+G1g+n301ius86qVQL11Y6GFFrJFF120pur0aoH/29/+Zuuvv35NYNhp+vTpBlyZCIhAWwI0nBH3Pn0UBGxLRmtzO4GPPvrIFlhggbo1fp9//nnbe++9a8LaqwW+f//+nRL4qVOnWt++fWsCq51EoDcT+PTTT5O4zzPPPL35NHVuItBhAtOmTbOFF164bo3fl156qcN1iB3U/A4SmouACIiACIhALyIgge9FF1OnIgIiIAIiIAJBQAIfJDQXAREQAREQgV5EQALfiy6mTkUEREAEREAEgoAEPkhoLgIiIAIiIAK9iIAEvhddTJ2KCIiACIiACAQBCXyQ0FwEREAEREAEehGBXv0c/MyZM43ndWs1XubRmf1rPa72E4GeToC3dfH74DcmEwERmEUgdKNeL4GKt0bOOkL+pV4t8LxpqzMv4uACdWb//JdBOUWguQjoTXbNdb1U264jELpRL4HvTM17vcB3BnLpVZy8dzveSZ9d7gx57SsCTUxAAt/EF09VbyiB0I3OaE+2gpRXq6kPvj1yrX+oURJ38gbs2Nbe/tomAiIgAiIgAt1EQAJfDfycPPUQ+mr7K10EREAEREAEupGABL4SfHnnlagoTQREQAREoIkI9Oo++JqvQ17vPBoCefPXXCHtKAIiIAIiIAIdIyAPvhKvEO5K27JpEvYsDS2LgAiIgAj0IAIS+B50MVQVERABERABEagXAQl8Z0nKi+8sQe0vAiIgAiLQAAIS+EpQEe08Yfo8eSqVrzQREAEREAERaDABCXw1wHMSecRd3ns1ekoXAREQARHoZgIS+PYuQFbkEfSsxy5xb4+ctomACIiACHQzAT0mN6cLEEIe8znl13YREAEREAER6AEE5MH3gIugKoiACIiACIhAvQlI4OtNVOWJgAiIgAiIQA8gIIHvARdBVRABERABERCBehOQwNebqMoTAREQAREQgR5AQALfAy6CqiACIiACIiAC9SYgga83UZUnAiIgAiIgAj2AgAS+B1wEVUEEREAEREAE6k1AAl9voipPBERABERABHoAAQl8D7gIqoIIiIAIiIAI1JuABL7eRFWeCIiACIiACPQAAhL4HnARVAUREAEREAERqDcBCXy9iao8ERABERABEegBBCTwPeAiqAoiIAIiIAIiUG8CEvh6E1V5IiACIiACItADCEjge8BFUBVEQAREQAREoN4EJPB5iRYKZkwyERABERABEWgCAvM2QR27r4oS9e5jryOLgAiIgAh0ioA8+Dnha2kxY8JizrK8eSjIREAEREAEeigBCXy1C4OAh6Bnl2fONGPCJPJFDvoUAREQARHocQQk8O1dkhDwEHry9nFkrIfIt7e/tomACIiACIhANxFQH3wl8CHeWWHP5iMdoa/UAMjm07IIiIAIiIAIdBMBefDVwFcT98gf20PkI11zERABERABEegBBCTwlS4C4h0CXml7pCHu4e1HmuYiIAIiIAIi0AMISOArXYQZM2aF3yttj7Toj491zUVABERABESghxCQwFe6EAg3lif8nsfTL5amTxEQAREQARHoMgIS+EqoW0P0LcwR+azQZ9dZjsZApXKUJgIiIAIiIALdRECj6CuBbxX2Qrmwkzc8dvW9VyKnNBEQAREQgR5CQAKf50JkPXWEPYR/nnny7K08IiACIiACItDlBCTwlZCHgLMtlsNjz4p9pX2VJgIiIAIiIAI9gIAEvtJFiL53tkVIPuYIPMsh+Nk8lcpSmgiIgAiIgAh0AwEJfCXoId4IeQh75Iv1GFwXHn5s11wEREAEREAEegABjaKvdBEqCXulfIi7BL4SGaWJgAiIgAh0MwEJfKULEGH4StuUJgIiIAIiIAJNQEACX+ki4cHLM69ERmkiIAIiIAJNQqBpBP6dd96x0aNH27Bhw2zjjTe2iy++uHGIw4OvJvKkR57ok29cbVSyCIiACIiACHSYQNMI/IknnmgrrbSSPfXUU/aPf/zDfvKTn9ibb77Z4RPOtUN48FnxDlGPAXgUlF3OVbAyiYAIiIAI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ERABERCBriVQk8DT/z7TRY/X037wwQcesS6kdd5HP3HiRNtkk03S1LWnUuejIdgIO6JdPpiutQGQtuHZh0WYPtY1FwEREAEREIFuIlCTwPPM+7rrrmuTJk2ardpLL720XXnllbOlN1VChOMR+RBw5gg7c4ScCYtGQGwvpupTBERABERABLqVQE0Cf/HFF7uuzbR7773XbrzxxvQHNEcccYSdd9559uijjxovwmlqQ7Tx2gnH85IblkPQs8s0AMgTjQCF6Jv6sqvyIiACItCbCLhCddyef/5522233Wz48OG26aabplD9SiutZKeffrpNmzbN7rjjjo4X2pP2oO/dRZs/0Ul964h4djnqyl/kks5EA4ApxD7yaC4CIiACIiAC3UCgJoEfMGBA+tc46rvaaqul0fSffPJJqv7aa69tDz/8cDecSh0Pidfuot6Ch45447WHkMdhstsQdraTJhMBERABERCBHkCgJkXCa+cvYZlWWGEFW2SRReyyyy4zXoBz22232dChQ3vAqXWiCq2CXojwO8Kd9c7x0mNbpCPwWMyLa/oUAREQAREQgW4hUJPA77DDDvaVr3zFjj32WNezFjvxxBPtwAMPtEGDBtmHH35o2267bbecTN0OSugdQ8gRcMQcY54V+/nnL25H1MtD8+XrxRL0KQIiIAIiIAJdQqCmQXbU7Oyzz7Z33303VRKh549mJk+ebF/60pdsfoSvmY2/gkWg6YsnXB/h+DgnBB0vn26J2CZPPuhoLgIiIAIi0AMI1Czw1L1///6lU9hyyy3T8oQJE2zgwIHWr1+/0ramW0DcXcALiPuCC87qWw9Pne0RoufkSJeJgAiIgAiIQA8iUFOI/pxzzrENNtjAXn755dlOhdD92LFjZ0tvqoTWQXalsHuE6Qndsw1D5CNcz3aWw9jGJBMBERABERCBbiKQUaX8NWDE/FNPPZXeVvfAAw/k37FZchKax0NH0ON1tcwXWGDWGfCaWjz3EHZEPmvy6rM0tCwCIiACItDFBGoSeOq433772b777msjRoww/nym1xmCTV88Ih/heJYRbrYxzgCRD0+dtFjudTB0QiIgAiIgAs1GoGaBn+Gi96tf/Sq93Gb06NFpzsn3iv+JJwyPkMcU3jwniIgzwI45Xj3zaACEyMt7h5RMBERABESgGwl0apAd9T7yyCNtyJAhyZvnDXdN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hw4dDMNoI0aM8PYvSDeIo0wsQe6666625ppr2pgxY8rSbwl8woqVoJtuusl22WUXO+SQQ+y+++6zSy65xIF//fXXlkZpBfiI/JQpUwp+3YiACIiACNQmAUwxH3jggYaA41588UVfhse6abE2pJm4/frrr/bnn3/OFxe6wfI88XkjbMT9+OOPZQEogU9YsR383HPP+XuUDTbYwP7++28bP368A//5558bmQns1KmTzZw5sywPQ4WKgAiIgAhUJ4FPP/3UjjrqKBs6dKgtv/zyVqwNcW5JWm6fLy50ozgPPSXfjBkzytJpfQefsDIqmzBhgn322WcOGRvCzOT79evn5gZ/++23AnzuWaaREwEREAERqA8CH3/8se2+++6GnXk23OEwRfvee+8VAPz++++21FJL2QorrFBSN8iT1xMyl1NTNINPgLE5v9122xUe1JZbbunQAc/7ka+++qoQN2nSJFtrrbUKft2IgAiIgAjULoEvvvjCv7C64IIL7OSTTy50FG1AD8LltaGUbjDzZ8b+7bffRjYvY+211y74W/NGAp9oMlt/5ZVXLO2Sd7Z33nmnpZ2TvrGOzxnuuusu33THA3zggQeMzyHkREAEREAEap8Ay/JHHnmkz9w5oZRf2jXvM3rEnxVg3qtff/31riUQWZBuEHfNNdf4gTSPPPKIH2i28cYblwdkObbmt8cyb7nllmzrrbfONtxww2y//fbL0i5J7wafMvDpQxp5ZWkzRJY237XH7qnNIiACIiACzSTw5ptvcpz6fL806fOS+BxumWWW8c+sd9tttywt03v4gnTjyy+/zDbddNMsverN1ltvPf9UrpnNWuTkMlVbNG5iWX655ZYrCp37nmTJJZc0fnIiIAIiIAIiAAGOhuX9O+/eix16Uko3MKa28sorF2dpVb8EvlVxqjAREAEREAERqA4CegdfHc9BrRABERABERCBViUggW9VnCpMBERABERABKqDgAS+Op6DWiECTuDRRx91E5aYsSz1w0xm2txTsK5VKXS0h/a1xL3//vuN+rP44ov7+8d0zoM9/vjjLSlSeURABBZCQIZuFgJI0SJQSQLbbLONi3fUeeGFFxomMLFzHa579+5+fsJxxx0XQRW5csriuuuu+6/quuyyy9x+NxuTsD/x1FNP2QEHHODmofv37/+vylZmERCBxgS0ya4xD/lEoKoIYPM6fUpj9957b1W1q7mNYQbPkcvYm9h5550L2fme+OCDD7a33nrLsBbW1E7kQmLdiIAINIuAluibhUuJRaA6CDz77LOGxUUcJ14hnoRhoAmR5JQqLDDefffdhhGN9ddf39IRlY0azzJ/r169LH3Ha1tssYU9/PDDjeKLPdTx0ksveXA6TtluvPFG44plR8w3c49gN8d17NjR28VhG08++WQh6wsvvGA77bSTH8rBp0R77723peOcPZ5VAIyF5B35Oa+bgcTnn39u++yzjxuqSsdA2+GHH14wYpXPo3sRqHUCEvhaf8LqX00S4NQqxCwc91jbYpkba4vpvGqfKd9222127bXX2jnnnGOXXnqpffDBB55l+PDhnp7l8VdffdUHBljseuyxx6LI+a7UwXe9OAYP559/vh+zfM899xhmPBF8rD421/Xs2dPNd06cONGz0sa99trLLYXRtltvvdVP5zrhhBM8HuF/6KGHXMijLvrMt8jJgIgfCIJNcAYjhH/yySd24oknRlJdRaB+CCyySRwlFAERqDiBdEZCloR7vnqTQGdLLLGEh8+ZM8ctbZ133nmFdJdffrmHjR07thCWTkrMrrrqKvdjsfHQQw8txHGDxcatttqqUVjek/4qZiNHjvSgtKyepbOwMyx2hdthhx2yJMLhbXRNh3J4e9ISfaPw8KSVhCzNyt37+uuvZ1deeWVE+fW6667L0hGbfk+d66yzTkYfw9HusDKZjnfO0oAmgwsuCXxWqt7Ir6sI1CIBbbKrn7GcelrjBJLgFnrIkjlL7/lDlDjoYvr06X48MkdfEs/ydTjsajOLTn/ofMd7hJe6svTPzvpwnGvNUZktcVOmTDF21OO23XZbf6UwbNgw+/DDD/3d/Guvveb2vomnzqOPPtr3JVx00UW+dB9fFhA/ePBgGzRokN1xxx2+VL///vv7Rj7i5ESgnghI4OvpaauvNU2gS5cujfrH++28AEfk7Nmz/b09Ap3OX4hg6927t9+zw71Dhw6F8FI3cf51xDdVV8Qt6MrhHRz01KNHD0/2xhtv+Old3bp1s2Tf2wYMGGB8XZBWHwrFIPDsKRg3bpylVQVvO18X4E4//XTr06ePcZDHqFGj/H09y/qjR49ukkehUN2IQI0RkMDX2ANVd0RgYQSYybNxjc15+c/vOBWLYywXRdwXVkdz4tNSu9vr7tevn2e7+uqrfdMf799j0HDuuedaWnIvFIuYI9ojRozw39lnn+1xrCDwzp4TH9lzwI8BADv1WQ3gHb2cCNQLAQl8vTxp9VMEcgQGDhxoQ4YM8Zkyy/RsbOvbt69vxssla/VbPofjaE3EevLkycZu+fvvv9+Pz2xoaPD6mLlPmDDBj+VM7909zc033+w79POvD9KeAV+OnzFjhredzJ06dXJjPGPGjLGhQ4f6wVHjx483Nt1RrpwI1BMBCXw9PW31VQTmEeA9NbvOTzrpJGN3eteuXY0Z9JlnnllWRmeddZaXz8ycOtk3wI7+/GdvDD4QeD5x4zVA2hxot99+u+8XIJxP+3Bpk6CdeuqpPlvPnwB5ww03GDN67AfwugFDQU888YR17tzZ8+kfEagXAjJ0Uy9PWv0UgSYIIIDMpPmWPZbDm0jWJkHTpk3zNvFKoSnHzJ3NhHzax7v6Yjdr1izfVJh21RdHyS8CdUFAAl8Xj1mdFIHaITBz5kybNGmSv2vnW/f4tr92eqieiEDrENASfetwVCkiIAIVIjB16lTfLIfFvueff75CtaoaEWh/BDSDb3/PTC0WgbonwHfzK620kiVjP3XPQgBEoBQBCXwpMgoXAREQAREQgXZMQLbo2/HDU9NFQAREQAREoBQBCXwpMgoXAREQAREQgXZMQALfjh+emi4CIiACIiACpQhI4EuRUbgIiIAIiIAItGMCEvh2/PDUdBEQAREQAREoReD/gYtqna25X2cAAAAASUVORK5CYII=&quot; alt=&quot;middle&quot;/&gt; &lt;/p&gt;

&lt;p&gt;The full R script for doing this is &lt;a href=&quot;https://gist.github.com/3831482&quot;&gt;HERE&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt; Step-by-step &lt;/h2&gt;

&lt;p&gt;These are the main steps I used to create the figure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;First, run the Cox PH model with time interactions using the &lt;code&gt;coxph&lt;/code&gt; command from the &lt;em&gt;survival&lt;/em&gt; package. Assign the output of this model to a new object (in my example I call the output object M1).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Extract the coefficeient and variance-covariance matrices from the output object like this:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code&gt;# Create coefficient matrix
Coef &amp;lt;- matrix(M1$coefficients)

# Create variance-covariance matrix
VC &amp;lt;- vcov(M1)
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;Using the &lt;code&gt;rmultnorm&lt;/code&gt; command from the &lt;a href=&quot;http://cran.r-project.org/web/packages/MSBVAR/index.html&quot;&gt;MSBVAR&lt;/a&gt; package, simulate coefficients. &lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code&gt;Drawn &amp;lt;- rmultnorm(n = 1000, mu = Coef, vmat = VC)
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;Clean up the data. For this example we only need two of the columns of simulated coefficients (numbers 1 &amp;amp; 13). We also need to create a simulation ID variable which will be important later.&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code&gt;# Keep qmv and Lqmv
Drawn &amp;lt;- data.frame(Drawn[, c(1, 13)])

# Create Merge Variable (Simulation Number)
Drawn$ID &amp;lt;- 1:1000
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;Now that we have the simulated coefficients, we can calculate the &lt;em&gt;simulated combined coefficient for qmv&lt;/em&gt;. This involves first creating a vector with the times over which we want to calculate the coefficients. We then combine this with the simulated data as in the equation above.&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code&gt;# Create Combined time interactionsCoefficient
TVSim &amp;lt;- outer(Drawn[,2], Range)
TVSim &amp;lt;- data.frame(melt(TVSim))
TVSim &amp;lt;- rename(TVSim, c(X1 = &amp;quot;ID&amp;quot;, X2 = &amp;quot;Time&amp;quot;, value = &amp;quot;TVR&amp;quot;))

# Merge in the non-time interacted coefficient and combine
TVSim &amp;lt;- merge(Drawn, TVSim, by = &amp;quot;ID&amp;quot;)
TVSim$CCqmv &amp;lt;- TVSim$qmv + TVSim$TVR
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;Now we can exponentiate the coefficient to get the relative hazard&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code&gt;# Create Combined Relative Hazard
TVSim$HRqmv &amp;lt;- exp(TVSim$CCqmv)
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;Finally, after ordering the data by time, we can plot our simulated relative hazards over time.&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code&gt;# Order Variables
TVSim &amp;lt;- TVSim[order(TVSim$Time),]

# Graph Simulated Combined Hazard Ratios
ggplot(TVSim, aes(Time, HRqmv)) +
  geom_point(shape = 21, alpha = I(0.01), colour = &quot;#FA9FB5&quot;, size = 5) +
  geom_smooth() +
  geom_hline(aes(yintercept = 1), linetype = &quot;dotted&quot;) +
  scale_y_continuous(breaks = c(-1, 0, 1, 3, 6)) +
  scale_x_continuous(breaks = c(0, 129), labels = c(80, 2000)) +
  xlab(&quot;Time in Days&quot;) + ylab(&quot;Simulated QMV Relative Hazard\n&quot;) +
  ggtitle(&quot;Simulated Relative Hazard for QMV from times 80-2000\n
          Based on Licht (2011) Fig. 2\n&quot;) +
  theme_bw(base_size = 15)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Licht points out that the relative hazard is substantively interesting for dummy variables (which have values 0 and 1), but we probably want other approaches for continuous variables. Only a few modifications to the code above are required to implement these.&lt;/p&gt;

&lt;hr/&gt;

&lt;p&gt;Thanks to &lt;a href=&quot;http://personal.lse.ac.uk/chwierot/&quot;&gt;Jeff Chweiroth&lt;/a&gt; for pointing me to Amanda Licht&amp;#39;s article and motivating me to put together this code.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/1853036335929035563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/1853036335929035563' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/1853036335929035563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/1853036335929035563'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2012/10/graphing-non-proportional-hazards-in-r.html' title='Graphing Non-Proportional Hazards in R'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-3336488466438594566</id><published>2012-09-22T05:24:00.000+01:00</published><updated>2012-09-22T05:24:40.977+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="API"/><category scheme="http://www.blogger.com/atom/ns#" term="Federal Register"/><category scheme="http://www.blogger.com/atom/ns#" term="Ideas"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><title type='text'>Federal Register API/R Package Ideas?</title><content type='html'>&lt;p&gt;The other day &lt;a href=&quot;http://criticaljuncture.org/&quot;&gt;Critical Juncture&lt;/a&gt; put up an &lt;a href=&quot;https://www.federalregister.gov/developers/api/v1&quot;&gt;API for the Federal Register&lt;/a&gt;. &lt;a href=&quot;http://christophergandrud.tumblr.com/post/31829916920/federal-register-api&quot;&gt;I thought&lt;/a&gt; it would be great if there was a package that could use this API to download data directly into R (much like the excellent &lt;a href=&quot;http://cran.r-project.org/web/packages/WDI/index.html&quot;&gt;WDI package&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;This would make it easier to analyse things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;the frequency of regulations issued on a particular issue over a given period of time,&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;the text of the actual regulations.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The nice people over at Critical Juncture tweeted me showing interest in the idea and wondering what would be useful.&lt;/p&gt;

&lt;p&gt;I was thinking that in the package there could be commands such as &lt;code&gt;getFedRegister&lt;/code&gt; and &lt;code&gt;getMultiFedRegister&lt;/code&gt; that would do pretty much do what the API is set up to help now, except download the data into an R object rather than straight to JSON or CSV.&lt;/p&gt;

&lt;h3&gt;More Ideas?&lt;/h3&gt;

&lt;p&gt;Any other ideas for things that might be useful? Just leave them in the comments at my &lt;a href=&quot;http://christophergandrud.tumblr.com/post/32029870546/federal-register-api-ideas&quot;&gt;Tumblr site&lt;/a&gt;. &lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/3336488466438594566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/3336488466438594566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/3336488466438594566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/3336488466438594566'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2012/09/federal-register-apir-package-ideas.html' title='Federal Register API/R Package Ideas?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36784551.post-162818696553282605</id><published>2012-09-17T10:13:00.001+01:00</published><updated>2012-09-17T14:07:38.479+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bash"/><category scheme="http://www.blogger.com/atom/ns#" term="beamer slideshow"/><category scheme="http://www.blogger.com/atom/ns#" term="knitr"/><category scheme="http://www.blogger.com/atom/ns#" term="LaTeX"/><category scheme="http://www.blogger.com/atom/ns#" term="lecture slides"/><category scheme="http://www.blogger.com/atom/ns#" term="Markdown"/><category scheme="http://www.blogger.com/atom/ns#" term="R-project"/><title type='text'>Create Beamer/knitr Lecture Slideshow with Bash, Explain the Script with knitr</title><content type='html'>&lt;p&gt; Setting up a &lt;a href=&quot;http://en.wikipedia.org/wiki/Beamer_(LaTeX&quot;&gt;beamer slideshow&lt;/a&gt; is tedious. Creating new slideshows with the same header/footer/style files every week for your course lectures is very very tedious.&lt;/p&gt;

&lt;p&gt; To solve this problem I created a simple &lt;a href=&quot;http://en.wikipedia.org/wiki/Bash_(Unix_shell)&quot;&gt;bash shell&lt;/a&gt; script. When you run the script in your terminal it asks whether you want to create a &quot;Lecture&quot; or &quot;Seminar&quot; and what number you want it to have. Then it does the rest. &lt;/p&gt;

&lt;p&gt; You can find the script and all of the necessary files &lt;a href=&quot;https://github.com/christophergandrud/Make-Projects/tree/master/Rnw_Lecture&quot;&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt; To create the &lt;a href=&quot;https://github.com/christophergandrud/Make-Projects/blob/master/Rnw_Lecture/README.md&quot;&gt;README file&lt;/a&gt; I used &lt;a href=&quot;http://yihui.name/knitr/&quot;&gt;knitr&lt;/a&gt; version 0.8&#39;s new &lt;tt&gt;engine=&#39;bash&#39;&lt;/tt&gt; option. This allows you to knit bash code into your Markdown file the same what you would R code. It&#39;s pretty simple. See the &lt;a href=&quot;https://raw.github.com/christophergandrud/Make-Projects/master/Rnw_Lecture/README.Rmd&quot;&gt;R Markdown file&lt;/a&gt; for more details.&lt;/p&gt;

&lt;p/&gt;Please feel free to take and modify the files. Also, if you can help streamline them that would be great.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Oh&lt;/strong&gt; kind of related tip: If you want a bash command to show up over more than one line in your knitted document place a backslash (&lt;tt&gt;\&lt;/tt&gt;) at the end of the line.&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt; The beamer theme I use is based on something I hammered together awhile ago. See &lt;a href=&quot;http://christophergandrud.blogspot.kr/2011/12/unofficial-lse-latex-beamer-theme.html&quot;&gt;this post&lt;/a&gt; for more details.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://christophergandrud.blogspot.com/feeds/162818696553282605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36784551/162818696553282605' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/162818696553282605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36784551/posts/default/162818696553282605'/><link rel='alternate' type='text/html' href='http://christophergandrud.blogspot.com/2012/09/create-beamerknitr-lecture-slideshow.html' title='Create Beamer/knitr Lecture Slideshow with Bash, Explain the Script with knitr'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry></feed>