Как обработать отсутствующие особенности данных в выводе R GLM - PullRequest
0 голосов
/ 19 октября 2018

У меня есть набор данных с рядом наблюдений, к каждому из которых добавлены внешние данные из разных источников.Некоторые из этих наблюдений (учетных записей) имеют данные для одного источника данных, но отсутствуют в другом источнике данных.Я сделал пример набора данных для объяснения:

df <-data.frame(Account =c("A","B","C","D","E","F","G","H"), 
       Exposure = c(1,50,67,85,250,25,22,89),
       CreditScore=c("Missing","High","Missing","Low","Low","Low","High","High"),
       CreditScore2=c("Missing","Low","Missing","High","Low","High","High","Low"),
       CreditScore3=c("Missing","Low","Missing","High","High","High","Low","High"),

       Losses = c(100000,100,2500,100000,25000,0,7500,5200),
       LossPerUnit = c(100000,100,2500,100000,25000,0,7500,5200)/c(1,50,67,85,250,25,22,89))



> df
  Account Exposure CreditScore CreditScore2 CreditScore3 Losses  LossPerUnit
1       A        1     Missing      Missing      Missing 100000 100000.00000
2       B       50        High          Low          Low    100      2.00000
3       C       67     Missing      Missing      Missing   2500     37.31343
4       D       85         Low         High         High 100000   1176.47059
5       E      250         Low          Low         High  25000    100.00000
6       F       25         Low         High         High      0      0.00000
7       G       22        High         High          Low   7500    340.90909
8       H       89        High          Low         High   5200     58.42697

Для этого примера у меня отсутствуют данные по кредитным баллам для 2 клиентов, поэтому уровни будут отсутствовать.

Это категориальная переменная, которая имеет 3 уровня: «Высокий», «Низкий» и «Отсутствующий». Я получу сингулярности для всех, кроме одного уровня «Отсутствующий».Представьте, что у меня 1000 наблюдений, и в 100 моих наблюдениях отсутствуют данные из этого источника данных, поэтому любые переменные, которые я прикрепляю к этому набору данных, будут иметь «пропущенное» значение.

Я не хочу избавляться отпропущенные данные, и я не обязательно думаю, что вменение среднего значения - лучшая идея, потому что разница в размере каждого аккаунта может сильно варьироваться.

Мой главный вопрос заключается в следующем: плохо ли, если мой вывод GLMдает мне особенности только для отсутствующих уровней данных в категориальной (факторной) переменной?Могу ли я доверять оценкам других непропущенных переменных уровней?

 ModelingVars <- 
 as.formula(LossPerUnit~CreditScore+CreditScore2+CreditScore3)


 Model <- glm(ModelingVars, family=tweedie(var.power=1.5, link.power = 0),
         weight = Exposure, data = df)
 summary(Model)

Call:
glm(formula = ModelingVars, family = tweedie(var.power = 1.5, 
    link.power = 0), data = df, weights = Exposure)

Deviance Residuals: 
      1        2        3        4        5        6        7        8  
 89.041  -20.428  -85.956   10.654    4.019  -55.748    9.898    0.000  

Coefficients: (2 not defined because of singularities)
                    Estimate Std. Error t value Pr(>|t|)
(Intercept)           6.4160    10.9395   0.587    0.599
CreditScoreLow        0.4570    10.2655   0.045    0.967
CreditScoreMissing    0.9021    11.8772   0.076    0.944
CreditScore2Low      -2.3482     6.0529  -0.388    0.724
CreditScore2Missing       NA         NA      NA       NA
CreditScore3Low      -1.0743    14.1432  -0.076    0.944
CreditScore3Missing       NA         NA      NA       NA

(Dispersion parameter for Tweedie family taken to be 56487.79)

    Null deviance: 36790  on 7  degrees of freedom
Residual deviance: 19069  on 3  degrees of freedom
AIC: NA

Number of Fisher Scoring iterations: 6

Спасибо за любые идеи, которые вы можете предоставить.

...