【发布时间】:2021-10-30 11:28:15
【问题描述】:
我有一个数据集,我想计算数据集不同变量的汇总统计数据。我想显示平均值、变异系数和 75% 分位数/25% 分位数、95% 分位数/5% 分位数和第二高/第二低值的比率。我是 Stata 的新手,并设法获得了一个包含分位数但不包含比率的表格。
【问题讨论】:
-
这对 SO 来说是一个边缘问题,因为它缺乏可重现的示例和任何代码尝试。 SO 不是代码编写服务。你至少应该表明你已经走了多远。
我有一个数据集,我想计算数据集不同变量的汇总统计数据。我想显示平均值、变异系数和 75% 分位数/25% 分位数、95% 分位数/5% 分位数和第二高/第二低值的比率。我是 Stata 的新手,并设法获得了一个包含分位数但不包含比率的表格。
【问题讨论】:
鉴于summarize, detail 之后可访问的结果,大多数但并非所有这些措施都很容易。
这是一种方法:
program mysummary, rclass sortpreserve
syntax varname(numeric) [if] [in]
marksample touse
quietly replace `touse' = -`touse'
quietly su `varlist' if `touse', detail
return scalar mean = r(mean)
return scalar cv = r(sd) / r(mean)
return scalar ratio25 = r(p75) / r(p25)
return scalar ratio5 = r(p95) / r(p5)
local N = r(N)
sort `touse' `varlist'
return scalar ratio2nd = `varlist'[`N'-1] / `varlist'[2]
end
sysuse auto, clear
tempname handle
postfile `handle' str32 varname mean cv ratio25 ratio5 ratio2nd using myresults, replace
ds, has(type numeric)
foreach v in `r(varlist)' {
mysummary `v'
post `handle' ("`v'") (r(mean)) (r(cv)) (r(ratio25)) (r(ratio5)) (r(ratio2nd))
}
postclose `handle'
use myresults
format mean-ratio2nd %4.3f
list, sep(0) noobs
+---------------------------------------------------------------+
| varname mean cv ratio25 ratio5 ratio2nd |
|---------------------------------------------------------------|
| price 6165.257 0.478 1.512 3.593 4.395 |
| mpg 21.297 0.272 1.389 2.429 2.917 |
| rep78 3.406 0.291 1.333 2.500 5.000 |
| headroom 2.993 0.283 1.400 3.000 3.000 |
| trunk 13.757 0.311 1.700 3.000 3.667 |
| weight 3019.459 0.257 1.607 2.344 2.622 |
| length 187.932 0.118 1.200 1.435 1.565 |
| turn 39.649 0.111 1.194 1.394 1.500 |
| displacement 197.297 0.465 2.101 4.070 4.706 |
| gear_ratio 3.015 0.151 1.234 1.658 1.701 |
| foreign 0.297 1.548 . . . |
+---------------------------------------------------------------+
出现最后一行的缺失是因为对于该指标变量,相关的三个比率意味着除以 0,即较低的四分位数、5% 的百分位数和第二低的值。从统计上讲,在这种情况下,您不太可能关心这些变量。
【讨论】: