{"id":2095,"date":"2012-02-07T02:39:02","date_gmt":"2012-02-07T07:39:02","guid":{"rendered":"http:\/\/www.thejuliagroup.com\/blog\/?p=2095"},"modified":"2012-02-07T02:45:13","modified_gmt":"2012-02-07T07:45:13","slug":"easiest-quintile-matching-ever","status":"publish","type":"post","link":"https:\/\/www.thejuliagroup.com\/blog\/easiest-quintile-matching-ever\/","title":{"rendered":"Easiest Quintile Matching Ever"},"content":{"rendered":"<p>Upfront confession &#8211; I completely copied the first part of this from a macro Paul Dickman wrote in 1999 because it did ALMOST exactly what I wanted. I tested it several times with different data and on different computers to see that it worked the way I expected. I actually found it on some random page but since they had retained the comments that showed the author, I tracked down Paul Dickman&#8217;s page with the enormous effort of typing a few words into Google and found <a href=\"http:\/\/www.pauldickman.com\/teaching\/sas\/quintiles.php\">the original source of this macro.<\/a><\/p>\n<p>I threw in an option to do a surveyfreq, a couple of positional parameters, and I was done. Life is good.<\/p>\n<p>A few days ago, <a href=\"http:\/\/www.thejuliagroup.com\/blog\/?p=2085\">I discussed one method of propensity scores<\/a>, which was to match on the exact score as closely as possible. I used a modification of Lori Parson&#8217;s 1-5 Greedy match macro to do that.<\/p>\n<p>Another way is to sort the scores into quintiles &#8211; the bottom 20% percentile, 20-40th percentile and so on. Then, you can control for quintile. The first thing I did was a logistic regression to create propensity scores, like so:<\/p>\n<p>&nbsp;<\/p>\n<p>PROC LOGISTIC DATA = indata DESCENDING ;<\/p>\n<p>CLASS var3 ;<\/p>\n<p>MODEL depend = var1 var2 var3 var4 var5 ;<\/p>\n<p>OUTPUT OUT = example PROB = propensity ;<\/p>\n<p>This first step creates an output data set that has all of the original data plus the propensity scores. Next, I call Paul Dickman&#8217;s macro, which I reproduced below.\u00a0 The last two parameters in the macro statement I added. These are positional parameters. That means they are optional and if you don&#8217;t specify them when you call the macro you get the exact same results as the original macro, which puts a new variable named whatever you specify for &#8220;quintvar&#8221; in your existing data set. That is the quintile score.<\/p>\n<p>The positional parameters, num and depend allow you to specify the number of matches you want. If you want 1 match from the larger population to each in your smaller group, then you would enter a 1. Depend is the name of your dependent variable. <em>This assumes that your smaller group is coded 0 and your larger group is coded 1.\u00a0 <\/em>For example, if dependent variable is lived, 0= no and 1 = yes.<\/p>\n<p>%macro quint(dsn,var,quintvar,num=, depend=);<\/p>\n<p>\/* calculate the cutpoints for the quintiles *\/<br \/>\nPROC UNIVARIATE NOPRINT DATA=&amp;dsn;<br \/>\nVAR &amp;var;<br \/>\nOUTPUT OUT=quintile PCTLPTS=20 40 60 80 PCTLPRE=pct;<br \/>\nRUN;<\/p>\n<p>\/* write the quintiles to macro variables *\/<br \/>\nDATA _NULL_;<br \/>\nSET quintile;<br \/>\nCALL SYMPUT(&#8216;q1&#8217;,pct20) ;<br \/>\nCALL SYMPUT(&#8216;q2&#8217;,pct40) ;<br \/>\nCALL SYMPUT(&#8216;q3&#8217;,pct60) ;<br \/>\nCALL SYMPUT(&#8216;q4&#8217;,pct80) ;<br \/>\nRUN;<\/p>\n<p>\/* create the new variable in the main dataset *\/<br \/>\nDATA &amp;dsn;<br \/>\nSET &amp;dsn;<br \/>\nIF &amp;var =.\u00a0 THEN &amp;quintvar = .;<br \/>\nELSE IF &amp;var LE &amp;q1\u00a0THEN &amp;quintvar=1;<br \/>\nELSE IF &amp;var LE &amp;q2\u00a0 THEN &amp;quintvar=2;<br \/>\nELSE IF &amp;var LE &amp;q3\u00a0THEN &amp;quintvar=3;<br \/>\nELSE IF&amp;var LE &amp;q4\u00a0THEN &amp;quintvar=4;<br \/>\nELSE\u00a0 &amp;quintvar=5;<br \/>\nRUN ;<\/p>\n<p>I added this part because I wanted to give the option to randomly select a specified number of subjects with which to match each subject, as well as to add the quintile value and keep the whole data set.<\/p>\n<p>The first statement checks to see if the positional parameter for number (&amp;num) was entered. If the length= 0 it was not entered and we just skip to the end. Note that the label, downhere, does NOT have colon after it in the first statement but it does when it is used as a label at the end.<br \/>\n%IF %LENGTH(&amp;num) = 0 %THEN %GOTO downhere ;<\/p>\n<p>\/* This outputs the two groups on the dependent variable, 0 and 1, to two different data sets *\/<\/p>\n<p>DATA small large ;<br \/>\nSET &amp;dsn ;<br \/>\nIF &amp;depend = 0 THEN OUTPUT small ;<br \/>\nELSE IF &amp;depend = 1\u00a0THEN OUTPUT large ;<\/p>\n<p>\/* The frequency distribution of quintile of the smaller group (0) is output to a dataset named samp_pct *\/<br \/>\nPROC FREQ DATA = small ;<br \/>\nTABLES &amp;quintvar \/ OUT = samp_pct\u00a0 ;<br \/>\nRUN ;<\/p>\n<p>\/* This creates a sample size per strata to match whatever was specified by the num positional parameter *\/<\/p>\n<p>\/* That variable needs to be named _NSIZE_ because this dataset will be the secondary data set to PROC SURVEYSELECT *\/<br \/>\nDATA samp_pct ;<br \/>\nSET samp_pct ;<br \/>\n_NSIZE_\u00a0 = &amp;num ;<br \/>\n_NSIZE_ =\u00a0\u00a0 _NSIZE_ * COUNT\u00a0 ;<br \/>\nDROP PERCENT ;<\/p>\n<p>\/* Sort by strata is required for PROC SURVEYSELECT *\/<br \/>\nPROC SORT\u00a0 = large ;<br \/>\nBY &amp;quintvar ;<\/p>\n<p>\/* This will select the number per strata to match the smaller sample *\/<br \/>\nPROC SURVEYSELECT\u00a0 DATA= large SAMPSIZE = samp_pct OUT = largesamp ;<br \/>\nSTRATA &amp;quintvar ;<br \/>\nRUN ;<\/p>\n<p>\/* Notice there needs to be a period there to separate the &amp;dsn macro variable from the _SAMPLE appended to the new data set name *\/<br \/>\nDATA &amp;dsn._SAMPLE ;<br \/>\nSET largesamp small ;<br \/>\nRUN ;<\/p>\n<p>\/* This is\u00a0 a label so there is really supposed to be a colon there, not a semi-colon *\/<br \/>\n%downhere:<br \/>\nRUN ;<br \/>\n%MEND quint;<br \/>\nRUN ;<br \/>\nHow to use this &#8230;.<\/p>\n<p>&nbsp;<\/p>\n<p>Either<\/p>\n<p>%quint(mydata.project, prob,quint,num=1, depend= lived) ;<\/p>\n<p>OR<\/p>\n<p>%quint(mydata.project, prob,quint) ;<\/p>\n<p>&nbsp;<\/p>\n<p>\/**********************************************************<br \/>\n* Macro for grouping continuous variable into quintiles.\u00a0 *<br \/>\n* The macro REQUIRES three input variables:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n* dsn: data set name\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n* var: variable to be categorised\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n* quintvar: name of the new variable to be created\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n*\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 *<br \/>\n* If only these are specified a quintiles variable\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0 *<br \/>\n* specified in quintvar will be added to the dataset, dsn *<br \/>\n*\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n* Two OPTIONAL (positional) parameters are\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n*\u00a0 num: number of matches.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n*\u00a0 depend: dependent variable\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n**** The LARGER group has the dependent variable coded 1\u00a0 *\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n*\u00a0\u00a0\u00a0 The SMALLER group has the dependent coded 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n*\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n*\u00a0 Example usage 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0 *<br \/>\n*\u00a0 %quint(mydata.project, prob,quint,num=1, depend =lived) ;\u00a0\u00a0\u00a0\u00a0 *<br \/>\n*\u00a0 will output a dataset mydata.project_SAMPLE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n*\u00a0 with one subject with a value of 1 on LIVED\u00a0 matched to *<br \/>\n*\u00a0 each person with a value of 0 on LIVED \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n*\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0 *<br \/>\n*\u00a0 Sample usage 2:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n* %quint(mydata.project,prob,quint );\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0\u00a0 *<br \/>\n*\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n* After running the macro, the dataset mydata.project\u00a0\u00a0\u00a0\u00a0 *<br \/>\n* will contain a new variable called quint with values\u00a0\u00a0\u00a0 *<br \/>\n* . (missing), 1, 2, 3, 4, and 5.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n*\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n* The cutpoints for the quintiles are calculated based\u00a0\u00a0\u00a0 *<br \/>\n* on all non-missing values of the variable in question.\u00a0 *<br \/>\n*\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n* To base the cutpoints for the quintiles on, for example,*<br \/>\n* controls only, the code can be changed as follows:\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n* proc univariate noprint data=&amp;dsn.(where=(control=1));\u00a0 *<br \/>\n*\u00a0\u00a0 Modification of 1999\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n*\u00a0 Macro by Paul Dickman\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n* AnnMaria De Mars 2012\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n**********************************************************\/<\/p>\n<p>First person to comment with ANOTHER use of colons in SAS (other than labels and not counting body parts), I&#8217;ll send you a Julia Group flashlight pen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Upfront confession &#8211; I completely copied the first part of this from a macro Paul Dickman wrote in 1999 because it did ALMOST exactly what I wanted. I tested it several times with different data and on different computers to see that it worked the way I expected. I actually found it on some random&#8230;<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[9,11],"tags":[],"class_list":["post-2095","post","type-post","status-publish","format-standard","hentry","category-software","category-statistics"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.thejuliagroup.com\/blog\/wp-json\/wp\/v2\/posts\/2095","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.thejuliagroup.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.thejuliagroup.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.thejuliagroup.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.thejuliagroup.com\/blog\/wp-json\/wp\/v2\/comments?post=2095"}],"version-history":[{"count":3,"href":"https:\/\/www.thejuliagroup.com\/blog\/wp-json\/wp\/v2\/posts\/2095\/revisions"}],"predecessor-version":[{"id":2097,"href":"https:\/\/www.thejuliagroup.com\/blog\/wp-json\/wp\/v2\/posts\/2095\/revisions\/2097"}],"wp:attachment":[{"href":"https:\/\/www.thejuliagroup.com\/blog\/wp-json\/wp\/v2\/media?parent=2095"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.thejuliagroup.com\/blog\/wp-json\/wp\/v2\/categories?post=2095"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.thejuliagroup.com\/blog\/wp-json\/wp\/v2\/tags?post=2095"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}