Ошибка в uniroot(LR, c(xmin, mean(x)), lambda = lambda): Знак f() на краю полюса не противоположен
Продолжайте с вопросом Как определить функцию f_n-chi-square и использовать uniroot для определения доверительного интервала?
я сначала получу свой
f_n
следующим образом.
set.seed(201111)
theta_seq = seq(from = 3, to = 16, by = 0.01)
f_n = rep(NA, length(theta_seq))
# I define function h, and use unifoot function to find lambda
h=function(lam, n)
{
sum((x-theta)/(1+lam*(x-theta)))
}
f_n = rep(NA, length(theta_seq))
i = 1
x = rlnorm(100, 0, 2)
n=100
xmax=max(x)
xmin=min(x)
for (theta in theta_seq)
{
lambda = uniroot(h, c((1/n-1)/(xmax-theta),(1/n-1)/(xmin-theta)),n=n)$root
f_n[i] = -sum(log(1+lambda*(x-theta)))
i = i+1
}
plot(theta_seq, f_n, type = "l")
Сюжет таков.
я пытаюсь использовать
uniroot
для решения 95% CI следующим образом. Этот 95% ДИ должен быть закрытым интервалом. Но одно уравнение показывает
NA
LR <- function(theta, lambda)
{
2*sum(log(1 + lambda*(x - theta))) - qchisq(0.95, df = 1)
}
lambdamin <- (1/n-1)/(xmax - mean(x))
lambdamax <- (1/n-1)/(xmin - mean(x))
lambda <- uniroot(h, interval = c(lambdamin, lambdamax), n = n)$root
Следующее уравнение не имеет решения. Это показывает
Error in uniroot(LR, c(xmin, mean(x)), lambda = lambda) : The sign of f() at the pole edge is not opposite
uniroot(LR, c(xmin, mean(x)), lambda = lambda)$root
И я могу решить
uniroot(LR, c(mean(x), xmax), lambda = lambda)$root
#11.61389