Programming the statistical procedures from SAS

determine means/correlation matrix and growth curve modelling from Mianalyze

Reply
Occasional Contributor
Posts: 5

determine means/correlation matrix and growth curve modelling from Mianalyze

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;



 

 

 

Ask a Question
Discussion stats
  • 0 replies
  • 146 views
  • 0 likes
  • 1 in conversation