11.7.2 最大似然法
最大似然法(Maximum likelihood)也是一种非线性拟合方法。它甚至可以用在误差非正态的数据中。这种方法估计的参数将会使得对数似然值最大或者负的对数似然值最小。下面的例子来自Dobson (1990), pp. : 108–111。这个例子对剂量-响应数据拟合logistic模型(当然也可以用 glm()
拟合)。数据是:
> x <- c(1.6907, 1.7242, 1.7552, 1.7842, 1.8113, 1.8369, 1.8610, 1.8839)
> y <- c( 6, 13, 18, 28, 52, 53, 61, 60) > n <- c(59, 60, 62, 56, 63, 59, 62, 60)
要使负对数似然值最小,则:
> fn <- function(p)
sum( - (y*(p[1]+p[2]*x) - n*log(1+exp(p[1]+p[2]*x))
+ log(choose(n, y)) ))
我们选择一个适当的初始值,开始拟合:
> out <- nlm(fn, p = c(-50,20), hessian = TRUE)
拟合后,out$minimum
就是负对数似然值,out$estimate
就是最大似然拟合的参数值。为了得到拟合过程近似的标准误,我们可以:
> sqrt(diag(solve(out$hessian)))
参数估计的95%信度期间可由估计值 $\pm1.96 SE$ 计算得到。