2016-11-21 2 views
0

Я только что начал изучать R и работал над набором данных, который имеет 1470 случаев. Имя набора данных - ABC. Используя as.factor, я превратил категориальные переменные в качестве факторов.Функция glm не принимает правильный набор данных

Dept_1 <- as.factor(ABC$Dept) 
Education_1 <- as.factor(ABC$Education) 
BusinessTravel_1 <- as.factor(ABC$BusinessTravel) 

После этого я разделить набор данных на поезд и test.Number случаев как для поезда и тестовых данных кажется идеальным. Затем я использую функцию GLM используя синтаксис ниже

fit = glm(attrition~Dept_1+Education_1+BusinessTravel_1,binomial(link="logit"),train) 

Fit пробегов уравнения, но он запускается на выполнение по всему набору данных ABC с 1470 случаями вместо поезда набора данных 1028 записей.

Невозможно понять, в чем проблема.

+0

результат тусклых (поезд) и тусклый (тест) верны? –

+0

упомянуть «данные = поезд» ... а также показать код, используемый для разделения –

ответ

3

Когда вы сделаете это:

Dept_1 <- as.factor(ABC$Dept) 
Education_1 <- as.factor(ABC$Education) 
BusinessTravel_1 <- as.factor(ABC$BusinessTravel) 

вы на самом деле создаете три новые переменные в глобальной среде, а не в оригинальной рамке ABC данных. Из-за этого, когда вы разделите ABC на тренировочные и тестовые образцы, новые переменные не будут затронуты.

Когда вы идете, чтобы соответствовать моделям, вашего glm вызова

fit = glm(attrition~Dept_1+Education_1+BusinessTravel_1,binomial(link="logit"),train) 

будет искать переменные, перечисленные в формуле. Он не найдет их в наборе данных train, но он найдет их в глобальной среде. Вот почему они имеют первоначальную длину.

То, что вы, вероятно, хотел это

ABC$Dept_1 <- as.factor(ABC$Dept) 
ABC$Education_1 <- as.factor(ABC$Education) 
ABC$BusinessTravel_1 <- as.factor(ABC$BusinessTravel) 

, который будет создавать переменные в кадре ABC данных.

+0

Большое спасибо Hong Ooi. Это сработало. – Kedar

+0

В то время как чувство приветствуется, StackOverflow обесценивается [используя комментарии, чтобы сказать «спасибо»] (http://meta.stackoverflow.com/questions/258004/should-thank-you-comments-be-flagged?lq=1) ; если этот ответ был полезен, вы можете его перенести (если у вас есть достаточная репутация), и в любом случае, если он удовлетворит ваш вопрос удовлетворительно, вам предлагается щелкнуть галочку, чтобы принять его. –

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