Исключение переменных предикторов и сравнение методов классификации, чтобы найти лучшую модель - PullRequest
0 голосов
/ 22 апреля 2020

В настоящее время я работаю с набором данных с бинарной переменной ответа с 2 уровнями. У меня есть около 32 переменных предиктора - некоторые факторы и некоторые цифры c. Я использовал glm и, основываясь на значениях p, удалил некоторые переменные предиктора, которые, на мой взгляд, были незначительными. Однако, когда я запускаю тест на отклонение, я всегда получаю ноль, и моя кривая RO C переворачивается вверх ногами - это можно исправить, поместив TPR на ось x, но я думаю, что это неверно.

Может кто-нибудь предоставить какие-либо предложения о том, что я мог бы делать неправильно? Спасибо миллион!

Код ниже представляет категории, которые я считаю значительными. Все они категоричны.

data_analysis <- glm(PainDiagnosis~PainLocation+Criterion2+Criterion6+Criterion8+
Criterion9+Criterion13, data=dat, family="binomial") summary(data_analysis) coef(data_analysis) anova(data_analysis, test="Chisq")
resDev_glm <- residuals(fit_glm, type = "deviance")
testDev_glm <- sum(resDev_glm^2)
modMat_glm <- model.matrix(fit_glm) # model matrix
NO_glm <- nrow(unique(modMat_glm)) # number of unique observations
m_glm <- length(fit_glm$coefficients) # number of parameters
nrow(dat)
NO_glm
testDev_glm
1 - pchisq(testDev_glm, NO_glm-m_glm)
library(ROCR)
predObj <- prediction(fitted(fit_glm), dat$PainDiagnosis)
perf <- performance(predObj, "tpr", "fpr")
plot(perf)
abline(0,1, col = "darkorange2", lty = 2) # add bisect line

2L, 2L, 1L, 1L, 1L, 1L), .Label = c ("Female", "Male"), класс = "фактор"), DurationCurrent = структура (c (5L, 4L, 5L, 6L, 2L, 3L, 6L, 6L, 6L, 2L, 3L, 6L, 2L, 4L, 1L, 4L, 3L, 2L, 4л, 6л, 6л, 6л, 6л, 4л, 6л, 6л, 3л, 5л, 3л, 3л, 4л, 5л, 6л, 6л, 2л, 3л, 5л, 4л, 6л, 5л, 4л, 5л, 6л, 6л, 5л, 6л, 3л, 6л, 4л, 6л, 2л, 4л, 2л, 6л, 3л, 2л, 5л, 3л, 3л, 6л, 2л, 5л, 4л, 6л, 2л, 1л, 4л, 6л, 6л, 2л, 6л, 3л, 4л, 4л, 3л, 2л, 3л, 3л, 3л, 5л, 6л, 5л, 2л, 6л, 5л, 6л, 5л, 5л, 4л, 3л, 5л, 6л, 6л, 3л, 3л, 3л, 3л, 6л, 4л, 5л, 2л, 3л, 5л, 4л, 4л, 4л, 6л, 6л, 2л, 6л, 4л, 3л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 5л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 4л, 5л, 3л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 5л, 6л, 5л, 6л, 4л, 4л, 4л, 1л, 5л, 1л, 6л, 2л, 1л, 2л, 6л, 6л, 5л, 4л, 3л, 6л, 2л, 2л, 2л, 1л, 6л, 6л, 6л, 2л, 6л, 3л, 6л, 6л, 2л, 6л, 1л, 3л, 3л, 5л, 3л, 1л, 2л, 3л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 6л, 1л, 6л, 5л, 6л, 6л, 6л, 1л, 2л, 2л, 5л, 6л, 2л, 6л, 6л, 6л, 4л, 6л, 3л, 2л, 6л, 6л, 6л, 6л, 1л, 1л, 2л, 6л, 6л, 6л, 3л, 6л, 6л, 4л, 6л, 6л, 1л, 3л, 6л, 4л, 2л, 6л, 4л, 6л, 6л, 2л, 3л, 6л, 3л, 2л, 2л, 6л, 3л, 6л, 6л, 5л, 1л, 3л, 1л, 4л, 4л, 6л, 6л, 1л, 6л, 1л, 4л, 6л, 6л, 6л, 6л, 6л, 6л, 5л, 6л, 6л, 3л, 6л, 6л, 3л, 6л, 6л, 5л, 6л, 6л, 5л, 6л, 5л, 6л, 6л, 3л, 6л, 6л, 6л, 4л, 6л, 6л, 6л, 6л, 6л, 6л, 3л, 5л, 6л, 5л, 4л, 6л, 6л, 6л, 5л, 4л, 5л, 6л, 2л, 2л, 4л, 6л, 6л, 4л, 6л, 4л, 6л, 4л, 6л, 6л, 3л, 4л, 2л, 3л, 5л, 6л, 2л, 6л, 2л, 3л, 2л, 2л, 4л, 2л, 5л, 4L, 4L, 5L, 6L, 3L, 5L, 3L, 1L, 6L, 6L, 4L, 4L, 2L, 4L, 4L, 6L, 6L, 5L, 1L, 6L, 2L, 6L, 2L, 1L), .Label = c ("0-3 недели", "4-6 недель", "7-12 недель", "4-6 месяцев", "7-12 месяцев", "> 1 год"

...