是否有一个特定的原因,为什么R GLM不会返回警告,而anova(glm)呢?

时间:2017-10-23 17:17:36

标签: r glm anova

我想在指定的模型中看到对比:

is_service ~ action_count * document_entropy

完整数据集已加载到代码中。

总体而言,数据如下:

> str(dat)
'data.frame':   6432 obs. of  3 variables:
 $ action_count    : num  0.0759 0.1505 0.1435 0.1535 0.2067 ...
 $ document_entropy: num  -0.667 -0.667 -0.667 -0.667 -0.667 ...
 $ is_service      : int  0 0 0 0 0 0 0 0 0 0 ...

目标列具有此二项分布:

> table(dat$is_service)

   0    1 
6291  141 

输入列是z规范化的并按如下方式分发:

enter image description here

enter image description here

有趣的是,当我适合这个模型(代码的第一部分)时,程序结束时没有警告。

然而,当我与stats::anova(代码的第二部分)形成对比时,它会返回警告。

问题:为什么会发生这种情况,哪个级别更令人担忧:单一模型还是anova分析呢?

list.of.packages <- c('RCurl')
new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
if(length(new.packages)) install.packages(new.packages)

library(RCurl)

x <- getURL("https://rawgit.com/alexmosc/FX_Big_Experiment/master/service_train_saved.csv")
dat <- read.csv(text = x)
dat$X <- NULL

str(dat)
# first part
summary(
     glm(formula = is_service ~ action_count * document_entropy
         , family = binomial(link = 'logit'),
         data = dat
     )
)
# second part
anova(
     glm(formula = is_service ~ 1
         , family = binomial(link = 'logit')
         , data = dat
     )
     , glm(formula = is_service ~ action_count
           , family = binomial(link = 'logit')
           , data = dat
     )
     , glm(formula = is_service ~ action_count + document_entropy
           , family = binomial(link = 'logit')
           , data = dat
     )
     , glm(formula = is_service ~ action_count + document_entropy + action_count:document_entropy
           , family = binomial(link = 'logit')
           , data = dat
     )
     , test = "Chisq"
)

0 个答案:

没有答案