【发布时间】:2018-01-11 01:26:26
【问题描述】:
我需要用非分析模型拟合 x-y 数据。我有一个函数f(x) 以数值方式计算每个x 的模型,但没有解析方程。为了拟合,我在 R 中使用optim。我最小化模型和数据之间的 RMS。它运行良好并返回合理的参数。
我想找到最佳拟合参数的置信区间(或至少是标准误)。我在互联网上发现这可以从 Hessian 矩阵中完成,但前提是最大化对数似然函数。我不知道该怎么做,我只有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% 置信区间。
【问题讨论】:
-
如果没有(简单的)可能性分析表达式,您可能最好使用(非参数)引导程序。计算从 x 替换采样的许多不同 x* 的 f(x*)。
-
如何从引导程序中找到置信区间?我的定义不是很清楚,我适合数据的函数是 f(x; a, b, c),其中 a, b 和 c 是模型参数。
-
我已经把它变成了一个完整的答案。希望这更有帮助(假设您使用标准符号
y作为结果,x作为数据,f(x)是某种估计器,a,b,c是独立模型参数(例如迭代次数)不依赖于x)。