2013-10-07 9 views
2

Я использую набор данных Titanic от Kaggle и хочу изучить простую модель логистической регрессии.не удалось применить изученную модель для проверки данных в R

я прочитал в данных поездов и испытаний, и оба train$Survived, train$Sex, test$Survived и test$Sex являются факторами.

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

fit <- glm(formula = Survived ~ Sex, family = binomial) 

кажется, все в порядке со мной:

> fit 

Call: glm(formula = Survived ~ Sex, family = binomial) 

Coefficients: 
(Intercept)  Sexmale 
     1.057  -2.514 

Degrees of Freedom: 890 Total (i.e. Null); 889 Residual 
Null Deviance:  1187 
Residual Deviance: 917.8 AIC: 921.8 

Проблема, я не могу применить это узнал модель для данных испытаний. Когда я делаю следующее:

predict(fit, train$Sex) 

Я получаю вектор с 891 значениями которых является количество обучающих примеров в обучающем наборе.

Кажется, я не могу найти информацию о том, как это сделать правильно.

Любая помощь была бы принята с благодарностью!

+2

В коде 'fit', где находятся данные?' Pred (fit, newdata = test) 'будет выполнять эту работу. – Metrics

+0

Спасибо, это сработало! Это не упоминается в документации для прогнозирования и только в предсказуемом прогнозе. ... Предсказание, похоже, выводит поплавки, хотя и не «метки», которые изначально использовались для изучения модели. Есть ли способ исправить это? (получается мой поезд $ Выжил тип целого числа ... позвольте мне попробовать с факторами ...) Не повезло, все еще плавает как результат ... – dreamwalker

+1

Да, вы должны использовать 'pred.glm' для этого. Я пропустил '.glm'. Простите за это. – Metrics

ответ

2

Я отправляю ответ, чтобы исправить пару моментов, которые, похоже, запутались. Там действительно нет predict -функция как таковая. Именно это означает, что страница справки говорит, что «предсказывать» является «общей функцией». Иногда общие функции имеют метод fun.default, но в случае predict.* метод по умолчанию отсутствует. Таким образом, отправка производится на основе класса первого аргумента. Будут отдельные страницы справки для каждого метода, а на странице справки для «предсказания» перечислены несколько. Авторы пакета должны написать собственные методы прогнозирования для новых классов.

Логистическая регрессия предшествует парадигме машинного обучения, поэтому ожидание «предсказания классов» несколько нереалистично. Даже тот факт, что вы можете получить «ответное» предсказание, является подарком того, что программное обеспечение предоставило бы 30 лет назад, когда некоторые из нас принимали наши классы регрессии. Нужно понимать, что вероятности, как правило, не равны 0 или 1, а что-то среднее между ними. Если пользователь хочет установить пороговое значение и определить, сколько случаев превышает пороговое значение, то это решение аналитика, и аналитики должны делать какие-либо преобразования в категориях, которые они считают целесообразными.

Выполнение: predict(fit, train$Sex), как ожидается, даст результат, который был до тех пор, пока были значения из набора для обучения, поэтому я предполагаю, что вы, возможно, решили попробовать predict(fit, test$Sex) и были разочарованы. Если это так, то это должно было быть: predict(fit, list(Sex=test$Sex)). R требует, чтобы аргумент был значением, которое может быть принудительно применено к фреймворку данных, поэтому именованный список значений является минимальным требованием для predict -ors.

Если predict.glm получает неверный аргумент во втором аргументе, newdata, он возвращается к исходному аргументу данных и использует линейные предиктора, которые сохраняются в объекте модели.