我正在尝试在回归图上绘制置信区间。
I am trying to plot confidence intervals on a regression graph.
我尝试了几种方法,但所有方法都给我一个错误,提示 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
我真的被困在这里了,非常感谢任何形式的帮助。谢谢
当你使用predict()
时,newdata
应该是一个包含与原始数据集中的解释变量相同名称的数据框。在您的原始数据集中,x 变量称为 "new_data$Radius"。您需要进行两项更改:
当您进行原始回归时,只需使用变量名称
lm.out <- lm(肱骨~半径,data=new_data)
当您传递 newdata
参数时,让名称为 "Radius" 而不是 "x"
conf_interval <- 预测(lm.out, newdata=data.frame(Radius=newx), interval="confidence",level = 0.95)
所以你的代码应该是
lm.out <- lm(Humerus ~ $Radius,data=new_data)
newx = seq(min(new_data$Radius),max(new_data$Humerus),by = 0.05)
conf_interval <- predict(lm.out, newdata=data.frame(Radius=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)
我尝试了几种方法,但所有方法都给我一个错误,提示 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
我真的被困在这里了,非常感谢任何形式的帮助。谢谢
当你使用predict()
时,newdata
应该是一个包含与原始数据集中的解释变量相同名称的数据框。在您的原始数据集中,x 变量称为 "new_data$Radius"。您需要进行两项更改:
当您进行原始回归时,只需使用变量名称
lm.out <- lm(肱骨~半径,data=new_data)
当您传递
newdata
参数时,让名称为 "Radius" 而不是 "x"conf_interval <- 预测(lm.out, newdata=data.frame(Radius=newx), interval="confidence",level = 0.95)
所以你的代码应该是
lm.out <- lm(Humerus ~ $Radius,data=new_data)
newx = seq(min(new_data$Radius),max(new_data$Humerus),by = 0.05)
conf_interval <- predict(lm.out, newdata=data.frame(Radius=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)