显示 ranksum 的结果

Displaying results from ranksum

我正在尝试修改@Nick Cox 在我的 中发布的代码,但我遇到了一些问题。

我已经设置了 varlist 和组变量。我还更改了 col 选项以适合我的 varname。我想添加每个组的观察次数 r(N 1) / r(N 2) 并在结果列表中添加一些 "titles".

我正在尝试研究 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) 的值放入结果列表中。此外,我不知道如何显示具有以下标题的列 header:

P-Value, PValue2, Porder- Observ. group 1 - Observ. group 2

你能帮帮我吗?

您将 r(N_1)r(N_2) 分别错误地称为 r(N 1)r(N 2)

在您之前 post 提供的玩具示例中,我已更正了这个错误,并在 bold 中插入了另外六行,以实现您想要的效果:

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 命令充当 header,但您必须调整这些值以获得所需的间距。第二个只是添加一个空行。

计数器宏 i 仅在 for 循环的第一步中用于 display header 和空行,而不是为每个变量重复。

结果如下图所示:

             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