Stata 斯塔塔自行车俱乐部

Stata 斯塔塔自行车俱乐部,stata,Stata,我有一些从诊断工具自动导出的两组不同患者的数据 变量由诊断工具自动指定(例如,l1densititywholeimage、L1WholeImageSHemi、l1wholeimagehemi、L1WholeETDRS、[…]、DeepL2StartLayer、L2Startoffsetum、L2EndLayer、[…]、周长、曲率指数) 我必须按组对所有变量(>80)进行秩和检验(或Mann-Whitney U检验) 通常,我应该这样写每个分析: ranksum L1DensityWholeIm

我有一些从诊断工具自动导出的两组不同患者的数据

变量由诊断工具自动指定(例如,
l1densititywholeimage、L1WholeImageSHemi、l1wholeimagehemi、L1WholeETDRS、[…]、DeepL2StartLayer、L2Startoffsetum、L2EndLayer、[…]、周长、曲率指数

我必须按组对所有变量(>80)进行秩和检验(或Mann-Whitney U检验)

通常,我应该这样写每个分析:

ranksum L1DensityWholeImageby(集团)

ranksum L1WholeImageSHemi,由(集团)

ranksum L1wholeimagehemi,由(集团)

ranksum L1WholeETDRS,按(集团)

是否有任何方法或代码可以使用varlist编写命令?可能只得到一个输出结果和所有的p值


e、 g.:
ranksum L1 DensityWholeImageL1WholeImageShemi L1WholeImageHemi L1WholeETDRS,DeepL2StartLayer L2Startoffsetum L2EndLayer周长循环指数,由(组)

一个简短的答案是编写一个循环并定制输出

下面是一个您可以运行的令牌示例

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


  • 谢谢你的回复!太完美了!请注意,在较新版本的Stata(7+)中,
    normprob()
    已替换为
    normal()
    normprob()
    仍适用于Stata 15。你指的只是一个修饰性的更名,让名字更加一致。你好,尼克·考克斯!谢谢你的帮助。我正试图修改你的代码,但我有一些问题。我已经设置了varlist和group变量。我还更改了“col”选项以适合我的varname。我想增加每组的观察次数(r(n1)-r(n2)),并在结果列表上加上一些“标题”(例如P值、PValue2、Porder-Observ.group1-Observ.group2)。我正在研究“显示”功能,但我想不出一个解决方案…你能帮我吗?谢谢你好,尼克·考克斯!谢谢您的帮助。@Giuseped'AmicoRicci请提出一个新问题,交叉引用此问题,或在此处编辑此问题,添加新材料,保留原始问题不变。请注意,
    display
    是一个命令,而不是一个函数。