我有一些数据,其中两个不同的患者组自动从诊断工具中导出。
变量由诊断工具自动提名(例如L1DensityWholeImage, L1WholeImageSHemi, L1WholeImageIHemi , L1WholeETDRS ,[...], DeepL2StartLayer, L2Startoffsetum, L2EndLayer, [...], Perimeter, AcircularityIndex
)
我必须按组执行所有变量(> 80)的秩和检验(或Mann-Whitney U 检验)。
通常,我应该像这样编写每个单独的分析:
ranksum L1DensityWholeImage, by(Group)
ranksum L1WholeImageSHemi, by(Group)
ranksum L1WholeImageIHemi, by(Group)
ranksum L1WholeETDRS, by(Group)
是否有任何方法或代码用 varlist 编写命令?并且可能仅获得具有所有p值的1个输出结果?
例如:ranksum L1DensityWholeImage L1WholeImageSHemi L1WholeImageIHemi L1WholeETDRS, DeepL2StartLayer L2Startoffsetum L2EndLayer Perimeter AcircularityIndex, by(Group)
答案 0 :(得分:1)
简短的回答是写一个循环并自定义输出。
以下是您可以运行的令牌示例。
sysuse auto, clear
foreach v of var mpg price weight length displacement {
quietly ranksum `v', by(foreign) porder
scalar pval = 2*normprob(-abs(r(z)))
di "`v'{col 14}" %05.3f pval " " %6.4e pval " " %05.3f r(porder)
}
输出
mpg 0.002 1.9e-03 0.271
price 0.298 3.0e-01 0.423
weight 0.000 3.8e-07 0.875
length 0.000 9.4e-07 0.862
displacement 0.000 1.1e-08 0.921
注意:
如果您的变量名称较长,则需要更多空间。
显示带有固定小数位数的 P - 值将无法满足所有显示的数字为零的情况。该代码举例说明了两种输出形式。
第一组的值超过第二组的概率非常有助于解释。可以添加进一步的摘要统计。
当然,一个可呈现的表需要更多的标题行,最好用display
给出。