大概思路是:自变量有11个,都是数值型的。1值的样本是固定的,从900个0值中抽取等量的数据进行逻辑回归。因为样本量比较小,所以做了100次重复抽取,计算回归系数的95%置信区间和显著次数。
然后好几个样本就警告了:
Warning messages:
1: glm.fit:算法没有聚合
2: glm.fit:拟合機率算出来是数值零或一
怀疑是自变量多重共线性,计算了kappa值,如下图。
数据都不怎么好,这是抽样100次的结果,只有samp3的均值在100以下,而高亮的是回归后出现多次不聚合或P=1的样本,好像没有直接关系啊,kappa值高的也有能聚合的,kappa值低的也有不聚合的><
另外,查到说共线性可以用step逐步回归解决的,但是尝试后发现结果还是不聚合啊吐血……
所以想问一下:
1、出现不聚合和拟合概率为0或1的情况,原因是什么?
2、多重共线性应当如何处理?扩大样本量是不现实了,如何判断哪个因子共线性高从而剔除之?
3、感觉11个因子太多了,如何进行模型的筛选和优化?
跪谢!
附上低能程序(好羞耻><)
- for (i in 1:time)
- {
- j <- sample(1:n0,n1,replace = TRUE)
- samp <- samp0[j,]
- data <- rbind(samp1,samp)
- y <- data$y
- x1 <- data$lai1
- x2 <- data$lai2
- x3 <- data$zhu
- x4 <- data$yan
- x5 <- data$density
- x6 <- data$H
- x7 <- data$h
- x8 <- data$K
- x9 <- data$N
- x10 <- data$P
- x11 <- data$organics
- logit <- glm(y~x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11,family=binomial)
-
- for (k in 1:11)
- {
- r[i,k] <- logit$coefficients[k+1]
- P <- summary(logit)$coefficients[k+1,4]
- if (P<0.01){
- P.001[k] <- P.001[k]+1
- }else{
- if(P<0.05){
- P.005[k] <- P.005[k]+1
- }else{
- P.NO[k] <- P.NO[k]+1
- }
- }
- }
- AIC <- c(AIC,AIC(logit))
- BIC <- c(BIC,BIC(logit))
- pR2 <- c(pR2,pR2(logit)[4])
- }