从tsls输出中提取标准错误

时间:2013-12-08 05:59:17

标签: r

我想从 sem R包中 tsls 命令的输出中提取标准错误。

使用一些通用代码作为示例:

fit = tsls(Y ~ X, ~Z)
summary(fit)

摘要函数除了回归估计之外还输出一些东西(例如,模型公式,残差摘要)。

我想要输出标准错误的等效于 fit $ coef 。但这似乎不是一种选择。用于执行 glm lm 输出的等效代码的所有代码似乎都不起作用。有没有办法破解输出?

1 个答案:

答案 0 :(得分:3)

有时候需要花一点时间才能找到这些值的来源。如果您没有从str(fit)获得任何线索,那么最佳观看的地方就是查看summary.tsls正在做什么。

getAnywhere("summary.tsls")的帮助下,我们看到了:

getAnywhere("summary.tsls")
# A single object matching ‘summary.tsls’ was found
# It was found in the following places
#   registered S3 method for summary from namespace sem
#   namespace:sem
# with value
# 
# function (object, digits = getOption("digits"), ...) 
# {
# ###
# ### \\\SNIP///
# ###
#     std.errors <- sqrt(diag(object$V))
# ###
# ### \\\SNIP///
# ###
# }
# <bytecode: 0x503c530>
# <environment: namespace:sem>

因此,要获得您正在寻找的价值,您需要自己计算:

sqrt(diag(fit$V))

可重现的例子:

library(sem)
fit <- tsls(Q ~ P + D, ~ D + F + A, data=Kmenta)
summary(fit)
# 
#  2SLS Estimates
# 
# Model Formula: Q ~ P + D
# 
# Instruments: ~D + F + A
# 
# Residuals:
#    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
# -3.4300 -1.2430 -0.1895  0.0000  1.5760  2.4920 
# 
#                Estimate  Std. Error  t value   Pr(>|t|)    
# (Intercept) 94.63330387  7.92083831 11.94738 1.0762e-09 ***
# P           -0.24355654  0.09648429 -2.52431   0.021832 *  
# D            0.31399179  0.04694366  6.68869 3.8109e-06 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 1.9663207 on 17 degrees of freedom

sqrt(diag(fit$V))
# (Intercept)           P           D 
#  7.92083831  0.09648429  0.04694366