我正在尝试在previous question中修改@Nick Cox发布的代码,但我遇到了一些问题。
我已设置varlist
和我的群组变量。我还更改了col
选项以适合我的varname
。我想为每个小组r(N 1)
/ r(N 2)
添加观察次数,并在结果列表中添加一些“标题”。
我正在尝试研究display
命令,但我找不到解决方案。
我的代码如下:
foreach v of var BVCAlogMAR AvgSSI L1DensityWholeImage {
quietly ranksum `v', by(G6PDcarente) porder
scalar pval = 2*normprob(-abs(r(z)))
di "`v'{col 34}" %05.3f pval " " %6.4e pval " " %05.3f r(porder) ///
" " %05.3f r(N 1) " " %05.3f r(N 2)
}
我无法在结果列表中输入r(N 1)
和r(N 2)
的值。此外,我不知道如何显示具有以下标题的列标题:
你能帮帮我吗?P值,PValue2,Porder-Observ。第1组 - Observ。第2组
答案 0 :(得分:1)
您错误地将r(N_1)
和r(N_2)
分别称为r(N 1)
和r(N 2)
。
在上一篇文章中提供的玩具示例中,我已经纠正了这个错误,并在粗体中插入了另外六行,实现了您想要的效果:
sysuse auto, clear local i = 0 foreach v of var mpg price weight length displacement { local ++i quietly ranksum `v', by(foreign) porder scalar pval = 2*normprob(-abs(r(z))) if `i' == 1 { display %20s "P-Value", %5s "PValue2", %5s "Porder1", %5s "group 1", %5s "group 2" display "" } display "`v'{col 14}" %05.3f pval " " %6.4e pval " " %05.3f r(porder) /// " " %05.3f r(N_1) " " %05.3f r(N_2) }
第一个display
命令充当标题,但您必须使用这些值来获得所需的间距。第二个只是添加一个空行。
计数器宏i
仅在display
循环的第一步中用于for
标题和空白行,而不是为每个变量重复它们。
结果如下所示:
P-Value PValue2 Porder1 group 1 group 2
mpg 0.002 1.9e-03 0.271 52.000 22.000
price 0.298 3.0e-01 0.423 52.000 22.000
weight 0.000 3.8e-07 0.875 52.000 22.000
length 0.000 9.4e-07 0.862 52.000 22.000
displacement 0.000 1.1e-08 0.921 52.000 22.000
有关使用display
命令输出格式的详细信息,请在Stata的命令提示符下键入help format
。