R- Калибровочный график, соответствующий логистической калибровочной кривой - плохо откалиброванный или графическое уравнение регрессии? - PullRequest
0 голосов
/ 25 октября 2019

В настоящее время я пытаюсь разработать и откалибровать модель, используя процедуру перекрестной проверки для определения значений лямбда и альфа в регрессии эластичной сетки, используя glmnet. Переменная результата является двоичной (asd) с множеством факторных и нефакторных кандидатов, независимых предикторов.

# Define factors
  xfactors <- model.matrix(asd~sex+asa+smoke+c5over12+c7over12, data3)[,-1]

# Combine with non-factor variables
  x <- data.matrix(data.frame(data3$age, data3$bmi, data3$fumonths, data3$dosym, data3$lordpre, 
       data3$lordpost, data3$lordfinal, data3$svapre, data3$svapost, data3$svafinal, 
       data3$fusepre, data3$fusepost, data3$fusefinal, data3[,48:110], xfactors))

# Define outcome
  y <- as.factor(data3$asd)

# Cross-validation to ID alpha & lambda
  set.seed(123)
  registerDoParallel(cores = 4)

  a <- seq(0, 1, 0.01)

  search <- foreach(i = a, .combine = rbind) %dopar% {
          cv.net <- cv.glmnet(x, y, family = "binomial", nfolds = 10, type.measure = 
          "deviance", paralle = TRUE, alpha = i)
          data.frame(cvm = cv.net$cvm[cv.net$lambda == cv.net$lambda.min], lambda.min = 
          cv.net$lambda.min, alpha = i)
  }

  cv3 <- search[search$cvm == min(search$cvm), ]

#Model built with cross-validated selected alpha and lambda
  model <- glmnet(x, y, family = "binomial", lambda = cv3$lambda.min, alpha = cv3$alpha)

Однако при попытке калибровать модель по обучающим данным, используя predict

# Get probabilities for training set
  mypred <- predict(model, type="response", s=cv3$lambda.min, newx=x)

# Define calibration & plot
  v <- val.prob(mypred, data3$asd, m=4, cex=.5)
  plot(v)

Я получаю следующую кривую:

Я пытаюсь понять, почему график фактических и прогнозируемых вероятностей принимает логарифмическую зависимость (кажется, что это график общего уравнения регрессии? ). Есть ли в моем коде ошибка или модель просто плохо откалибрована?

...