我正在尝试在回归图上绘制置信区间。

时间:2018-11-12 18:57:35

标签: r regression lm confidence-interval

我尝试了几种方法,但是所有方法都给我一个错误,指出x和y值不相同。

这是我到目前为止所做的。

head(new_data[,4:5])

 Humerus   Radius
 4.992607 4.921148
 5.170484 5.049856
 5.005623 4.936989
 5.065755 4.976734
 4.219508 4.174387
 4.262680 4.157319

plot(new_data$Radius, new_data$Humerus, main="Regression analysis of Humerus to radius", 
 xlab="Radius ", ylab=" Humerus", pch=19)
abline(lm(new_data$Humerus~ new_data$Radius))

This is the graph I got

为了进行置信区间,我尝试了

lm.out <- lm(new_data$Humerus ~ new_data$Radius)
newx = seq(min(new_data$Radius),max(new_data$Humerus),by = 0.05)
conf_interval <- predict(lm.out, newdata=data.frame(x=newx), interval="confidence",level = 0.95)
plot(new_data$Radius, new_data$Humerus, xlab="Radius", ylab="Humerus", main="Regression")
abline(lm.out, col="lightblue")
lines(newx, conf_interval[,2], col="blue", lty=2)
lines(newx, conf_interval[,3], col="blue", lty=2)

当我这样做时,错误消息不断弹出,提示-

 Warning message:
'newdata' had 61 rows but variables found have 150 rows

我真的很困在这里,非常感谢任何帮助。谢谢

1 个答案:

答案 0 :(得分:1)

使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id='title-text'>This is Text</div>时,predict()应该是一个数据框,其名称与原始数据集中的解释变量的名称相同。在原始数据集中,x变量称为“ new_data $ Radius”。您需要进行两项更改:

  1. 进行原始回归时,只需使用变量名

    lm.out <-lm(Humerus〜Radius,data = new_data)

  2. 当您传递newdata参数时,将名称设为“ Radius”而不是“ x”

    conf_interval <-预测(lm.out,newdata = data.frame(Radius = newx),interval =“ confidence”,level = 0.95)

因此您的代码应阅读

newdata