{"id":393,"date":"2020-03-29T14:34:33","date_gmt":"2020-03-29T18:34:33","guid":{"rendered":"http:\/\/blog.uvm.edu\/tbplante\/?p=393"},"modified":"2022-04-22T12:37:25","modified_gmt":"2022-04-22T16:37:25","slug":"use-stata-to-download-the-ny-times-covid-19-database-and-render-a-twitter-compatible-us-mortality-figure","status":"publish","type":"post","link":"https:\/\/blog.uvm.edu\/tbplante\/2020\/03\/29\/use-stata-to-download-the-ny-times-covid-19-database-and-render-a-twitter-compatible-us-mortality-figure\/","title":{"rendered":"Use Stata to download the NY Times COVID-19 database and render a Twitter-compatible US mortality figure"},"content":{"rendered":"\n<p><em>Note: this code probably doesn&#8217;t work anymore with changes in the NY Times database. I&#8217;m keeping it here for historical purposes (4\/22\/2022).<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Here&#8217;s the figure!<\/h2>\n\n\n\n<div class=\"wp-block-media-text alignwide is-stacked-on-mobile\" style=\"grid-template-columns:85% auto\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"602\" src=\"http:\/\/blog.uvm.edu\/tbplante\/files\/2020\/03\/COVID_mortality_2020_Mar_27_continuous-1024x602.png\" alt=\"\" class=\"wp-image-398 size-full\" srcset=\"https:\/\/blog.uvm.edu\/tbplante\/files\/2020\/03\/COVID_mortality_2020_Mar_27_continuous-1024x602.png 1024w, https:\/\/blog.uvm.edu\/tbplante\/files\/2020\/03\/COVID_mortality_2020_Mar_27_continuous-300x176.png 300w, https:\/\/blog.uvm.edu\/tbplante\/files\/2020\/03\/COVID_mortality_2020_Mar_27_continuous-768x452.png 768w, https:\/\/blog.uvm.edu\/tbplante\/files\/2020\/03\/COVID_mortality_2020_Mar_27_continuous.png 1100w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"has-large-font-size\"><\/p>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Code follows<\/h2>\n\n\n\n<p>Comments are in-line below. Some unique strategies in this code:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>This will automatically download the latest NY Times dataset, but the date of &#8220;last day of follow-up&#8221; needs to be specifically defined. I find that the label locations need to be tweaked every day, and this process isn&#8217;t simple to automate. <\/li><li>The colors are defined by global macros once and are applied multiple times by calling those macros.<\/li><li>Text blocks are rendered next to the last day of follow-up with a translucent white background and non-translucent colored border that matches the dotted line. <\/li><li>Twitter figures should be output at 1100 x 628, per <a href=\"https:\/\/www.bluecompass.com\/blog\/tested-results-the-best-twitter-image-size\">this blog<\/a>. This script does that. Twitter clips images that aren&#8217;t this size. <\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>****************************************************\n\/\/ step 1: download  and save NY times database\n****************************************************\nversion 15.1 \/\/ my version of Stata when this was written\n\nimport delimited using \/\/\/\n\"https:\/\/raw.githubusercontent.com\/nytimes\/covid-19-data\/master\/us-states.csv\", \/\/\/\nvarn(1) clear\n\n\/\/ Now make the date a stata date. Load this handy date-fixing program \n\/\/ I wrote. The syntax is 'fixdate &#091;variable name] &#091;mdy, ymd, etc]\ndo https:\/\/www.uvm.edu\/~tbplante\/fixdate_v1_0.do\nfixdate date ymd\n\/\/ rename state to state_fullname\nrename state state_fullname<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>****************************************************\n\/\/ step 2: keep 50 states+DC, apply abbreviations\n****************************************************\ngen state=\" \" \nreplace state=\"AL\" if state_fullname==\"Alabama\"\nreplace state=\"AK\" if state_fullname==\"Alaska\"\nreplace state=\"AZ\" if state_fullname==\"Arizona\"\nreplace state=\"AR\" if state_fullname==\"Arkansas\"\nreplace state=\"CA\" if state_fullname==\"California\"\nreplace state=\"CO\" if state_fullname==\"Colorado\"\nreplace state=\"CT\" if state_fullname==\"Connecticut\"\nreplace state=\"DE\" if state_fullname==\"Delaware\"\nreplace state=\"FL\" if state_fullname==\"Florida\"\nreplace state=\"GA\" if state_fullname==\"Georgia\"\nreplace state=\"HI\" if state_fullname==\"Hawaii\"\nreplace state=\"ID\" if state_fullname==\"Idaho\"\nreplace state=\"IL\" if state_fullname==\"Illinois\"\nreplace state=\"IN\" if state_fullname==\"Indiana\"\nreplace state=\"IA\" if state_fullname==\"Iowa\"\nreplace state=\"KS\" if state_fullname==\"Kansas\"\nreplace state=\"KY\" if state_fullname==\"Kentucky\"\nreplace state=\"LA\" if state_fullname==\"Louisiana\"\nreplace state=\"ME\" if state_fullname==\"Maine\"\nreplace state=\"MD\" if state_fullname==\"Maryland\"\nreplace state=\"MA\" if state_fullname==\"Massachusetts\"\nreplace state=\"MI\" if state_fullname==\"Michigan\"\nreplace state=\"MN\" if state_fullname==\"Minnesota\"\nreplace state=\"MS\" if state_fullname==\"Mississippi\"\nreplace state=\"MO\" if state_fullname==\"Missouri\"\nreplace state=\"MT\" if state_fullname==\"Montana\"\nreplace state=\"NE\" if state_fullname==\"Nebraska\"\nreplace state=\"NV\" if state_fullname==\"Nevada\"\nreplace state=\"NH\" if state_fullname==\"New Hampshire\"\nreplace state=\"NJ\" if state_fullname==\"New Jersey\"\nreplace state=\"NM\" if state_fullname==\"New Mexico\"\nreplace state=\"NY\" if state_fullname==\"New York\"\nreplace state=\"NC\" if state_fullname==\"North Carolina\"\nreplace state=\"ND\" if state_fullname==\"North Dakota\"\nreplace state=\"OH\" if state_fullname==\"Ohio\"\nreplace state=\"OK\" if state_fullname==\"Oklahoma\"\nreplace state=\"OR\" if state_fullname==\"Oregon\"\nreplace state=\"PA\" if state_fullname==\"Pennsylvania\"\nreplace state=\"RI\" if state_fullname==\"Rhode Island\"\nreplace state=\"SC\" if state_fullname==\"South Carolina\"\nreplace state=\"SD\" if state_fullname==\"South Dakota\"\nreplace state=\"TN\" if state_fullname==\"Tennessee\"\nreplace state=\"TX\" if state_fullname==\"Texas\"\nreplace state=\"UT\" if state_fullname==\"Utah\"\nreplace state=\"VT\" if state_fullname==\"Vermont\"\nreplace state=\"VA\" if state_fullname==\"Virginia\"\nreplace state=\"WA\" if state_fullname==\"Washington\"\nreplace state=\"WV\" if state_fullname==\"West Virginia\"\nreplace state=\"WI\" if state_fullname==\"Wisconsin\"\nreplace state=\"WY\" if state_fullname==\"Wyoming\"\n\nreplace state=\"DC\" if state_fullname==\"District of Columbia\"\n\ndrop if state==\" \" \/\/ drop guam, VI, PR. would be reasonable to add them back\n\/\/ would need to get their populations for the list below. \n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>****************************************************\n\/\/ step 3: apply population by state\n****************************************************\n\/\/ ref: \n\/\/ https:\/\/www.census.gov\/data\/tables\/time-series\/demo\/popest\/2010s-state-total.html\n\/\/ http:\/\/www2.census.gov\/programs-surveys\/popest\/datasets\/2010-2019\/national\/totals\/nst-est2019-alldata.csv?#\ngen statepop=.\nreplace statepop=4903185 if state==\"AL\"\nreplace statepop=731545 if state==\"AK\"\nreplace statepop=7278717 if state==\"AZ\"\nreplace statepop=3017804 if state==\"AR\"\nreplace statepop=39512223 if state==\"CA\"\nreplace statepop=5758736 if state==\"CO\"\nreplace statepop=3565287 if state==\"CT\"\nreplace statepop=973764 if state==\"DE\"\nreplace statepop=705749 if state==\"DC\"\nreplace statepop=21477737 if state==\"FL\"\nreplace statepop=10617423 if state==\"GA\"\nreplace statepop=1415872 if state==\"HI\"\nreplace statepop=1787065 if state==\"ID\"\nreplace statepop=12671821 if state==\"IL\"\nreplace statepop=6732219 if state==\"IN\"\nreplace statepop=3155070 if state==\"IA\"\nreplace statepop=2913314 if state==\"KS\"\nreplace statepop=4467673 if state==\"KY\"\nreplace statepop=4648794 if state==\"LA\"\nreplace statepop=1344212 if state==\"ME\"\nreplace statepop=6045680 if state==\"MD\"\nreplace statepop=6892503 if state==\"MA\"\nreplace statepop=9986857 if state==\"MI\"\nreplace statepop=5639632 if state==\"MN\"\nreplace statepop=2976149 if state==\"MS\"\nreplace statepop=6137428 if state==\"MO\"\nreplace statepop=1068778 if state==\"MT\"\nreplace statepop=1934408 if state==\"NE\"\nreplace statepop=3080156 if state==\"NV\"\nreplace statepop=1359711 if state==\"NH\"\nreplace statepop=8882190 if state==\"NJ\"\nreplace statepop=2096829 if state==\"NM\"\nreplace statepop=19453561 if state==\"NY\"\nreplace statepop=10488084 if state==\"NC\"\nreplace statepop=762062 if state==\"ND\"\nreplace statepop=11689100 if state==\"OH\"\nreplace statepop=3956971 if state==\"OK\"\nreplace statepop=4217737 if state==\"OR\"\nreplace statepop=12801989 if state==\"PA\"\nreplace statepop=1059361 if state==\"RI\"\nreplace statepop=5148714 if state==\"SC\"\nreplace statepop=884659 if state==\"SD\"\nreplace statepop=6829174 if state==\"TN\"\nreplace statepop=28995881 if state==\"TX\"\nreplace statepop=3205958 if state==\"UT\"\nreplace statepop=623989 if state==\"VT\"\nreplace statepop=8535519 if state==\"VA\"\nreplace statepop=7614893 if state==\"WA\"\nreplace statepop=1792147 if state==\"WV\"\nreplace statepop=5822434 if state==\"WI\"\nreplace statepop=578759 if state==\"WY\"\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\n****************************************************\n\/\/ step 4: make daily death count per capita\n****************************************************\n\/\/ now make variables for cases and deaths per capita in each state (per million persons)\ngen statepopave_deaths = (deaths\/statepop) *1000000\n\n****************************************************\n\/\/ step 5: make a variable for when the death rate is \n\/\/ &gt;=1\/1,000,000 people in each state, and count days\n\/\/ following that\n****************************************************\nsort state date\ngen days_1_death=.\nreplace days_1_death=0 if statepopave_deaths &lt; 1 \n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>replace days_1_death=1 if (statepopave_deaths &gt;= 1 &amp; statepopave_deaths&#091;_n-1] &lt;1 ) \/\/\/\n&amp; (state==state&#091;_n-1])\n\/\/\nreplace days_1_death = days_1_death&#091;_n-1]+1 if state==state&#091;_n-1] \/\/\/\n&amp; days_1_death&#091;_n-1]!=0\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>****************************************************\n\/\/ step 6: save database\n****************************************************\n\nsave nytimes_state_fu.dta, replace\n\n****************************************************\n\/\/ step 7: specify last day of follow-up and \n\/\/ get rank of states and location\n\/\/ to put state names in x,y location for the \n\/\/ last day of follow-up\n****************************************************\n\/\/ reload\nuse nytimes_state_fu.dta, clear\n\n\/\/ ****THIS NEEDS TO BE EDITED EVERY DAY.****\n\/\/ Set the final date of follow-up. \n\/\/ as of today (3\/29\/2020), 3\/27\/2020 is the most\n\/\/ recent day of data in the NY times database.\n\/\/ \n\/\/ This is intentionally not automated because I want to manually adjust\n\/\/ labels and range each time. \nglobal month Mar \/\/ needs to be in 3 letter abbreviation for month\nglobal date 27 \/\/ 2 number day in month\n\n\/\/ drop any day beyond the specified date\ndrop if date&gt;date(\"${date}${month}2020\", \"DMY\")\n\n\/\/ this global will make the x axis 1 day longer than the current follow-up\nsum days_1_death\nglobal maxdate = r(max)+1\n\n\/\/ actually determine the order of states on the last day of follow-up,\n\/\/ which is how the labels and colors are applied.\n\/\/ need to drop all but the last date of follow-up\nkeep if date==date(\"${date}${month}2020\", \"DMY\")\ngsort -statepopave_deaths \/\/ sort in reverse order\ngen n=_n \/\/ make variable that contains order based upon sort\ndrop if n &gt;10 \/\/ drop those not in the top 10\n\n\/\/ need to figure out where to put the labels of state names\n\/\/ this loop plucks out the state name and x&amp;y coordinates for the last\n\/\/ day of follow-up. \n\/\/ it also prints the order of the states. \nforeach x in 1 2 3 4 5 6 7 8 9 10 {\nglobal statename`x'=state&#091;`x'] \/\/ pull state name\nglobal datecount`x' = days_1_death&#091;`x'] + 0.2 \/\/ x axis, need to offset by 0.2 \n\/\/                                      so the label isn't on top of the dot\nglobal statedeath`x' = statepopave_deaths&#091;`x'] \/\/ yaxis\n\ndi \"State rank #`x': ${statename`x'}\"\ndi \"(x axis) # of days: ${datecount`x'}\" \ndi \"(y axis) deaths\/million: ${statedeath`x'}\"\ndi \" \"\n}\n\/\/\n\/\/ The labels might overlap each other. This you can manually readjust the \n\/\/ location on the y axis following here. This won't alter data in the \n\/\/ figure, just the location of the labels. \n\nglobal statedeath1 = ${statedeath1} \/\/ don't need to move label\nglobal statedeath2 = ${statedeath2} \/\/ don't need to move label \nglobal statedeath3 = ${statedeath3}  \/\/ don't need to move label\nglobal statedeath4 = ${statedeath4}  \/\/ don't need to move label\nglobal statedeath5 = ${statedeath5}  \/\/ don't need to move label\nglobal statedeath6 = ${statedeath6}  \/\/ don't need to move label\nglobal statedeath7 = ${statedeath7}  \/\/ don't need to move label\nglobal statedeath8 = ${statedeath8}+1.5 \/\/ move GA up on y axis\nglobal statedeath9 = ${statedeath8}-2 \/\/ move DC down on y axis\nglobal statedeath10 = ${statedeath10} \/\/ don't need to move label\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>****************************************************\n\/\/ step 8: specify colors, make figure, save figure\n\/\/ in size compatible with twitter\n****************************************************\n\n\/\/ reload the full dataset\nuse nytimes_state_fu.dta, replace\n\/\/ drop any day beyond the specified date. \ndrop if date&gt;date(\"${date}${month}2020\", \"DMY\")\n\n\/\/ I like the s1mono scheme. Default stata theme is ugly. \nset scheme s1mono\n\/\/ colors for these states, taken from colorbrewer website\n\/\/ ref: https:\/\/colorbrewer2.org\/#type=diverging&amp;scheme=RdYlBu&amp;n=10\n\/\/ these are RGB triads\nglobal color1 165 0 38\nglobal color2 215 48 39\nglobal color3 244 109 67\nglobal color4 253 174 97\nglobal color5 254 224 144\nglobal color6 224 243 248\nglobal color7 171 217 233\nglobal color8 116 173 209\nglobal color9 69 117 180\nglobal color10 49 54 149\n\n\/\/ the actual graphic!\n\/\/ note: you need to put 'sort' after the 'twoway scatter' command so the line doesn't loop back around. \ntwoway \/\/\/\n(scatter statepopave_deaths days_1_death if state==\"${statename1}\" &amp; days_1_death&gt;=1 &amp; date&gt;=1, \/\/\/\nmcolor(\"${color1}\") msymbol(O) lpattern(solid) lcolor(\"${color1}\") connect(L) sort) \/\/\/\n(scatter statepopave_deaths days_1_death if state==\"${statename2}\" &amp; days_1_death&gt;=1 &amp; date&gt;=1, \/\/\/\nmcolor(\"${color2}\") msymbol(O) lpattern(solid) lcolor(\"${color2}\") connect(L) sort) \/\/\/\n(scatter statepopave_deaths days_1_death if state==\"${statename3}\" &amp; days_1_death&gt;=1 &amp; date&gt;=1, \/\/\/\nmcolor(\"${color3}\") msymbol(O) lpattern(solid) lcolor(\"${color3}\") connect(L) sort) \/\/\/\n(scatter statepopave_deaths days_1_death if state==\"${statename4}\" &amp; days_1_death&gt;=1 &amp; date&gt;=1, \/\/\/\nmcolor(\"${color4}\") msymbol(O) lpattern(solid) lcolor(\"${color4}\") connect(L) sort) \/\/\/\n(scatter statepopave_deaths days_1_death if state==\"${statename5}\" &amp; days_1_death&gt;=1 &amp; date&gt;=1, \/\/\/\nmcolor(\"${color5}\") msymbol(O) lpattern(solid) lcolor(\"${color5}\") connect(L) sort) \/\/\/\n(scatter statepopave_deaths days_1_death if state==\"${statename6}\" &amp; days_1_death&gt;=1 &amp; date&gt;=1, \/\/\/\nmcolor(\"${color6}\") msymbol(O) lpattern(solid) lcolor(\"${color6}\") connect(L) sort) \/\/\/\n(scatter statepopave_deaths days_1_death if state==\"${statename7}\" &amp; days_1_death&gt;=1 &amp; date&gt;=1, \/\/\/\nmcolor(\"${color7}\") msymbol(O) lpattern(solid) lcolor(\"${color7}\") connect(L) sort) \/\/\/\n(scatter statepopave_deaths days_1_death if state==\"${statename8}\" &amp; days_1_death&gt;=1 &amp; date&gt;=1, \/\/\/\nmcolor(\"${color8}\") msymbol(O) lpattern(solid) lcolor(\"${color8}\") connect(L) sort) \/\/\/\n(scatter statepopave_deaths days_1_death if state==\"${statename9}\" &amp; days_1_death&gt;=1 &amp; date&gt;=1, \/\/\/\nmcolor(\"${color9}\") msymbol(O) lpattern(solid) lcolor(\"${color9}\") connect(L) sort) \/\/\/\n(scatter statepopave_deaths days_1_death if state==\"${statename10}\" &amp; days_1_death&gt;=1 &amp; date&gt;=1, \/\/\/\nmcolor(\"${color10}\") msymbol(O) lpattern(solid) lcolor(\"${color10}\") connect(L) sort) \/\/\/\n, \/\/\/\nyline(30, lcolor(gs14)) \/\/\/will need at add additional horizontal lines as figure grows\nyline(20, lcolor(gs14)) \/\/\/\nyline(10, lcolor(gs14)) \/\/\/\ntitle(\"COVID-19 Cumulative Mortality by US State\") \/\/\/\nt1title(\"Top 10 states, through $month $date, 2020\") \/\/\/\nxla(1(2)$maxdate) \/\/\/\nyla(0(5)40) \/\/\/\nyti(\"# COVID19 Deaths\/Million Persons\") \/\/\/\nxti(\"Day Since \u22651 Death\/Million Persons\") \/\/\/\nlegend(off) \/\/\/\n\/\/\/ the following will render each label with a surrounding box that's the same color as the line. \ntext(${statedeath1} ${datecount1} \"${statename1}\", \/\/\/\nsize(small) place(e) just(left) box bcolor(white%40) lcolor(\"${color1}%100\") lstyle(solid) lwidth(thin)) \/\/\/\ntext(${statedeath2} ${datecount2} \"${statename2}\", \/\/\/\nsize(small) place(e) just(left) box bcolor(white%40) lcolor(\"${color2}%100\") lstyle(solid) lwidth(thin)) \/\/\/\ntext(${statedeath3} ${datecount3} \"${statename3}\", \/\/\/\nsize(small) place(e) just(left) box bcolor(white%40) lcolor(\"${color3}%100\") lstyle(solid) lwidth(thin)) \/\/\/\ntext(${statedeath4} ${datecount4} \"${statename4}\", \/\/\/\nsize(small) place(e) just(left) box bcolor(white%40) lcolor(\"${color4}%100\") lstyle(solid) lwidth(thin)) \/\/\/\ntext(${statedeath5} ${datecount5} \"${statename5}\", \/\/\/\nsize(small) place(e) just(left) box bcolor(white%40) lcolor(\"${color5}%100\") lstyle(solid) lwidth(thin)) \/\/\/\ntext(${statedeath6} ${datecount6} \"${statename6}\", \/\/\/\nsize(small) place(e) just(left) box bcolor(white%40) lcolor(\"${color6}%100\") lstyle(solid) lwidth(thin)) \/\/\/\ntext(${statedeath7} ${datecount7} \"${statename7}\", \/\/\/\nsize(small) place(e) just(left) box bcolor(white%40) lcolor(\"${color7}%100\") lstyle(solid) lwidth(thin)) \/\/\/\ntext(${statedeath8} ${datecount8} \"${statename8}\", \/\/\/\nsize(small) place(e) just(left) box bcolor(white%40) lcolor(\"${color8}%100\") lstyle(solid) lwidth(thin)) \/\/\/\ntext(${statedeath9} ${datecount9} \"${statename9}\", \/\/\/\nsize(small) place(e) just(left) box bcolor(white%40) lcolor(\"${color9}%100\") lstyle(solid) lwidth(thin)) \/\/\/\ntext(${statedeath10} ${datecount10} \"${statename10}\", \/\/\/\nsize(small) place(e) just(left) box bcolor(white%40) lcolor(\"${color10}%100\") lstyle(solid) lwidth(thin)) \/\/\/\ncaption(\"Using NY Times COVID19 database\"  \/\/\/\n\"https:\/\/github.com\/nytimes\/covid-19-data\/blob\/master\/us-states.csv\",  \/\/\/\nsize(small)) \/\/\/\nxsize(15.3) ysize(9.0) \n\/\/ twitter default width &amp; height is 1100x628 pixels. \n\/\/This last line sets the corresponding height and width in inches using 72 dpi. \n\ngraph export \"COVID_mortality_2020_${month}_${date}_continuous.png\", replace width(1100) \n\/\/ width(1100) sets the output to be default width on twitter, or 1100 dpi. <\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Note: this code probably doesn&#8217;t work anymore with changes in the NY Times database. I&#8217;m keeping it here for historical purposes (4\/22\/2022). Here&#8217;s the figure! Code follows Comments are in-line below. Some unique strategies in this code: This will automatically download the latest NY Times dataset, but the date of &#8220;last day of follow-up&#8221; needs &hellip; <a href=\"https:\/\/blog.uvm.edu\/tbplante\/2020\/03\/29\/use-stata-to-download-the-ny-times-covid-19-database-and-render-a-twitter-compatible-us-mortality-figure\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Use Stata to download the NY Times COVID-19 database and render a Twitter-compatible US mortality figure<\/span><\/a><\/p>\n","protected":false},"author":4473,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[502558,477491],"tags":[520731,628305,502561,502556],"class_list":["post-393","post","type-post","status-publish","format-standard","hentry","category-epidemiology-and-biostatistics","category-stata-code","tag-coronavirus","tag-covid-19","tag-ny-times-database","tag-stata"],"_links":{"self":[{"href":"https:\/\/blog.uvm.edu\/tbplante\/wp-json\/wp\/v2\/posts\/393","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.uvm.edu\/tbplante\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.uvm.edu\/tbplante\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.uvm.edu\/tbplante\/wp-json\/wp\/v2\/users\/4473"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.uvm.edu\/tbplante\/wp-json\/wp\/v2\/comments?post=393"}],"version-history":[{"count":14,"href":"https:\/\/blog.uvm.edu\/tbplante\/wp-json\/wp\/v2\/posts\/393\/revisions"}],"predecessor-version":[{"id":1011,"href":"https:\/\/blog.uvm.edu\/tbplante\/wp-json\/wp\/v2\/posts\/393\/revisions\/1011"}],"wp:attachment":[{"href":"https:\/\/blog.uvm.edu\/tbplante\/wp-json\/wp\/v2\/media?parent=393"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.uvm.edu\/tbplante\/wp-json\/wp\/v2\/categories?post=393"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.uvm.edu\/tbplante\/wp-json\/wp\/v2\/tags?post=393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}