2017-03-09 22 views
2

所有。與預測()函數的麻煩(可能容易解決)

這是我在本論壇中提出的第一個問題。我是個初學者,你們都會馬上告訴你。

我正在做一個小任務,我必須將訓練模型與測試模型進行比較。重點在於訓練模型比測試模型有更多的行。

通過線性迴歸模型,我想這兩種模式相比,但是當我使用的預測()函數,我得到以下錯誤:

「newdata」有3456行,但變量發現最喜歡的7689行。

這是我做過什麼:

regression = lm(train$students~train$subjects, train) 

(火車是trining數據庫)

prediction = predict(regression, test) 

(測試是測試數據庫)

我不知道,如果I' m正確使用predict()函數。有人能告訴我我做錯了什麼嗎?

非常感謝您的幫助和善意!

+0

嘗試添加'type ='response''作爲預測函數的參數。沒有一個可重複的例子,我無法幫助更多。 –

+2

而不是嘗試 '迴歸= lm(學生〜科目,火車) 預測=預測(迴歸,測試)' – G5W

+0

非常感謝,G5W! – albert

回答

2

不要在公式中將變量稱爲data$var。決不。永遠。

發生了什麼事情是您安裝了一個模型,其變量名爲train$studentstrain$subjects。根據模型預測,R將在測試集test中查找名爲train$subjects的變量。顯然在tests中不存在這樣的變量;誰會用這種愚蠢的名字創造變數!?在公式中不需要使用data$var格式,因爲data參數的整個點是指示R應該在公式中提及的變量的名稱。

要開始解決這個,適合模型爲:

regression <- lm(students ~ subjects, data = train) 

然後使用

predict(regression, test) 

預測,其中test需要有包含subjects列。

錯誤信息是因爲newdata有3456,但是當它搜索變量train$subjects它發現7689行,想必是完整的觀察中train數...?

+0

它的工作原理。非常感謝,加文! – albert