Statistics 简单Stata程序
我正试图编写一个简单的程序,结合一组回归拟合的系数和标准误差估计。例如,我运行5次回归,并将感兴趣的系数和标准误差存储到向量中(实际上是Stata矩阵对象)。然后,我需要执行以下操作:Statistics 简单Stata程序,statistics,Statistics,我正试图编写一个简单的程序,结合一组回归拟合的系数和标准误差估计。例如,我运行5次回归,并将感兴趣的系数和标准误差存储到向量中(实际上是Stata矩阵对象)。然后,我需要执行以下操作: 求系数估计的平均值 根据“多重插补”结果合并建议的公式,合并标准误差估计值。该公式是第6页“T”公式的平方根,共页 我写过一次Stata代码,但我想把它写成一个函数(或“程序”,用Stata的话说),它以回归系数估计的向量(或矩阵,如果可能的话,一次组合多个估计)和相应标准误差估计的向量(或矩阵)作为参数,然后在
更新:我完成了合并系数/参数kXm矩阵的代码,其中k是系数/参数的数量,m是插补的数量。你可以找到它
多亏了特里斯坦和加比的提示。我想你应该知道多重插补,包括这些类型的组合规则,都内置在Stata 11中。我没有用过,但如果可能的话,这可能是最好的选择 您可以使用
args
命令轻松编写Stata程序来获取矩阵。遵循此模板:
capture program drop mi_combine
program define mi_combine
args coef se
matlist `coef'
matlist `se'
end
mat ones = (1,1,1)
mat twos = (2, 2, 2)
mi_combine ones twos
这应该会有帮助。我是Stata的新手。我有v10,如果/当我得到v11,我将研究mi。我想使用Clarify的mi combine功能,但我使用的是Clarify不支持的模型;我也不确定mi是否会(例如,用户提供的删失分位数回归。ado) 自从我发布了q之后,我想到了一些目前可以做这项工作的东西:
capture program drop micombine
program define micombine
mat ones = (1,1,1,1,1)
mat bmean = (1/5)*(ones*`1'')
mat wtv = (1/5)*(`2'*`2'')
scalar wtv_s = wtv[1,1]
mat btv = (1/4)*(`1' - bmean#ones)* (`1' - bmean#ones)'
scalar btv_s = btv[1,1]
mat varregmi = wtv_s + (1+(1/5))*btv
scalar varregmi_s = varregmi[1,1]
scalar seregmi = sqrt(varregmi_s)
scalar bmean_s = bmean[1,1]
scalar dfmi = (5-1)*(1+(5*wtv_s)/(6*btv_s))^2
scalar moemi = seregmi*invttail(dfmi,.025)
di as text "b_mi = " as result bmean_s
di as text "se_mi = " as result seregmi
di as text "df_mi =" as result dfmi
di as text "95% moe_mi =" as result moemi
end
丑陋,并且只对一个系数进行估计。希望能够为所有COEF执行此操作,尽管这不是必需的。特里斯坦说得对,您可以使用“args”在Stata程序中调用矩阵作为参数。使用他的模板,这个黑客应该复制你在原始帖子中对任何breg,sreg向量对的计算:
capture prog drop myMI
program myMI
args breg sereg
local params=colsof(`breg') // store the number of parameters here
mat ones=J(1,`params',1)
mat bregmean = (1/`params')*(ones*breg')
scalar bregmean_s = bregmean[1,1]
mat seregmean = (1/`params')*(ones*sereg')
mat seregbtv = (1/(`params'-1))*(breg - bregmean#ones)* (breg - bregmean#ones)'
mat varregmi = (1/`params')*(sereg*sereg') + (1+(1/`params'))* seregbtv
scalar varregmi_s = varregmi[1,1]
scalar seregmi = sqrt(varregmi_s)
disp bregmean_s
disp seregmi
end
你把它叫做
myMI breg sereg
如果计算复杂,我建议使用mata 如果要在数据中进行计算,可以使用
parmest
和/或postfile
将回归系数导出到临时数据文件中
myMI breg sereg