【发布时间】:2014-04-24 12:42:22
【问题描述】:
我想用置信区间计算我的数据(例如年龄、性别)中的一组组的汇总统计量。为此,我使用蒙特卡罗模拟从泊松分布中为数据中的每一行绘制值,然后折叠这些行以获得摘要。如果模拟结果只是一个值(使用 rclass 中的返回标量),则整个过程工作正常,但是一旦我尝试模拟多个结果(在 eclass 中使用 ereturn 矩阵),它就不起作用(参见下面的 Stata 代码)。我收到错误消息:“表达式中的类型不匹配错误:e(A)”。如何在没有更复杂循环等的情况下模拟整个向量甚至结果矩阵?
非常感谢! 弗雷德
program bootPGW, eclass
use "C:\Users\649007\Desktop\Demetriq_PWG_edu.dta", replace
gen id=_n
sort id
gen N=_N
by id: gen DL2=floor(rpoisson(calung))
by id:gen D02=floor(rpoisson(D0))
by id:gen Dsmoking=floor(rpoisson(smoking))
by id:gen ML2=(DL2/numpyr)*1000
by id:gen AL2=(ML2-CPSIIrate)/ML2
by id:replace AL2=0 if AL2<0
by id:gen A02=1-exp(-PWGcoef*(ML2-CPSIIrate))
by id:gen A2=(AL2*DL2+A02*D02)/(DL2+D02)
gen Adeaths=totdeath*A2
collapse (sum) Adeaths=Adeaths totdeath=totdeath Dsmoking=Dsmoking, by(edu_3cat sex country year)
gen AF_PWG=Adeaths/totdeath
gen AF_simple=Dsmoking/totdeath
mkmat AF_PWG, matrix(A)
ereturn matrix A=A
end
simulate a=e(A), reps(1000) nodots seed(123): bootPGW
【问题讨论】:
-
crossposted at:link 如果我们在 Stata 论坛中解决问题,我会在这里发布答案。
标签: matrix stata montecarlo simulate