Как обработать отсутствующие особенности данных в выводе R GLM
У меня есть набор данных с рядом наблюдений, каждое из которых имеет внешние данные, добавленные к ним из разных источников. Некоторые из этих наблюдений (учетных записей) имеют данные для одного источника данных, но отсутствуют в другом источнике данных. Я сделал пример набора данных, чтобы объяснить:
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
Спасибо за любую информацию, которую вы можете предоставить.