Мне нужно сопоставить данные xy с моделью, которая не является аналитической. У меня есть функция f(x)
, которая численно вычисляет модель для каждого x
, но нет аналитического уравнения. Для подгонки я использую optim
в R. Я минимизирую RMS между моделью и данными. Он работает хорошо и возвращает разумные параметры.
Я хотел бы найти доверительные интервалы (или, по крайней мере, стандартные ошибки) для наиболее подходящих параметров. Я нашел в Интернете, что это можно сделать из матрицы Гессе, но только если максимизировать функцию логарифмического правдоподобия. Я не знаю, как это сделать, все, что у меня есть, это x
, y
и f(x)
, из которых я нахожу RMS. Увы, у меня нет хорошего способа оценить ошибки на y
.
Как я могу найти доверительные интервалы для моих подходящих параметров?
Изменить: возможно, пример в R может помочь объяснить, о чем я прошу. В этом примере используется простая аналитическая функция для подбора данных, в моем реальном случае функция не аналитическая, поэтому я не могу использовать, например, nls
.
set.seed(666)
# generate data
x <- seq(100) / 100
y <- 0.5 * x + rnorm(100, sd = 0.03) + 0.2
# function to fit
f <- function(x, a, b) {
a * x + b
}
# error function to minimise: RMS
errfun <- function(par, x, y) {
a <- par[1]
b <- par[2]
err <- sqrt(sum((f(x, a, b) - y)^2))
}
# use optim to fit the model to the data
par <- c(1, 0)
res <- optim(par, errfun, gr=NULL, x, y)
# best-fitting parameters
best_a <- res$par[1]
best_b <- res$par[2]
Наилучшие параметры подгонки: a = 0,50 и b = 0,20. Мне нужно найти 95% доверительные интервалы для них.
y
как результат,x
как данные,f(x)
как своего рода оценку иa,b,c
как независимые параметры модели (например, количество итераций), которые не зависят отx
) . - person JDL   schedule 08.01.2018