首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中用lm()拟合一个固定的效应模型,没有单独的拦截

在R中用lm()拟合一个固定的效应模型,没有单独的拦截
EN

Stack Overflow用户
提问于 2022-03-11 19:47:30
回答 1查看 262关注 0票数 -1

我正在进行面板回归,并决定改用lm(),因为plm()对于测试数据(以及linearmodels中的linearmodels)没有一个很好的predict()函数,对于我来说,作为计量经济学新手,lme4语法是不直观的。

我想使用lm并预测未知的数据。

我的lm()方程看起来像这样,作者是一个固定的效果

代码语言:javascript
复制
fit <- lm(y ~ a + b + factor(author), data = train)

很明显它给我打印了数千个系数。如何在lm()中建立一个模型,对所有作者进行评估,而不单独打印?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-11 21:32:13

让我们假设一些具体的数据示例。

代码语言:javascript
复制
a <- rnorm(100)
b <- runif(100)

train <- data.frame(a, b, 
                    author = sample(LETTERS[1:10], 100, 1),
                    y = 3*a + .5*b + rnorm(100))

现在我们做一个固定的效果回归,我假设我们不需要任何Intercept,所以命令是

代码语言:javascript
复制
fit <- lm(y ~ a + b + author - 1, data = train)

公式中的- 1部分将Intercpet排除在外,而是计算每个author的固定效果。没有遗漏任何基础水平。

在示例中的10位作者中,打印此模型或其摘要是可行的,但在您的工作中不能打印数千名作者。

您只可以像这样打印ab的系数

代码语言:javascript
复制
> fit$coefficients[c('a', 'b')]
         a          b 
3.02022335 0.09789947 

您可以通过anova命令查看系数及其p值。

代码语言:javascript
复制
> anova(fit)

Analysis of Variance Table

Response: y
          Df  Sum Sq Mean Sq   F value    Pr(>F)    
a          1 1139.90 1139.90 1034.2307 < 2.2e-16 ***
b          1    7.73    7.73    7.0127  0.009591 ** 
author    10   10.75    1.07    0.9751  0.470812    
Residuals 88   96.99    1.10 

您甚至可以解构summary(fit)的系数或显示调整后的R 2:

代码语言:javascript
复制
> summary(fit)$coefficients[c("a", "b"),]
    Estimate Std. Error    t value     Pr(>|t|)
a 3.02022335 0.09697699 31.1437123 2.679195e-49
b 0.09789947 0.35161039  0.2784317 7.813342e-01
>
> summary(fit)$adj.r.squared
[1] 0.9122033

有关其他值,请参见help(summary.lm)。您是否仍然希望看到作者F的系数,即

代码语言:javascript
复制
> fit$coefficients["authorF"]
  authorF 
0.6174314 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71443939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档