如何修复abline警告,仅使用前两个系数?

5

当我使用abline()时,我一直无法解决一个错误。我不断收到警告消息:在abline(model)中,仅使用7个回归系数中的前两个。我一直在搜索并看到许多其他人遇到这个错误,但他们的示例是用于多元线性函数的。我对R还很陌生,下面是我正在使用的一个简单示例。感谢任何帮助!

year = c('2010','2011','2012','2013','2014','2015','2016')
population = c(25244310,25646389,26071655,26473525,26944751,27429639,27862596)
Texas=data.frame(year,population) 

plot(population~year,data=Texas)
model = lm(population~year,data=Texas)
abline(model)

5
您正在使用年份作为一个因素。请将其编码为数字。 - Russ Hyde
1个回答

6
您可能需要像以下这样的内容,确保在您的模型中将year解释为一个数值型变量:
plot(population ~ year, data = Texas)
model <- lm(population ~ as.numeric(as.character(year)), data = Texas)
abline(model)

enter image description here

这使得lm估计截距(对应于年份0)和斜率(每年人口平均增加量),abline正确解释,如图所示。
警告的原因是年份成为具有7个级别的因子,因此您的lm调用估算参考年份2010的平均值(截距)和其他6个年份的对比。因此,您会得到许多系数,abline仅错误地使用前两个。 编辑:话虽如此,您可能希望更改year存储方式为数字。然后您的代码将正常工作,并且plot也将生成适当的散点图和回归线。
Texas$year <- as.numeric(as.character(Texas$year))

plot(population ~ year, data = Texas, pch = 16)
model <- lm(population ~ year, data = Texas)
abline(model)

enter image description here

请注意,一般情况下需要使用as.character,但在lm中由于年份是连续的,可以不使用它(这是巧合)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接