Я выполняю нелинейную регрессию с mle2 в R, и я хочу создать 95% -ную точную полосу доверия вокруг кривой наилучшего соответствия. Ниже приведен упрощенный пример того, что я пытаюсь сделать, когда я пытаюсь использовать прогноз для объекта mle2 fit. Любые предложения о том, как это сделать?Доверительный интервал для линии регрессии mle2
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)
это не будет работать так хорошо для общего соответствия MLE. Bootstrapping, вероятно, самый простой способ пойти, если проблема действительно большая/тяжелая. –
Я закончил тем, что использовал бутстрап, предложенный Беном Болкером. – user1930565