ggplot打印回归方程,其中一个图上有多个lm

时间:2015-10-06 10:46:16

标签: r ggplot2 regression

这是我的数据框中的数据子集,在此图中使用;

Year    region  gear    Species.Code    query   LPUE
1974    Cyprus  creel   LOB             Pre     0.31
1975    Cyprus  creel   LOB             Pre     0.26
1976    Cyprus  creel   LOB             Pre     0.33
1977    Cyprus  creel   LOB             Pre     0.17
1978    Cyprus  creel   LOB             Pre     0.2
1979    Cyprus  creel   LOB             Pre     0.22
1980    Cyprus  creel   LOB             Pre     0.38
1981    Cyprus  creel   LOB             Pre     0.51
1982    Cyprus  creel   LOB             Pre     0.57
1983    Cyprus  creel   LOB             Pre     0.45
1984    Cyprus  creel   LOB             Post    0.43
1985    Cyprus  creel   LOB             Post    0.33
1986    Cyprus  creel   LOB             Post    0.21
1987    Cyprus  creel   LOB             Post    0.69
1988    Cyprus  creel   LOB             Post    0.65
1989    Cyprus  creel   LOB             Post    0.37
1990    Cyprus  creel   LOB             Post    0.35
1991    Cyprus  creel   LOB             Post    0.15
1992    Cyprus  creel   LOB             Post    0.21
1993    Cyprus  creel   LOB             Post    0.17

我已经生成了时间序列数据的线图,并且对于截至1984年的数据和1984年之后的数据拟合了两个线性回归。 使用以下代码;

ggplot(subset(A7,region=="Cyprus"&gear=="creel"&Species.Code=="LOB"),aes(x=Year,y=LPUE,shape=query))+
  geom_line()+
  geom_smooth(method="lm")+
  theme(panel.background = element_rect(fill = 'white', colour = 'black'))

我首先想知道如何在图上打印方程式(我在堆栈溢出中找到的其他示例只处理一个lm),其次我如何保存lm模型以便我可以进行统计测试他们之间的意义。

1 个答案:

答案 0 :(得分:2)

您可以通过堆叠geom_smooth命令将几条回归线添加到ggplot。我建议为你想要适合的两个模型创建单独的数据框。

data_upto84 <- subset(A7, year<1985)
data_from84 <- subset(A7, year>1984)

ggplot(data_upto84, aes(YEAR, LPUE)) + 
stat_summary(fun.data=mean_cl_normal) +
geom_smooth(method = 'lm') +
geom_smooth(data = data_from84, aes(YEAR, LPUE), method = 'lm')

关于你的第二个问题:&#34;其次我如何保存lm模型,以便我可以对它们之间的重要性进行统计测试&#34;。 您可以通过将模型分配给对象来保存模型:

model1 <- lm(LPUE ~ 1 + YEAR, data = data_upto84)
model2 <- lm(LPUE ~ 1 + YEAR, data = data_from84)

我不清楚你想用这些模型测试什么。标准模型比较(例如使用anova函数)在两个不同样本上运行模型时无效。