显示rankum

时间:2018-05-14 21:06:01

标签: stata stata-macros

我正在尝试在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组

你能帮帮我吗?

1 个答案:

答案 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