BookmarkSubscribeRSS Feed
cpolihronis
Fluorite | Level 6

Hi All,

 

I am working with a longitudinal dataset, and am having trouble with proc mianalyze. I would like to impute the data (I have both continuous and ordinal data). My DV's are skewed so I used a log transformation. I would like to:

 

1) get the overall imputed means of PV1-PV4, RV1-RV4. I am having trouble with MIANALYZE and obtaining the proper Standard deviations.

 

2) get an overall imputed correlation matrix (RSafe1-RSafe4 RV1 RV2 RV3 RV4 PV1 PV2 PV3 PV4 cgrade_2 t1age t2age t3age t4age Teach1-Teach4 Par1-Par4 Ord1-Ord4 Fair1-Fair4 Shar1-Shar4 Stu1-Stu4). I am only able to get a correlation coefficient of one estimate.

 

3) build a growth curve model using SAS PROC mixed. I'm able to use the array statement to flip the data to long format after imputation, but not too sure how to get/use parameter estimates and covariance estimates in proc MIANALYZE. How would I test a series of models after imputation? (i.e. testing a linear model with the variable t4s, then entering the variable "girls" at level 2, etc)

Any help would be appreociated.

 

1) *Imputation code Impute n = 5 datasets with log transformed victimization;
PROC MI DATA=add OUT=log NIMPUTE=5 SEED=33;
transform log (RV1-RV4 PV1-PV4);
CLASS cgrade_2 girls group_2 RSafe1 RSafe2 RSafe3 RSafe4;
FCS logistic (girls = PV1 RV1 PV2 RV2 PV3 RV3 PV4 RV4 cgrade_2);
FCS logistic(RSafe1= PV1 RV1 cgrade_2 girls/classeffects=include);
FCS logistic(RSafe2= PV1 RV1 PV2 RV2 cgrade_2 girls/classeffects=include);
FCS logistic(RSafe3= PV1 RV1 PV2 RV2 PV3 RV3 cgrade_2 girls/classeffects=include);
FCS logistic(RSafe4= PV1 RV1 PV2 RV2 PV3 RV3 PV4 RV4 cgrade_2 girls /classeffects=include);
VAR girls group_2 RSafe1-RSafe4 RV1 RV2 RV3 RV4 PV1 PV2 PV3 PV4 cgrade_2 t1age t2age t3age t4age Teach1-Teach4 Par1-Par4 Ord1-Ord4 Fair1-Fair4 Shar1-Shar4 Stu1-Stu4;
RUN;


proc sort data=log;
by _imputation_ cgrade_2 id;
run;

 

1) Obtaining means/sd from imputation;

Step 1: obtaining the means and standard deviations for victimization;

 

proc univariate data=log noprint;
var PV1-PV4 RV1-RV4;
output out=outuni mean=PV1-PV4 RV1-RV4;
stderr=PV1 PV2 PV3 PV4 RV1 RV2 RV3 RV4; *I think this step is wrong, as they are similar to the parameters;
by _Imputation_;
run;

 

*Step 2 combine 5 datasets edf is 886 since we have that many observations?;
proc mianalyze data=outuni edf=886;
modeleffects PV1 PV2 PV3 PV4 RV1 RV2 RV3 RV4;

stderr PV1 PV2 PV3 PV4 RV1 RV2 RV3 RV4; *I think this step is wrong, as they are similar to the parameters;
run;

 

2) Correlation matrix after imputation. Is there a way to get estimates for the whole matrix?;
*correlation steps for RV and PV at T1;

proc corr data=log fisher(biasadj=no);
var PV1 RV1;
by _Imputation_;
ods output FisherPearsonCorr= outz;
run;

proc print data=outz;
title 'Fisher''s Correlation Statistics';
var _Imputation_ ZVal;
run;

data outz;
set outz;
StdZ= 1. / sqrt(NObs-3);
run;

 

proc mianalyze data=outz;
modeleffects ZVal;
stderr StdZ;
run;

 

3. Model building using SAS PROC mixed. Does the model need to be finalized to get the parameter estimates and covariance matrix?;

 

*Transpose the data to long format by imputations. This is okay!;
data flip;
set log;
array pvic {4} PV1 PV2 PV3 PV4;
array rvic {4} RV1 RV2 RV3 RV4;
array center4 {4} c41 c51 c42 c52;
array Safety {4} Rsafe1 RSafe2 RSafe3 RSafe4;
Array age1 {4} t1age t2age t3age t4age;
Array Parent {4} Par1 Par2 Par3 Par4;
Array Student {4} Stu1 Stu2 Stu3 Stu4;
Array Order {4} Ord1 Ord2 Ord3 Ord4;
Array Fairn {4} Fair1 Fair2 Fair3 Fair4;
Array Teache {4} Teach1 Teach2 Teach3 Teach4;
Array Sharin {4} Shar1 Shar2 Shar3 Shar4;
do t=1 to 4;
PV = pvic[t];
RV = rvic[t];
T4s = center4[t];
safe = safety[t];
age = age1[t];
par = parent[t];
stu = student[t];
ord = order[t];
fair = fairn[t];
teach=teache[t];
shar=sharin[t];
output;
end;
drop TPV_1-TPV_4 TRV_1-TRV_4 c41 c42 c43 c44 c45 c51 c52 c53 c54 c55;
run;

*Verified: print for 30 observations. This is okay!;
proc print data=flip (obs = 30);
title ’Dataset after imputation’;
var _imputation_ id PV RV T4s safe age par stu ord fair teach shar;
run;


*Verified: *getting estimates for a linear model for RV? Do all predictors need to be included?;
proc mixed data=flip method = ml asycov covtest;
class ID;
model RV = T4s/ solution ddfm=bw;
random intercept T4s/sub=id type=un;
ods output solutionf = solution covb = covb covparms = covparms asycov = asycov;
by _imputation_;
run;



 

 

 

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

What is ANOVA?

ANOVA, or Analysis Of Variance, is used to compare the averages or means of two or more populations to better understand how they differ. Watch this tutorial for more.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 0 replies
  • 1214 views
  • 0 likes
  • 1 in conversation