Recently in the SAS Community Library: SAS' @BethEbersole reveals 4 steps to stop money laundering, solve law-enforcement cases, find missing children and more with SAS Visual Investigator.
I am currently analyzing the impact of an intervention on medication numbers using difference-in-difference analysis, but I have encountered several challenges. Following the SAS support instructions, I conducted the difference-in-difference analysis. However, I noticed a discrepancy between my results and SAS's example (Usage Note 61830: Estimating the difference in differences of means). In the example, the value of 'Mean Estimate' in 'Contrast Estimate Results' is identical to the 'Estimate' in 'Least Squares Means Estimate'. However, in my case, these values were different. I suspect this could be due to my use of the negative binomial distribution with a log link, resulting in exponential values. Consequently, I am unsure whether to rely on the 'Mean Estimate' in 'Contrast Estimate Results' or the 'Estimate' in 'Least Squares Means Estimate', and how to interpret the results." Contrast Estimate Results Label Mean Estimate Mean Confidence Limits L'Beta Estimate Standard Error diff in diff 1.51 1.49 0.41 0.0051 a*b Least Squares Means a b Estimate Standard Error z value Pr > |z| 1 1 0.77 0.00434 178.19 <.0001 1 0 0.03 0.00508 6.5 <.0001 0 1 0.72 0.00408 177.71 <.0001 0 0 0.40 0.00426 93.11 <.0001 Least Squares Means Estimate Effect Label Estimation Standard Error z value Pr > |z| time*hospitalize diff in diff 0.41 0.00509 81.01 <.0001
... View more
I trying to create a stacked bar chart comparing MA and TM groups on 8 different binary variables (I've only shown 2 here for simplicity) and 1 discrete (0-8) continuous variable. I've created a chart for the continuous variable, and it's pretty close to what I need. Here's what I need to change:
1) The bars are the same color, so it's not clear which group is higher/lower.
2) I'd like to add the name of the group that goes to each color.
3) I need to replace the variable name total_qual_care_score with a label such as "Total Quality of Care Score".
For the binary variables, I'd like to have both in a single chart. I haven't been able to create an example chart, but imagine that only the 0 and 1 bars exist. And instead of 0 and 1, the columns represent ACC_HCTROUBL_r and ACC_HCDELAY_r (with the labels "Trouble getting care" and "Delay in getting care", respectively).
Here's my current code with sample data:
data have;
infile datalines dsd dlm=',' truncover;
input Obs cohort_flag MA_non_ADRD_group TM_non_ADRD_group total_qual_care_score ACC_HCTROUBL_r ACC_HCDELAY_r;
datalines;
1,1,1,0,7,1,0
2,1,0,1,7,0,1
3,1,0,1,7,1,0
4,1,0,0,1,0,1
5,1,0,0,8,0,1
6,1,0,1,7,0,1
7,1,0,1,3,1,0
8,1,0,1,7,0,1
9,1,0,1,8,1,0
10,1,1,0,5,0,1
11,1,1,0,8,0,0
12,1,0,1,8,1,1
13,1,1,0,8,0,1
14,0,,,7,0,1
15,1,0,1,8,0,1
16,1,0,1,8,0,0
17,1,1,0,8,0,1
18,1,0,0,7,0,0
19,1,1,0,8,1,0
20,1,0,1,6,0,1
21,1,0,1,7,1,1
22,1,1,0,7,0,0
23,1,0,1,5,1,0
24,1,0,1,8,0,1
25,1,0,1,8,0,1
; RUN;
title1 "Section 1.2 -- Fig1 Unadj rates quality care TM vs MA without ADRD";
title2 "Version &version.";
PROC MEANS data=have mean n lclm uclm stackods;
class total_qual_care_score;
var TM_non_ADRD_group MA_non_ADRD_group;
ods output summary=temp.TM_MA_groupMean;
WHERE cohort_flag = 1 AND (TM_non_ADRD_group = 1 OR MA_non_ADRD_group = 1);
RUN;
PROC SGPLOT data=temp.TM_MA_groupMean;
vbarparm category=/*variable*/ total_qual_care_score response=mean /
limitlower=lclm
limitupper=uclm;
label mean="Proportion satisfied";
RUN;
... View more
I need to define column width to standardize the look of the report. However, when I set the column width it automatically expands the row height for each cell. I tried setting the cellheight in various places in the code but I can't seem to constrain it. How is this done?
Here's an example using the sashelp.cars dataset that gives me the same results.
ODS results off;
ODS listing close;
ODS TAGSETS.EXCELXP
file="C:\test.xml"
STYLE=Printer
OPTIONS (
Sheet_Name = "NEW"
Orientation = 'landscape'
FitToPage = 'no'
Pages_FitWidth = '1'
Pages_FitHeight = '100'
embedded_titles = 'yes'
);
PROC REPORT DATA=sashelp.cars
style(header)=[fontfamily=helvetica fontsize=8pt textalign=l]
style(column)=[fontfamily=helvetica fontsize=8pt textalign=l TAGATTR='format:text'];
columns make model type origin msrp drivetrain horsepower mpg;
DEFINE make / STYLE(column)={width=2cm};
DEFINE model / STYLE(column)={width=2cm};
DEFINE type / STYLE(column)={width=2cm};
DEFINE origin / STYLE(column)={width=2cm};
DEFINE msrp / STYLE(column)={width=15cm};
DEFINE drivetrain / STYLE(column)={width=2cm};
DEFINE horsepower / STYLE(column)={width=2.5cm};
DEFINE mpg / STYLE(column)={width=2cm};
RUN;
ods tagsets.excelxp close;
... View more
Hello everyone, I have survey data of approximately 5000 participants and I am currently looking to model the outcome of a dichotomized response variable to a predictor. Our question is if there is a trend of participants being more likely to be in the 1 level of the response variable as we move from 4 to 1 in the ordinal response predictor. The dichotomized response has levels 1 and 0 while the predictor is an ordinal survey response with levels 1 - "Yes - completely", 2 - "Yes - mostly", 3 - "Yes - somewhat", and 4 - "No". I am currently wondering how to structure my proc logistic code and also weighing the use of proc logistic vs. proc surveylogistic. I do not have survey weights, so it seems that proc surveylogistic would not be useful in comparison to proc logisitic. Here is my code so far: proc logistic data = import plots=all;
class outcome q1 / param=ordinal;
model outcome = q1;
run; I chose ordinal for the param= statement however I am not sure about that, though changing the param= option does not change the model fit statistics. I will continue to read documentation about proc logistic to see what other options might suit, but if there are any suggestions please let me know. Thank you!
... View more