手动负二项式回归

时间:2018-12-10 15:00:00

标签: r regression glm

我想手动进行负二项式回归,并定义一个可用于估计任意数量系数的函数。我有

如何获取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)
    }

0 个答案:

没有答案