Проблема с GLM регрессировать на произведение одной числовой переменной и одной категориальной переменной - PullRequest
0 голосов
/ 29 ноября 2018

Я хотел бы выполнить логистическую регрессию для следующей модели:

regression <- Y ~ 
netSales + size + CashAssetRatio + FRNG + 
  I(insolvency * countryCode)

Со следующим кодом:

tbmodel <- glm(regression, data=trainSplit, 
               weights=NULL, binomial(link = "logit"), 
           na.action=na.omit) 
###### REPRENDRE ICI APRES PAUSE

Однако, когда я вычисляю регрессию, я получаю следующееошибка:

Ошибка в contrasts<- (*tmp*, значение = contr.funs [1 + isOF [nn]]): les contrastes ne peuvent être appliqués qu'aux facteurs ayant au moins deuxniveaux Дополнительно: предупреждающее сообщение: In Ops.factor (несостоятельность, countryIsoCode): '*' не имеет значения для факторов

Дело в том, что я не знаю, откуда это могло произойти, потому что моя переменная countryCodeэто фактор с более чем 2 уровнями, и у меня нет NA.Вот некоторые данные:

             countryCode insolvency  netSales Y size CashAssetRatio         FRNG
47091             FR       0.0491 -0.04042249 0  2       1.123095       -0.001679786
24460             IT       0.0115 -0.04343820 0  1       1.078720       -0.001130815
11921             FR       0.0029 -0.04227984 0  2       1.076595       -0.001097954
1657              FR       0.0016 -0.04242885 0  2       1.075237       -0.001075071
37572             IT       0.0006 -0.04355702 0  1       1.077884       -0.001122143
8155              FR       0.0270 -0.04058710 0  2       1.076638       -0.001067854

У вас есть идея?Спасибо

1 Ответ

0 голосов
/ 29 ноября 2018

Согласно? Формуле

Хотя формулы обычно включают только имена переменных и факторов, они также могут включать арифметические выражения.Формула log (y) ~ a + log (x) вполне законна.Когда такие арифметические выражения включают операторы, которые также символически используются в формулах модели, может возникнуть путаница между использованием арифметических и символических операторов.

Чтобы избежать этой путаницы, функцию I () можно использовать для скобки этих частеймодельная формула, где операторы используются в их арифметическом смысле.Например, в формуле y ~ a + I (b + c) термин b + c следует интерпретировать как сумму b и c.

Таким образом, ваша формула в письменном виде буквальнопросят умножения.Поскольку вы хотите итерацию, удалите I().

...