2017-08-15 169 views
2

我對統計和R一般都很陌生,所以我的問題可能有點愚蠢,但由於我無法在網上找到我的解決方案,所以我想我應該在這裏問一下。在R中使用數字和分類變量解決迴歸問題

我有一大堆不同的變量非常類似如下的數據幀dataset

Item | Size | Value | Town 
---------------------------------- 
A  | 10 | 800 | 1 
B  | 11 | 100 | 2 
A  | 17 | 900 | 2 
D  | 13 | 200 | 3 
B  | 15 | 500 | 1 
C  | 12 | 250 | 3 
E  | 14 | NA | 2 
A  |  | 800 | 1 
C  |  | 800 | 2 

基本上,我有根據項目的類型,試圖「猜」的大小,它的價值和它被出售的城鎮,所以我認爲迴歸方法是一個好主意。

我嘗試用多項式迴歸(雖然我甚至不知道這是正確的),看看如何看起來使用類似如下的功能:

summary(lm(Size~ polym(factor(Item), Value, factor(Town), degree=2, raw=TRUE), dataset))

,但我得到這個警告訊息當我嘗試這樣做:

Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 0 (non-NA) cases In addition: Warning message: In Ops.factor(X, Y, ...) : ‘^’ not meaningful for factors

誰能告訴我,爲什麼出現這種情況?更重要的是,我所做的甚至是正確的?

我的第二個問題是關於NA值的迴歸。在上面的數據集中,我在Value列中有一個NA值。據我所知,R忽略列中具有NA值的行。但是如果我有很多NA值?另外,如果列中只有一個值爲NA,那麼自動消除整行數據看起來就像浪費數據,所以我想知道是否有解決或解決此問題的更好方法。謝謝!

編輯:我只是還有一個問題:在我創建的迴歸模型中,似乎在測試數據中沒有出現在訓練數據中的新「水平」(例如錯誤爲factor(Town) has new levels)。對於這種情況,正確的做法是什麼?

+1

從「polym」中刪除因素 - 您試圖對一個沒有意義的因子變量進行平方。首先嚐試'lm(Size〜factor(Item)+ factor(Town)+ Value,...)',然後根據需要添加一個平方項'Value'。 –

+0

@RemkoDuursma啊謝謝,我現在試試:) – badatstats

回答

1

是的,請按照@ RemkoDuursma的建議使用lm(Size ~ factor(Item) + factor(Town) + Value,...)並通過比較殘差來研究其他學位(是否有原因選擇了平方?)。

在問候代替NA值,你有很多選擇:

  1. 替代所有中間變量值
  2. 替代所有與每個預測基於其他變量的值平均變量值
  3. 替代

祝您好運,下次您可能想查看https://stats.stackexchange.com/

+0

謝謝!我會盡力修改我的數據:)我只是有最後一個問題,如果你有空閒時間,如果你可以檢查它會好嗎? – badatstats

+0

當然!檢查什麼,雖然,哈哈? – sweetmusicality

+0

對不起!我將它包含在上面的編輯 – badatstats