我正在尝试编写自己的函数来了解泊松分布在最大似然估计框架中的行为(因为它适用于 GLM)。
我熟悉 R 的便捷glm
功能,但想尝试手动滚动一些代码以了解发生了什么:
n <- 10000 # sample size
b0 <- 1.0 # intercept
b1 <- 0.2 # coefficient
x <- runif(n=n, min=0, max=1.5) # generate covariate values
lp <- b0+b1*x # linear predictor
lambda <- exp(lp) # compute lamda
y <- rpois(n=n, lambda=lambda) # generate y-values
dta <- data.frame(y=y, x=x) # generate dataset
negloglike <- function(lambda) {n*lambda-sum(x)*log(lambda) + sum(log(factorial(y)))} # build negative log-likelihood
starting.vals <- c(0,0) # one starting value for each parameter
pars <- c(b0, b1)
maxLike <- optim(par=pars,fn=negloglike, data = dta) # optimize
我输入时的 R 输出maxLike
如下:
Error in fn(par, ...) : unused argument (data = list(y = c(2, 4....
我假设我optim
在我的函数中指定错误,但我对 MLE 的具体细节或约束优化不够熟悉,无法理解我缺少什么。