Ошибка в 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

0 ответов

Другие вопросы по тегам