R 从回归输出中检索模型矩阵

R 从回归输出中检索模型矩阵,r,regression,R,Regression,在从模型输出运行多个回归模型后,我希望检索清理后的输入协变量和结果变量-我希望访问实际估计中使用的数据。 对于lm()和lfe的felm()函数,可以通过特定的“模型”输出访问结果变量和协变量: 库(估计值) 图书馆(lfe) 种子(1) N如果unclass对象lm_robust_fit您将看到它根本不存储模型帧中的值,因此无法直接从对象中提取它们 但是,felm\u-fit也不包含它们-正如您所示,它提供了生成它所需的对model.frame的调用,您只需要eval 如果查看lm的代码,它实

在从模型输出运行多个回归模型后,我希望检索清理后的输入协变量和结果变量-我希望访问实际估计中使用的数据。 对于lm()和lfe的felm()函数,可以通过特定的“模型”输出访问结果变量和协变量:

库(估计值)
图书馆(lfe)
种子(1)

N如果
unclass
对象
lm_robust_fit
您将看到它根本不存储模型帧中的值,因此无法直接从对象中提取它们

但是,
felm\u-fit
也不包含它们-正如您所示,它提供了生成它所需的对
model.frame
的调用,您只需要
eval

如果查看
lm
的代码,它实际上以完全相同的方式生成其
模型
数据,只是需要在
model.frame
调用上运行
eval

通过直接调用
model.frame
,可以完全按照
lm
felm\u-fit
的方式执行,默认情况下,model.frame使用传递给原始调用的
data
参数,并在正确的环境中对其进行计算。这类似于您提出的解决方案,但比它更安全,因为您不必指定数据来自何处(即,您不必担心对象位于
globalenv
以外的范围内)

直接调用
model.frame
也将适用于所有三种不同类型的模型,因此使用此函数检索任何模型框架(无论其类型如何)可能会简化代码

因此,您可以:

head(model.frame(lm_fit))
#>          y     log(X)
#> 2 1.409403 -1.6947599
#> 3 1.760336 -0.1795710
#> 4 4.348590  0.4670498
#> 5 1.004431 -1.1101553
#> 6 4.408224 -0.1978799
#> 7 2.691566 -0.7186105

head(model.frame(felm_fit))
#>          y     log(X)
#> 2 1.409403 -1.6947599
#> 3 1.760336 -0.1795710
#> 4 4.348590  0.4670498
#> 5 1.004431 -1.1101553
#> 6 4.408224 -0.1978799
#> 7 2.691566 -0.7186105

head(model.frame(lm_robust_fit))
#>          y     log(X)
#> 2 1.409403 -1.6947599
#> 3 1.760336 -0.1795710
#> 4 4.348590  0.4670498
#> 5 1.004431 -1.1101553
#> 6 4.408224 -0.1978799
#> 7 2.691566 -0.7186105

如果您
unclass
对象
lm\u robust\u fit
,您将看到它根本不存储其模型帧中的值,因此无法直接从对象中提取它们

但是,
felm\u-fit
也不包含它们-正如您所示,它提供了生成它所需的对
model.frame
的调用,您只需要
eval

如果查看
lm
的代码,它实际上以完全相同的方式生成其
模型
数据,只是需要在
model.frame
调用上运行
eval

通过直接调用
model.frame
,可以完全按照
lm
felm\u-fit
的方式执行,默认情况下,model.frame使用传递给原始调用的
data
参数,并在正确的环境中对其进行计算。这类似于您提出的解决方案,但比它更安全,因为您不必指定数据来自何处(即,您不必担心对象位于
globalenv
以外的范围内)

直接调用
model.frame
也将适用于所有三种不同类型的模型,因此使用此函数检索任何模型框架(无论其类型如何)可能会简化代码

因此,您可以:

head(model.frame(lm_fit))
#>          y     log(X)
#> 2 1.409403 -1.6947599
#> 3 1.760336 -0.1795710
#> 4 4.348590  0.4670498
#> 5 1.004431 -1.1101553
#> 6 4.408224 -0.1978799
#> 7 2.691566 -0.7186105

head(model.frame(felm_fit))
#>          y     log(X)
#> 2 1.409403 -1.6947599
#> 3 1.760336 -0.1795710
#> 4 4.348590  0.4670498
#> 5 1.004431 -1.1101553
#> 6 4.408224 -0.1978799
#> 7 2.691566 -0.7186105

head(model.frame(lm_robust_fit))
#>          y     log(X)
#> 2 1.409403 -1.6947599
#> 3 1.760336 -0.1795710
#> 4 4.348590  0.4670498
#> 5 1.004431 -1.1101553
#> 6 4.408224 -0.1978799
#> 7 2.691566 -0.7186105

是否检查了函数
model.matrix()
?是否检查了函数
model.matrix()
head(model.frame(lm_fit))
#>          y     log(X)
#> 2 1.409403 -1.6947599
#> 3 1.760336 -0.1795710
#> 4 4.348590  0.4670498
#> 5 1.004431 -1.1101553
#> 6 4.408224 -0.1978799
#> 7 2.691566 -0.7186105

head(model.frame(felm_fit))
#>          y     log(X)
#> 2 1.409403 -1.6947599
#> 3 1.760336 -0.1795710
#> 4 4.348590  0.4670498
#> 5 1.004431 -1.1101553
#> 6 4.408224 -0.1978799
#> 7 2.691566 -0.7186105

head(model.frame(lm_robust_fit))
#>          y     log(X)
#> 2 1.409403 -1.6947599
#> 3 1.760336 -0.1795710
#> 4 4.348590  0.4670498
#> 5 1.004431 -1.1101553
#> 6 4.408224 -0.1978799
#> 7 2.691566 -0.7186105