将固定效应回归线添加到 ggplot

Adding fixed effects regression line to ggplot

我正在使用 ggplot 绘制面板数据,我想将我的固定效应模型“fixed”的回归线添加到图中。这是当前代码:

# Fixed Effects Model in plm
fixed <- plm(progenyMean ~ damMean, data=finalDT, model= "within", index = c("sireID", "cropNum"))

# Plotting Function
plotFunction <- function(Data){
  
  ggplot(Data, aes(x=damMean, y=progenyMean)) + 
    geom_point() + 
    geom_smooth(method = "lm", se = T, formula=fixed)
  
}

但是,该图无法识别 geom_smooth() 并且该图上没有回归线。

是否可以在此处绘制固定效应模型的回归线?

OP。请在您的下一个问题中包含一个可重现的示例,以便我们更好地帮助您。在这种情况下,我将使用与 on Princeton's site here 相同的数据集来回答,因为我不太熟悉支持包 plm 中的 plm() 函数所必需的数据结构.我确实希望数据集可以是一个更可靠的数据集......但希望这个例子仍然是说明性的,即使数据集不再可用。

library(foreign)
library(plm)
library(ggplot2)
library(dplyr)
library(tidyr)

Panel <- read.dta("http://dss.princeton.edu/training/Panel101.dta")

fixed  <-plm(y  ~  x1, data=Panel,  index=c("country",  "year"), model="within")
my_lm <- lm(y ~ x1, data=Panel)  # including for some reference

示例:绘制简单的线性回归

请注意,我还引用了标准线性模型 - 这是为了向您展示如何提取值并从中绘制一条线以匹配 geom_smooth()。这是该数据的示例图加上使用 geom_smooth().

使用的 lm() 函数绘制的线
plot <- Panel %>%
  ggplot(aes(x1, y)) + geom_point() + theme_bw() +
  geom_smooth(method="lm", alpha=0.1, color='gray', size=4)
plot

如果我想绘制一条线来匹配 geom_smooth() 的线性回归,您可以使用 geom_abline() 并指定 slope=intercept=。您可以看到这些直接来自我们的 my_lm 列表:

> my_lm

Call:
lm(formula = y ~ x1, data = Panel)

Coefficients:
(Intercept)           x1  
  1.524e+09    4.950e+08

提取 my_lm$coefficients 的这些值可以得到我们的斜率和截距(意识到命名向量的截距是第一个位置,斜率是第二个位置。您会看到我们的新蓝线直接越过顶部geom_smooth() 行的 - 这就是为什么我把它做得这么胖 :).

plot + geom_abline(
    slope=my_lm$coefficients[2],
    intercept = my_lm$coefficients[1], color='blue')

绘制来自 plm()

的线条

可以使用相同的策略来绘制来自使用 plm() 的预测模型的线。在这里,它更简单,因为来自 plm() 的模型似乎截距为 0:

> fixed

Model Formula: y ~ x1

Coefficients:
        x1 
2475617827

嗯,那么用同样的方法绘制就很容易了:

plot + geom_abline(slope=fixed$coefficients, color='red')

对于你的情况,我会试试这个:

 ggplot(Data, aes(x=damMean, y=progenyMean)) + 
    geom_point() +
    geom_abline(slope=fixed$coefficients)