如何创建出版物质量增长曲线图(SAS 或 SPSS)
How to create publication quality growth curve figures (SAS or SPSS)
我正在使用 SAS 和 SPSS 进行增长曲线分析,我想创建出版物质量增长曲线。下面是我的一个交互模型和对应的拟合模型图的 SAS 代码示例:
proc mixed data=long noclprint covtest method=REML;
class PID Intervention;
model A_Score= Time Time*Time Intervention Intervention*Time Intervention*Time*Time / solution;
random intercept Time Time*Time / sub=PID type=un gcorr;
store out=MixedModel_A;
run;
ods html style=Statistical;
proc plm restore=MixedModel_A noclprint;
effectplot fit(x=Time plotby=Intervention);
effectplot slicefit(x=Time sliceby=Intervention);
effectplot slicefit(x=Time sliceby=Intervention) / clm;
run;
我看过很多提供增长曲线图的期刊文章,我很清楚其中许多使用 SAS 的人在创建这些数字时所做的事情与我不同,而不仅仅是选择不同的ODS HTML 输出样式。也就是说,他们的图形格式看起来与我能够让 SAS 生成的格式不同。例如,本文呈现的生长曲线在绘图区没有网格线,它们在数据收集时间点的生长曲线上有数据点标记:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3042028/
有谁知道我是否可以做一些不同的事情来更接近于制作出版质量的数字?我知道需要一定程度的手动格式化和编辑,但如果很容易让软件生成更适合出版的图形,我想知道如何操作。我可以轻松地使用 SAS 或 SPSS,以及 Excel 和输出(如果相关)。谢谢
根据回复评论结合额外的研究,我找到了答案。步骤包括:
- 运行 SAS 中的混合模型与 STORE= 子命令
- 运行 PROC PLM 使用存储的模型结果并通过 ODS OUTPUT 命令存储输出
- 根据需要格式化 PROC PLM 输出数据集
- 运行 PROC PLM 输出数据集上的 PROC SGPLOT
示例代码如下:
*****Mixed model, storing output as dataset;
proc mixed data=long noclprint covtest method=REML;
class PID Condition;
model SA_Score= Time Time*Time Condition Condition*Time Condition*Time*Time / solution;
random intercept Time Time*Time / sub=PID type=un gcorr;
store out=MixedModel_SA;
run;
*****Turn on ODS output to create dataset from results output object (output object name from SAS system=SliceFitPlot);
ods output SliceFitPlot=Plot_SA;
*****Run proc plm to create single panel graph with two series (interaction chart);
proc plm restore=MixedModel_SA noclprint;
effectplot slicefit(x=Time sliceby=Condition);
run;
*****Close output dataset creation command;
ods output close;
*****Basic formatting on dataset for use with SGPLOT;
data Plot_SA1;
set Plot_SA;
*Program time as 1-5;
Time=_XCONT1+1;
*Separate out the two different series for use in interaction graph (Tx vs TAU);
if _INDEX=1 then SA_TAU=_PREDICTED;
if _INDEX=2 then SA_Tx=_PREDICTED;
run;
*****Create plot;
proc sgplot data=Plot_SA1;
TITLE 'SA Score Growth Curve Model by Intervention Group';
*LINES;
SERIES X=Time Y=SA_Tx / LEGENDLABEL = 'Treatment Group'
/*MARKERS*/ LINEATTRS = (THICKNESS=2 COLOR=CX0000CF PATTERN=Solid); *med dark blue;
SERIES X=Time Y=SA_TAU / LEGENDLABEL = 'Control Group'
/*MARKERS*/ LINEATTRS = (THICKNESS=2 COLOR=CXCF0000 PATTERN=LongDash); *med dark red;
XAXIS LABEL = 'Time'
MIN = 1
MAX = 5;
YAXIS LABEL = 'SA Score'
GRID VALUES = (0 to 2 by .2) ;
KEYLEGEND / LOCATION=INSIDE POSITION=TopRight ACROSS=1;
run;
实际上,我需要进行额外的格式化才能准备好图形发布,为此可以在线获得大量 SGPLOT 文档。
我正在使用 SAS 和 SPSS 进行增长曲线分析,我想创建出版物质量增长曲线。下面是我的一个交互模型和对应的拟合模型图的 SAS 代码示例:
proc mixed data=long noclprint covtest method=REML;
class PID Intervention;
model A_Score= Time Time*Time Intervention Intervention*Time Intervention*Time*Time / solution;
random intercept Time Time*Time / sub=PID type=un gcorr;
store out=MixedModel_A;
run;
ods html style=Statistical;
proc plm restore=MixedModel_A noclprint;
effectplot fit(x=Time plotby=Intervention);
effectplot slicefit(x=Time sliceby=Intervention);
effectplot slicefit(x=Time sliceby=Intervention) / clm;
run;
我看过很多提供增长曲线图的期刊文章,我很清楚其中许多使用 SAS 的人在创建这些数字时所做的事情与我不同,而不仅仅是选择不同的ODS HTML 输出样式。也就是说,他们的图形格式看起来与我能够让 SAS 生成的格式不同。例如,本文呈现的生长曲线在绘图区没有网格线,它们在数据收集时间点的生长曲线上有数据点标记:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3042028/
有谁知道我是否可以做一些不同的事情来更接近于制作出版质量的数字?我知道需要一定程度的手动格式化和编辑,但如果很容易让软件生成更适合出版的图形,我想知道如何操作。我可以轻松地使用 SAS 或 SPSS,以及 Excel 和输出(如果相关)。谢谢
根据回复评论结合额外的研究,我找到了答案。步骤包括:
- 运行 SAS 中的混合模型与 STORE= 子命令
- 运行 PROC PLM 使用存储的模型结果并通过 ODS OUTPUT 命令存储输出
- 根据需要格式化 PROC PLM 输出数据集
- 运行 PROC PLM 输出数据集上的 PROC SGPLOT
示例代码如下:
*****Mixed model, storing output as dataset;
proc mixed data=long noclprint covtest method=REML;
class PID Condition;
model SA_Score= Time Time*Time Condition Condition*Time Condition*Time*Time / solution;
random intercept Time Time*Time / sub=PID type=un gcorr;
store out=MixedModel_SA;
run;
*****Turn on ODS output to create dataset from results output object (output object name from SAS system=SliceFitPlot);
ods output SliceFitPlot=Plot_SA;
*****Run proc plm to create single panel graph with two series (interaction chart);
proc plm restore=MixedModel_SA noclprint;
effectplot slicefit(x=Time sliceby=Condition);
run;
*****Close output dataset creation command;
ods output close;
*****Basic formatting on dataset for use with SGPLOT;
data Plot_SA1;
set Plot_SA;
*Program time as 1-5;
Time=_XCONT1+1;
*Separate out the two different series for use in interaction graph (Tx vs TAU);
if _INDEX=1 then SA_TAU=_PREDICTED;
if _INDEX=2 then SA_Tx=_PREDICTED;
run;
*****Create plot;
proc sgplot data=Plot_SA1;
TITLE 'SA Score Growth Curve Model by Intervention Group';
*LINES;
SERIES X=Time Y=SA_Tx / LEGENDLABEL = 'Treatment Group'
/*MARKERS*/ LINEATTRS = (THICKNESS=2 COLOR=CX0000CF PATTERN=Solid); *med dark blue;
SERIES X=Time Y=SA_TAU / LEGENDLABEL = 'Control Group'
/*MARKERS*/ LINEATTRS = (THICKNESS=2 COLOR=CXCF0000 PATTERN=LongDash); *med dark red;
XAXIS LABEL = 'Time'
MIN = 1
MAX = 5;
YAXIS LABEL = 'SA Score'
GRID VALUES = (0 to 2 by .2) ;
KEYLEGEND / LOCATION=INSIDE POSITION=TopRight ACROSS=1;
run;
实际上,我需要进行额外的格式化才能准备好图形发布,为此可以在线获得大量 SGPLOT 文档。