繁体   English   中英

mle2回归线的置信区间

[英]Confidence Interval for mle2 Regression Line

我正在用R中的mle2进行非线性回归,我想在最佳拟合曲线周围生成95%的逐点置信带。 下面显示了我要执行的操作的简化示例,其中尝试在mle2 fit对象上使用预测。 有关如何执行此操作的任何建议?

library(bbmle)

# Fabricated data
e.u <- function( x, k ) { exp(-k * x) }
n <- 40
t.bio <- 1:n
bio <- 10*e.u(t.bio,log(2)/10) + rnorm(n,0,sqrt(e.u(t.bio,log(2)/10)))

#Use mle2 to estimate the parameters
intake.guess <- 10
rc.guess <- 0.07

n.log.like <- function(intake,k) {
  sum.y <- 0
  for (i in 1:length(bio)) {
    x <- intake * e.u(t.bio[i],k)
    y <- bio[i]
    sum.y <- sum.y + log( dnorm(y,x,0.1*sqrt(y)) ) }
  return(-sum.y)
}   

b <- mle2(n.log.like,
        start=list(
            intake=intake.guess,
            k=rc.guess),
        data=list(
            t.bio=t.bio,
            bio=bio),
        method="Nelder-Mead",
        skip.hessian=FALSE)

intake <- coef(summary(b))[1,1]         
rc <- coef(summary(b))[2,1]         
summary(b)

#Scatter plot
bio.p <- numeric(n)
x <- 1:n
for (i in 1:n) { bio.p[i] <- intake * e.u(x[i],rc) }
plot(x,bio.p,type="l",log="xy",main="",
     xlab="Days After Intake",ylab="Excretion")
points(t.bio,bio)

#I want to generate a confidence interval on the regression line
bio.hat <- predict(b)

您可能需要尝试以下资源:

https://stat.ethz.ch/R-manual/R-patched/library/stats/html/predict.lm.html

有一个se.fit参数与predict()一起传递。 如果为TRUE ,它将计算SE。 我没有尝试过。

另一种方法是使用library(ggplot2) ,通过其中一个参数,您可以将置信度水平自动覆盖在绘图上。 一个例子,

c <- ggplot(mtcars, aes(qsec, wt))
c + stat_smooth(se = TRUE) + geom_point()

这将在绘图周围放置一个带以指示置信区间。 se默认设置为TRUE。

参考: http : //svitsrv25.epfl.ch/R-doc/library/ggplot2/html/stat_smooth.html

第三,您可以计算置信区间,并通过设置par(new = TRUE)覆盖图。 这可能很麻烦,但仍然可行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM