r - 向对数回归添加置信区间

标签 r regression confidence-interval

我正在尝试将置信区间添加到 R 中的对数回归曲线中。我认为有一个数学原因我目前无法做到这一点,所以任何帮助将不胜感激。

这是数据:

Treatment<-c(15,12,6,3,15,12,6,9,9,15,6,9,3,3,12)
CSA<-c(70.32255036, 141.7157414,    185.6793193,    382.1145078,    51.68417543,    
       99.38527948, 164.1865075,    160.8565834,    43.85808722,    46.99992099,
       75.46593836, 116.4039474,    250.3521394,    290.2665555,    122.2660148)
data<-data.frame(Treatment, CSA)

这是生成情节的代码
par(mfrow=c(1,1))
par(mar=c(2.5,2.5,1,1))

plot(data$Treatment,data$CSA,ylim=c(0,400),xlim=c(3,15),pch=21,
     xaxt="n",yaxt="n",cex=0.6,xlab=NA,ylab=NA,bty="l")

axis(side=1,tck=-0.02,at=seq(3,15,3),cex.axis=0.6,
     mgp=c(0,0.3,0))
axis(side=2,tck=-0.02,at=seq(0,400,100),cex.axis=0.6,
     las=2,mgp=c(0,.5,0))

ylab<-expression("Total cross-sectional area (cm"^{2}~")")
xlab<-c("Treatment")

mtext(xlab,side=1,line=1.5,cex=0.7)
mtext(ylab,side=2,line=1.5,cex=0.7)

model <- nls(CSA ~ a*log(Treatment)+b,start = 
               list(a = -141,b = 437),data=data)    

xv<-seq(min(data$Treatment),max(data$Treatment),0.5)
yv<-predict(model,list(Treatment=xv))
lines(xv,yv,col="grey23",lwd=1.5)

LOGARITHMIC REGRESSION PLOT

如果我使用二阶多项式模型拟合绘图;
mod2<-lm(CSA~poly(Treatment,2),data=data)
xv<-seq(min(data$Treatment),max(data$Treatment),0.5)
yv<-predict(mod2,list(Treatment=xv))
lines(xv,yv,col="grey23",lwd=1.5)

我可以使用以下方法添加置信区间;
newx <- seq(min(data$Treatment), max(data$Treatment), length.out=1000)
preds <- predict(mod2, newdata = data.frame(Treatment=newx), 
                 interval = 'confidence')
lines(newx, preds[ ,3], lty = 'dashed', col = "grey36",lwd=1)
lines(newx, preds[ ,2], lty = 'dashed', col = 'grey36',lwd=1)

POLYNOMIAL REGRESSION MODEL

但这不适用于对数曲线。有没有办法在基础 R 中做到这一点?

提前致谢

最佳答案

使用 lm 可以正常工作将线性模型拟合到对数转换数据

mod3 <- lm(CSA ~ log(Treatment),data=data)    
yv<-predict(mod3,list(Treatment=xv))
lines(xv,yv,col="grey23",lwd=1.5)
preds <- predict(mod3, newdata = data.frame(Treatment=newx), 
                 interval = 'confidence')
lines(newx, preds[ ,3], lty = 'dashed', col = "grey36",lwd=1)
lines(newx, preds[ ,2], lty = 'dashed', col = 'grey36',lwd=1)

enter image description here

关于r - 向对数回归添加置信区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50431066/

相关文章:

r - Shiny 的 navbarPage 中的搜索字段

r - 如何在 R(新更新)中对纵向温度序列执行分段/样条回归?

matlab - 计算平均值周围 95% 的间隔

r - 用 NA 值绘制置信区间

r - 将ts对象转换为data.frame

r - 对最大位于 r 中心的向量进行排序

r - 是否可以将na.rm全局设置为TRUE?

python - 正交匹配追踪回归——我用错了吗?

keras - 深度学习中没有进行训练

python - 假设分布未知,根据样本数据计算置信区间