smooth.spline в glm с NA в наборе данных - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь использовать преобразование smooth.spline для моих объясняющих переменных в glm (логит регрессия). Я получаю сообщение об ошибке, потому что smooth.spline не может работать с NA.

Вот мой код:

LogitModel <- glm(dummy~ smooth.spline(A) + B + C
                          ,family = binomial(link = "logit"), data = mydata)

Как я могу справиться с этим (без изменения mydata?)

1 Ответ

0 голосов
/ 24 сентября 2018

Вы можете использовать обобщенные аддитивные модели (GAM), которые включают сплайны естественным образом. Например, вы можете использовать пакет gam, поскольку в качестве побочного эффекта они обрабатывают NA. Пожалуйста, смотрите код ниже:

library(gam)
set.seed(123)
data(kyphosis)

# simulation of NA
NAs <- matrix(c(sample(81, 4), 1:4), byrow = FALSE, ncol = 2)
kyphosis_NA[NAs] <- NA

# gam
m_NA <- gam(Kyphosis ~ s(Age,4) + Number + Start, family = binomial, data=kyphosis_NA)
summary(m_NA)

Выход:

Call: gam(formula = Kyphosis ~ s(Age, 4) + Number + Start, family = binomial, 
    data = kyphosis)
Deviance Residuals:
     Min       1Q   Median       3Q      Max 
-2.21622 -0.50581 -0.24260 -0.06758  2.36573 

(Dispersion Parameter for binomial family taken to be 1)

    Null Deviance: 83.2345 on 80 degrees of freedom
Residual Deviance: 53.452 on 74 degrees of freedom
AIC: 67.452 

Number of Local Scoring Iterations: 9 

Anova for Parametric Effects
          Df Sum Sq Mean Sq F value   Pr(>F)   
s(Age, 4)  1  0.037  0.0368  0.0442 0.834140   
Number     1  4.682  4.6816  5.6109 0.020460 * 
Start      1  8.869  8.8694 10.6301 0.001683 **
Residuals 74 61.743  0.8344                    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Anova for Nonparametric Effects
            Npar Df Npar Chisq P(Chi)
(Intercept)                          
s(Age, 4)         3     5.8327   0.12
Number                               
Start 
...