【问题标题】:How to create publication quality growth curve figures (SAS or SPSS)如何创建出版质量增长曲线图(SAS 或 SPSS)
【发布时间】:2022-01-17 04:05:29
【问题描述】:

我正在使用 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 以及两者的输出。谢谢

【问题讨论】:

  • 您从 PROC PLM 或 MIXED 捕获数据,然后使用 SGPLOT 完全根据需要设计图形。 SGPLOT 有很多选项可以让您的图形出版物做好准备。
  • 如何从输出中获取数据:blogs.sas.com/content/sastraining/2017/03/31/…

标签: plot graph sas data-visualization figure


【解决方案1】:

根据回复 cmets 结合其他研究,我找到了答案。步骤包括:

  • 在 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 文档。

【讨论】:

    猜你喜欢
    • 2018-05-18
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    相关资源
    最近更新 更多