2016-09-26 42 views
0

我從StatsModels以下OLS模型:傳入StatsModels預測函數的第一個值是什麼?

X = df['Grade'] 
y = df['Results'] 

X = statsmodels.tools.tools.add_constant(X) 

mod = sm.OLS(y,X) 
results = mod.fit() 

當試圖預測新的Y值的4的X值,我要通過下列:

results.predict([1,4]) 

我不不知道爲什麼需要傳遞第一個值爲'1'的數組以便預測函數正常工作。爲什麼我需要包含1而不是僅僅說:

results.predict([4]) 

我不清楚這裏的工作概念。有人知道發生了什麼事嗎?

+0

當您使用results.predict([1,4])運行代碼時,請提供您收到的錯誤消息。 –

+0

它可以與results.predict9 [1,4]一起正常工作)。如果運行results.predict([4]),我會收到以下錯誤消息: ValueError:形狀(1,1)和(2,)未對齊:1(dim 1)!= 2(dim 0) '1'的含義是什麼?如果我傳遞'0'作爲第一個值,它會預測一個不同的數字。 – user3294779

回答

1

您正在使用X = statsmodels.tools.tools.add_constant(X)向迴歸方程添加常數。所以你的regressor X有兩列,第一列是一列。

您需要對預測中使用的迴歸器進行相同的操作。所以,1意味着在預測中包含常數。如果使用零點,則常數(0 * params[0])的貢獻爲零,並且預測僅爲斜率效應。

公式接口爲模型中的迴歸器和預測中的迴歸器自動添加常數。但是,對於大熊貓DataFrame或numpy ndarray界面,用戶需要爲模型和預測添加常量。

+0

輝煌。謝謝! – user3294779

相關問題