将固定效应回归线添加到 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)
我正在使用 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)