2014-01-24 58 views
0

步驟()和stepAIC()奇數行爲產生一個「刪除缺失值錯誤」上具有缺失值的數據運行代碼時。與步驟()

Error in step(mod1, direction = "backward") : 
    number of rows in use has changed: remove missing values? 

根據步驟:

The model fitting must apply the models to the same dataset. This may be 
a problem if there are missing values and R's default of na.action = na.omit 
is used. We suggest you remove the missing values first. 

我與它有四個NA值一個可變的數據幀。但是,當我運行lm對象時,即使缺少值,我也不會收到「缺失值」錯誤。誰能告訴我會發生什麼事?

> d1$Impressions 
    [1]  NA  NA  NA 6924180 9313226 27888455 
18213812 54557205 13495553 
... 

這不會產生錯誤消息:

mod1 = lm(Leads ~ G + Con + GOO + DAY + Res + SD + ED + 
      ME + Impressions + Inc + Sea, data=d1) 

step(mod1, direction="backward") 
stepAIC(mod1) 

即使已經丟失的值的變量,它不生成錯誤消息。關於發生什麼事的任何想法?對於規定的行爲

+0

你那麼明顯的問題,就是「沒步進導致的結果,可以消除4個變量對哪一個行‘NA’?」我可以理解這一點,因爲如果存在任何「NA」,錯誤就會出現,只要模型矩陣中的行數隨着步進而改變。 –

+0

啊,因爲step在模型對象上運行,所以lm看起來不考慮NA值。這就是爲什麼我有:剩餘標準誤:在33個自由度上的742.2(3個意見由於缺失而被刪除)當我打印摘要時() – amathew

+1

想一想;你適合整個模型,所以你會因「NA」而丟失3個觀測值。 R將模型修剪回來,但是在每一步中都不會包含這3個觀測值,因爲具有「NA」的變量仍然在模型中。在消除所有4個具有「NA」的變量之前停止消除。因此行數永遠不會改變。 –

回答

2

一個原因是這樣的。 step()適合完整模型,因此由於存在NA s而下降3(如所陳述的)觀察值。只要模型中存在NA的變量,函數將在每個步驟中刪除這些觀察值。如果步進停止它刪除,將導致剩餘模型之前去除的觀察一個變量之前,則沒有錯誤將提高,因爲在模型矩陣行的數量不會改變。

作爲像這樣的一邊,逐步選擇被認爲是稍微可疑有效性。同樣重要的是,在使用它時,你會做出一個相當大膽的陳述,即消除的變量的影響正好等於零。這也具有將保留在模型中的變量的效果(估計係數)偏置爲具有更大(絕對)值的效果。

替代這個逐步選擇包括收縮的方法,例如套索和彈性網。