-2
我做牛顿拉夫森逻辑回归的代码。不幸的是,我尝试了很多数据,没有收敛。有一个错误,我不知道它在哪里。任何人都可以帮助弄清楚是什么问题。牛顿拉夫森逻辑回归
首先数据如下; y表示响应(0,1),Z表示115 * 30矩阵,它是探索性变量。我需要估计30个参数。
y = c(rep(0,60),rep(1,55))
X = sample(c(0,1),size=3450,replace=T)
Z = t(matrix(X,ncol=115))
#The code is ;
B = matrix(rep(0,30*10),ncol=10)
B[,1] = matrix(rep(0,30),ncol=1)
for(i in 2 : 10){
print(i)
p <- exp(Z %*%as.matrix(B[,i]))/(1 + exp(Z %*% as.matrix(B[,i])))
v.2 <- diag(as.vector(1 * p*(1-p)))
score.2 <- t(Z) %*% (y - p) # score function
increm <- solve(t(Z) %*% v.2 %*% Z)
B[,i] = as.matrix(B[,i-1])+increm%*%score.2
if(B[,i]-B[i-1]==matrix(rep(0.0001,30),ncol=1)){
return(B)
}
}