2016-11-07 3 views
0

У меня есть два кадра данных:Значения «кэшируются», что приводит к сбою логистической регрессии?

df_bad

die_y бин

1 11 JD

2 13 Я

df_good

die_y бин

1 11 JD

-13 Я

Я бег логистической регрессии:

model_lr < - поезд (бен ~, данные = df_bad, метод = 'GLM', семейство = 'бином.)

model_lr < - поезд (. ~ бен, данные = df_good, метод = 'GLM', семейство = 'биномиальное')

Второй успешно (она была создана непосредственно)

< df_good - data.frame (die_y = C (11, 13), bin = as.factor (c ('JD', 'I')))

Первый сбой (он был разрезан из большего кадра данных) с ошибкой: Один или несколько уровней факторов в результатах не имеют данных: BA ',' dU ',' other ',' TT ',' XD '

Поскольку мне кажется, что кадры данных идентичны, как алгоритм знает какие-либо другие значения фактора потенциала, которые не находятся в данные? Весь этот беспорядок начался с ошибок в исходных данных, поэтому я решил, что попытаюсь собрать исходные данные до рабочего массива данных и оттуда, за исключением того, что алгоритм «помнит» то, что у меня было, и использовал это как еще одно оправдание неудача , Даже удаление исходных исходных данных не изменяет результат. Что дает? Как я могу заставить алгоритм забыть, что было раньше? TIA

+3

Прочтите 'help (" droplevels ")'. – Roland

+1

Dataframes сохраняют все уровни ваших факторов в них, даже если у вас нет случаев для каждого уровня. Как сказал Роланд, используйте капельки. –

+0

Большое спасибо, - добавил следующий код: df_bad <- droplevels (df_bad) и работал – kmccarty

ответ

1

Добавлен код: df_bad < - droplevels (df_bad)

и работает!

+0

При создании подмножества, запустите 'Str()', чтобы увидеть, что происходит у вас в новом подмножестве! – sconfluentus

Смежные вопросы