我试图计算给定变量的中值(fishmonthly
- 每个月给定家庭吃鱼的天数。必须在0到31之间。)我已准备好调查数据使用svyset sitecode [pweight= obsweightstratroadsite], strata(onroad)
,我尝试使用带有sitecode
的epctile计算每个村庄的中位数值(epctile fishmonthly, p(50) over(sitecode) svy
)。但是,只要给定村庄的fishmonthly
的中间值为0,代码就会在第一阶段以下列方式失败:
(为epctile fishmonthly, p(50) subpop(if sitecode==1) svy
提供的示例输出)
| Linearized
| Mean Std. Err. [95% Conf. Interval]
-------------+------------------------------------------------
__000007 | -.5 . . .
--------------------------------------------------------------
estimates post: matrix has missing values
r(504);
我已检查过我的数据集,变量fishmonthly
没有遗漏值。
当代码失败时,'表示'几乎总是以" - 。p"其中p是epctile命令中请求的百分位数。 (当代码没有失败时 - 即当实际中位数不等于0时,据我所知 - 在第一阶段中,'意味着返回为6或7位数的负数,并且第二阶段报告正确的中位数。)
任何人都可以告诉我为什么我会收到此错误以及如何解决此问题?
非常感谢!
答案 0 :(得分:0)
我遇到了同样的问题,现在终于明白了。当数据中的第一个百分位数大于您要求的数字时,它会调用错误。例如。如果您要求p(50),但数据中的最低值的频率为50.1%,则会出现错误。如果你要求p(50.1),你将获得估计。相当讨厌。