[英]Bad plot when plotting 95% confidence interval of linear model prediction
I need a little help with plotting prediction with its confidence interval. 在用其置信区间绘制预测时,我需要一些帮助。 Consider the following example
考虑以下示例
library(Hmisc)
data("mtcars")
mfit = lm(mpg ~ vs + disp + cyl, data = mtcars)
#disp and cyl at their mean
newcar = data.frame(vs = c(0,1), disp = 230, cyl = 6.188)
pmodel <- predict(mfit, newcar, se.fit=TRUE)
I want to plot the effect of vs
(when 0 and 1) when all other variables are held constant (mean / mode). 当所有其他变量保持恒定(均值/模式)时,我想绘制
vs
(在0和1时)的效果。
To do this I run this code below: 为此,我在下面运行此代码:
plot(1:2, pmodel$fit[1:2], ylim=c(0,1), pch=19, xlim=c(.5,2.5), xlab="X",
ylab = "Predicted values", xaxt = "n", main = "Figure1")
arrows(1:2, (pmodel$fit[1:2] - 1.96 * pmodel$fit[1:2]),
1:2, (pmodel$fit[1,1] + 1.96 * pmodel$fit[1:2]),
length=0.05, angle=90, code=3)
axis(1, at=c(1,2), labels=c("0","1"))
What am I doing wrong here? 我在这里做错了什么? Thanks!
谢谢!
Note you have ylim = c(0, 1)
, which is incorrect. 请注意,您有
ylim = c(0, 1)
,这是不正确的。 When drawing confidence interval, we have to make sure ylim
covers the lower and upper bound of CI. 在绘制置信区间时,我们必须确保
ylim
覆盖CI的上下边界。
## lower and upper bound of CI
lower <- with(pmodel, fit - 1.96 * se.fit)
upper <- with(pmodel, fit + 1.96 * se.fit)
## x-location to plot
xx <- 0:1
## set `xlim` and `ylim`
xlim <- range(xx) + c(-0.5, 0.5) ## extends an addition 0.5 on both sides
ylim <- range(c(lower, upper))
## produce figure
plot(xx, pmodel$fit, pch = 19, xlim = xlim, ylim = ylim, xaxt = "n",
xlab = "X", ylab = "Predicted values", main = "Figure1")
arrows(xx, lower, xx, upper, length = 0.05, angle = 90, code = 3)
axis(1, at = xx)
Several other comments on your code: 关于您的代码的其他一些注释:
fit - 1.96 * se.fit
not fit - 1.96 * fit
; fit - 1.96 * se.fit
不fit - 1.96 * fit
fit - 1.96 * se.fit
fit - 1.96 * fit
; 0:1
, rather than 1:2
; 0:1
而不是1:2
上绘制; fit[1:2]
not fit[1,1]
. fit[1:2]
不fit[1,1]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.