我尝试了两个类别的简单箱图(传输类型为0或1),增加了线性拟合,并期望它通过箱图的方式,但这里有些错误:
linearFit <- lm(mpg~am, data=mtcars)
boxplot(mpg~am, data=mtcars)
abline(linearFit, lwd=2, col="blue")
linearFit$coefficients
# (Intercept) am
# 17.147368 7.244939
然而,该线远远超出了两个箱图,而不是通过“类别”0的截距。我怎样才能告诉R在基础绘图系统中使用类别平均值?
编辑澄清: 所以我只需要一个蓝线,在该箱图中经过(0,17.14)和(1,17.14 + 7.244),其中变量'am'(传输类型)是因子而不是数值变量。 在基础绘图系统中有一种简单的方法吗?
答案 0 :(得分:1)
由于am
被视为一个因素,因此am
的系数是向拦截的转变。因此,您必须将此添加到截距以获得am = 1截距。
linearFit <- lm(mpg~am, data=mtcars)
boxplot(mpg~am, data=mtcars, border=1:2 )
abline(h=c(linearFit$coefficients[1], linearFit$coefficients[1]+linearFit$coefficients[2]), col=1:2, lty=2, lwd=2)
此外,am
项的重要性可以通过与仅包含截距的模型(即“1”)进行比较来测试
linearFit0 <- lm(mpg~1, data=mtcars) # model with intercept only
anova(linearFit0, linearFit)
plot(x=c(0,1), res$stats[3,], ylim=range(res$stats))
segments(x0=c(0,1), x1=c(0,1), y0=res$stats[2,], y1=res$stats[4,])
abline(linearFit)
linearFit <- lm(mpg~I(am+1), data=mtcars)
boxplot(mpg~I(am+1), data=mtcars, border=1:2 )
abline(linearFit$coefficients, col=1:2, lty=2, lwd=2)