广义线性模型的响应与预期相反?

时间:2017-04-18 08:09:42

标签: r

我试图使用n次交叉验证来估计逻辑回归分类器的mcr,但是,我得到的结果与我期望的结果相反,而且我是不确定为什么?

这是我完整的R代码:

library(ALL); data(ALL); library(caret)
IsB <- ALL$BT
levels(IsB) <- c(rep(TRUE, 5), rep(FALSE, 5))

ALL.names <- ALL[c('39317_at', '38018_g_at'),]
expr.data <- t(exprs(ALL.names))
data.lgr <- data.frame(IsB, expr.data)
n <- dim(data.lgr)[1]
index <- 1:n
K <- n
flds <- createFolds(index, k = K)
mcr.cv.raw <- rep(NA, K)
for (i in 1:K) {
  testID <- flds[[i]]
  data.tr <- data.lgr[-testID,]
  data.test <- data.lgr[testID,]
  reg.lgr <- glm(IsB ~ ., data = data.tr, family = binomial(link = 'logit'))
  pred.prob <- predict(reg.lgr, newdata = data.test, type="response")
  pred.B <- (pred.prob > 0.5)
  mcr.cv.raw[i] <- sum(pred.B != data.test$IsB) / length(pred.B)
}
mcr.cv <- mean(mcr.cv.raw)
mcr.cv

运行此代码将输出0.90625,但是,这几乎与我的预期完全相反。我认为问题来自于for循环中生成的pred.prob的值。从逻辑上讲,我假设产生的概率是data.test中的样本被归类为真的概率,但是当查看为pred.b生成的所有值与IsB中的所有值时,您可以看到他们都与人们期望的完全相反:

pred.b:

  [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [11] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [21] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [31] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [41] FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
 [51] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [61] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [71] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [81] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [91] FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
[101]  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE
[111] FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
[121]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE

ISB:

  [1] TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE 
 [11] TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE 
 [21] TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE 
 [31] TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE 
 [41] TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE 
 [51] TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE 
 [61] TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE 
 [71] TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE 
 [81] TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE 
 [91] TRUE  TRUE  TRUE  TRUE  TRUE  FALSE FALSE FALSE FALSE FALSE
[101] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[111] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[121] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

对我的逻辑或代码失败的任何帮助表示赞赏!

0 个答案:

没有答案