Multiple Logisti c Регрессионный анализ - что является причиной очень высокого дельта AI C среди моделей? - PullRequest
1 голос
/ 11 апреля 2020

Я имею дело с биологией саламандр и ищу климатические переменные c и геоморфологию, которые лучше (в достаточной мере) объясняют их присутствие / отсутствие в этом районе. У меня 1855 пикселей с присутствием саламандры и 104760 без их присутствия, и мои климатические переменные c и геоморфология охватывают всю эту область (все эти пиксели). Я применяю Multiple Logisti c Регрессионный анализ в R на основе glm (). Мультиколлинеарность моих моделей кажется приемлемой (переменные VIF <3), однако значения AI C моих моделей высоки (18272,47, 17576,52, 17391,83, 17087,87, 17026,07) и, к сожалению, также и дельты AI C (61,79 365,76, 550,44, 1246,40). Я больше «биолог саламандры», чем статистик. Могу ли я попросить совета или рекомендации? Большое спасибо </p>

1 Ответ

1 голос
/ 11 апреля 2020

У вас высокий AI C и дельта AI C, потому что у вас много наблюдений.

AI C полезно только при сравнении моделей для одного и того же набора данных. Сам по себе AI C ничего не значит. Формула для AI C (начиная с wiki ):

2k - 2log (logLikelihood of Model), где k - количество предполагаемых параметров.

Таким образом, чем больше у вас наблюдений, тем больше logLik модели. Например (ниже отклонения -2 * logLik):

data = iris
data$Species = factor(ifelse(data$Species=="versicolor","v","o"))
fit_full = glm(Species ~ .,data=data,family="binomial")
summary(fit_full)[c("aic","deviance")]
$aic
[1] 155.0697

$deviance
[1] 145.0697

Мы подходим к подсети 50:

fit_50 = glm(Species ~ .,data[sample(nrow(data),50),],family="binomial")
summary(fit_50)[c("aic","deviance")]
$aic
[1] 106.369

$deviance
[1] 96.36902

Один из способов проверить это - сделать анову, anova(fit_full,test="Chisq"), чтобы проверить, сильно ли влияет любая из ваших независимых переменных. Еще одна вещь, которую вы можете сделать, это посмотреть, правильно ли вы предсказываете метки:

pred_labels = ifelse(predict(fit_full,type="response")>0.5,"v","o")
confusionMatrix(table(pred_labels,data$Species))$overall
      Accuracy          Kappa  AccuracyLower  AccuracyUpper   AccuracyNull 
     0.7400000      0.3809524      0.6621433      0.8081242      0.6666667 
AccuracyPValue  McnemarPValue 
     0.0325328      0.1093146 
...