2016-11-21 41 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) 

之後,我已經將數據集分割爲列車和測試。列車和測試數據的數量似乎是完美的。然後我用GLM功能使用下面

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

擬合方程運行的語法,但它得到案件1470,而不是1028個記錄訓練集對整個數據集執行ABC。

無法理解問題所在。

+0

dim(train)和dim(test)的結果是否正確? –

+0

提到「data = train」...並且還顯示用於拆分的代碼 –

回答

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) ;如果這個答案很有用,你可以放棄它(如果你有足夠的聲望),並且在任何情況下,如果它滿意地回答你的問題,我們鼓勵你點擊複選標記來接受它。 –