我想手动进行负二项式回归,并定义一个可用于估计任意数量系数的函数。我有
如何获取beta和p值的矩阵,而不必显式地编写每个beta。
对于泊松回归,我成功了,如下面的代码所示:
daten<-warpbreaks
LogLike <- function(y,x, par) {
beta <- par
lambda <- exp(beta%*%t(x))
LL <- -sum(dpois(y, lambda, log = TRUE))
return(LL)
}
PoisMod<-function(formula, data){
form <- formula(formula)
model <- model.frame(formula, data = data)
x <- model.matrix(formula,data = data)
y <- model.response(model)
par <- rep(0,ncol(x))
erg <- list(optim(par=par,fn=LogLike,x=x,y=y)$par)
return(erg)
}
PoisMod(breaks~wool+tension, as.data.frame(daten))
glm(breaks~wool+tension, family = "poisson", data = as.data.frame(daten))
如果是负二项式,该部分的写法
daten<-warpbreaks
LogLike <- function(y,x, par) {
beta <- par
lambda <- exp(beta%*%t(x))
LL <- -sum(dpois(y, lambda, log = TRUE))
return(LL)
}