手动计算饱和模型的系数

时间:2018-02-26 15:04:01

标签: r regression matrix-multiplication poisson

我想用手计算一个空模型,饱和模型和一个泊松回归的建议模型。为此,我设计了一个loglikelihood函数,并使用optim函数对其进行优化。它适用于null和建议的模型。为了计算saturatetd模型的系数,我得到一个错误:“beta%*%t(x)中的错误:不一致的参数”。我知道错误意味着什么(矩阵的​​尺寸不适合),但我不知道如何解决它,也许你可以帮忙。

data <- as.data.frame(warpbreaks)

# Function for loglikelihood

LogLike <- function(y,x, par) {
  beta <- par
  # the deterministic part of the model:
  lambda <- exp(beta%*%t(x))
  # and here comes the negative log-likelihood of the whole dataset, given  the
  # model:
  LL <- -sum(dpois(y, lambda, log = TRUE))
  return(LL)
} 
formula <- breaks~wool+tension

form <- formula(formula)

#  dataFrame 
model <- model.frame(formula, data = data)

#  Designmatrix for proposed modell
x <- model.matrix(formula,data = data)

# Response Variable 
y <- model.response(model)

# modelMatrix for null Modell 
x1 <- as.matrix(x[,1])

# Computation Koef nullmodell
par1 <- rep(0,1)
koef <- round(optim(par=par1,fn=LogLike,x=x1,y=y)$par,4)
koef

# Computation koef proposed Modell
par2 <- rep(0,ncol(x))
koef2 <- round(optim(par=par2,fn=LogLike,x=x,y=y)$par,4)
koef2

# Computation koef saturated Modell
par3<- rep(0,length(y))
koef3 <- round(optim(par=par3,fn=LogLike,x=x,y=y)$par,4)
koef3

1 个答案:

答案 0 :(得分:0)

饱和模型是具有许多参数作为数据点的模型。你需要构建这样一个x矩阵,一切都应该有效。到目前为止,x是54x4矩阵,而它应该是54x54。

---建议(FWIW)

避免将函数的名称用作变量(在您的情况下为betapar)。

希望这会有所帮助。