Функция ANOVA при сравнении логистических моделей не имеет значения p для отклонения

Я работаю с набором данных биопсии из библиотеки MASS в R. Я нахожусь на начальных этапах создания модели логистической регрессии, чтобы увидеть, какие переменные влияют на вероятность наличия злокачественной опухоли. Я удалил все строки с недостающими данными (около 16 наблюдений). Все переменные значимы сами по себе, поэтому я начал с наиболее полной модели, в которую были включены все переменные, и третья переменная (V3 - Однородность размера ячеек) была наименее значимой в этой максимально полной модели.

Я создал другую модель с удаленным V3. Затем я хотел использовать функцию anova (), чтобы увидеть, есть ли существенная разница в подгонке двух моделей. Тем не менее, я не получил p-значения из моего теста анова. Означает ли это, что значение p почти равно 1? Я сделал ошибку где-то в настройке моей модели?

Любой вклад приветствуется!

#post removal of rows with missing data from biopsy in library(MASS)     
relevel(biopsy$class, ref = "malignant")
#assigns value of interst to malignant instead of benign. 
fullest.model = glm(biopsy$class~biopsy[,2]+biopsy[,3]+biopsy[,4]+biopsy[,5]+
                  biopsy[,6]+biopsy[,7]+biopsy[,8]+biopsy[,9]+biopsy[,10]
                ,family = binomial(link = "logit"))
model1 = glm(biopsy$class~biopsy[,2]+biopsy[,4]+biopsy[,5]+
           biopsy[,6]+biopsy[,7]+biopsy[,8]+biopsy[,9]+biopsy[,10]
         ,family = binomial(link = "logit"))
anova(model1, fullest.model)

На выходе получаю:

      Resid. Df Resid. Dev Df   Deviance
1       674     102.89              
2       673     102.89  1 0.00090001

^ Не вижу pvalue !!


person Omar123456789    schedule 05.03.2018    source источник
comment
Отклонение - это показатель, характеризующий общее качество соответствия вашей модели. Это не имеет ничего общего с p-значениями. Вы можете увидеть статистическую значимость (p-значения, доверительные интервалы) ваших переменных-предикторов, если запустите summary(model1).   -  person Maurits Evers    schedule 05.03.2018
comment
Значение p - это проверка гипотезы о том, что сокращенная модель соответствует данным так же хорошо, как и полная модель. Отклонение в этом случае должно соответствовать распределению хи-квадрат с 1 степенью свободы. Функция anova должна давать p-значение отклонения, следующего за этим распределением, но в данном случае этого не происходит по какой-то странной причине.   -  person Omar123456789    schedule 06.03.2018
comment
Нет, это неверно. В общем, p-значение - это вероятность наблюдения данных как экстремальных или более экстремальных, при условии, что нулевая гипотеза верна, то есть p-value = p (data | H_0). Отклонение - это статистика согласия; у него нет p-значения. Вы используете анализ типа ANOVA, чтобы исследовать достоверность двух GLM на основе отклонения. Это не даст p-значение для отклонения (как вы правильно заметили).   -  person Maurits Evers    schedule 06.03.2018
comment
Если вы хотите выполнить тест отношения правдоподобия своих моделей (где нулевая модель соответствует сокращенной модели), вам необходимо указать правильный тест гипотезы; например anova(model1, fullest.model, test="Chisq") вычислит статистику теста отношения правдоподобия с распределением хи-квадрат, а также вероятность того, что статистика теста будет экстремальной или более экстремальной (ваше значение p). Это может быть то, что вам нужно.   -  person Maurits Evers    schedule 06.03.2018
comment
Я добавил пример ниже, пожалуйста, посмотрите.   -  person Maurits Evers    schedule 06.03.2018
comment
Спасибо за ваш вклад и пример!   -  person Omar123456789    schedule 06.03.2018
comment
Нет проблем @ Omar123456789, рад помочь!   -  person Maurits Evers    schedule 06.03.2018


Ответы (1)


  1. Мы генерируем некоторые образцы данных, предполагая, что GLM y = 0.5 * x1 + 4 * x2.

    # Generate some sample data
    x1 <- 1:100;
    x2 <- gl(2, 50, 100);
    set.seed(2017);
    y <- 0.5 * x1 + 4 * as.numeric(x2) + rnorm(100);
    
  2. Теперь нам подходят две модели:

    • fit1 estimates coefficients for model y = beta0 + beta1 * x1,
    • fit2 оценивает коэффициенты для модели y = beta0 + beta1 * x1 + beta2 * x2.

    # Fit two models
    fit1 <- glm(y ~ x1 + x2);
    fit2 <- glm(y ~ x1);
    
  3. Выполните анализ ANOVA.

    # Default ANOVA (note this does not perform any hypothesis test)
    anova(fit1, fit2);
    #Analysis of Deviance Table
    #
    #Model 1: y ~ x1 + x2
    #Model 2: y ~ x1
    #  Resid. Df Resid. Dev Df Deviance
    #1        97     112.11
    #2        98     213.39 -1  -101.28
    
    # ANOVA with likelihood ratio test
    anova(fit1, fit2, test = "Chisq");
    #Analysis of Deviance Table
    #
    #Model 1: y ~ x1 + x2
    #Model 2: y ~ x1
    #  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)
    #1        97     112.11
    #2        98     213.39 -1  -101.28 < 2.2e-16 ***
    #---
    #Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    

    Обратите внимание, что первое сравнение ANOVA не выполняет никаких проверок гипотез. Он просто вычисляет изменение отклонения между двумя моделями. Второй анализ ANOVA anova(..., test = "Chisq") выполняет тест отношения правдоподобия (он такой же, как anova(..., test = "LRT")), вычисляя вероятность наблюдения статистики распределенного теста хи-квадрат (т. Е. изменение в отклонении) как экстремальное или большее. крайний. Эта последняя величина соответствует p-значению вашей проверки гипотезы.

  4. Наконец, взгляните на эту ссылку. Он предоставляет более подробную информацию о том, как выполнять и интерпретировать результаты анализа ANOVA.

person Maurits Evers    schedule 05.03.2018