2012-12-19 115 views
4

我嘗試用R. 迴歸我有進口沒有問題下面的代碼CSV文件ř線性迴歸問題:lm.fit(X,Y,偏移=偏移,singular.ok = singular.ok,...)

dat <- read.csv('http://pastebin.com/raw.php?i=EWsLjKNN',sep=";") 
dat # OK Works fine 
Regdata <- lm(Y~.,na.action=na.omit, data=dat) 
summary(Regdata) 

但是,當我嘗試迴歸它不起作用。我收到一條錯誤消息:

Erreur dans lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
    aucun cas ne contient autre chose que des valeurs manquantes (NA) 

我所有的CSV文件都是數字,如果「單元格」爲空,我有「NA」值。一些列不是空的和其他一些行有時witht NA值空...

所以,我不明白爲什麼我報復的錯誤消息:

na.action=na.omit 

PS:數據CSV可在以下位置獲得: http://pastebin.com/EWsLjKNN

+0

您可能想看看Faraway的(免費!)書:http://cran.r-project.org/doc/contrib/Faraway-PRA.pdf –

+0

非常感謝建議的書是exactely什麼我需要;) – S12000

回答

5

您會收到此錯誤消息,因爲您的所有數據幀行都至少包含一個缺失值。它可以檢查,例如用如下代碼:

apply(data,1,function(x) sum(is.na(x))) 
[1] 128 126 82 78 73 65 58 34 31 30 28 30 20 21 12 20 17 16 12 42 50 128 

所以,當你運行迴歸機智lm()na.action=na.omit數據幀的所有行被刪除,並且沒有數據擬合迴歸。

但這不是主要問題。如果您提供的數據包含您擁有的所有信息,那麼您嘗試應用具有165個獨立變量(X變量)的迴歸,而只有22個觀測值。自變量的數量必須少於觀測值的數量。

+0

我的想法確切。 –

+0

你好,謝謝你的回答,如果我明白我需要兩個條件。首先是有更多的行比列。其次是獲得沒有缺失的價值。如果有一個單一的缺失值,模型不好。這是你的意思嗎? – S12000

+0

@ Swiss1200你可以有一些缺失的值,他們的數量將取決於你有多少觀察。但是你必須檢查完整的觀測值(沒有缺失值的行)的數量是否大於自變量的數量(列) –

-1

我相信我可以增加一點清晰度,因爲我親身體驗過這一點,這就是爲什麼我在這裏 - 除了我的問題是與gls(基因最小二乘模型)對比標準linaer模型。有些人喜歡邏輯「可能」適用於此處或類似的情況。

我不反駁任何人迄今說。對於人們認爲這是一種觀察的方式可能存在一些混淆,以及R對這些事情的看法。

假設你有160多個自變量。假設你有一個給定的來源,你的所有數據都來自它。您可以從文件,數據庫等中導入它。假設您有相同數量的響應變量或滿足R的用於迴歸分析目的的內容。

R將告訴你,你有2個觀察。現在,如果您喜歡從其他來源以相同的方式獲得數據,那麼如果您在全球環境中查看RStudio,則有3個觀測值。

我之所以提到這一點,是因爲「觀察」在數學意義上(因爲它是被這裏使用)是完全可以接受的。在R的術語中,它以多種方式觀察觀察結果。

這對我曾經喜歡過的一個問題有很大的貢獻 - 它告訴我我缺少了值,na.omit這個,na.action等等。當我看着OrchardSpray演示,並且我審查了我自己的方法論,我明白了。

問題的關鍵是在於我們如何在數據percieve的「觀察」是一兩件事。 R有它的另一個術語,並且它吐出錯誤信息的方式可能會導致更多的混淆。

明白我的意思嗎?