標籤:

非線性回歸的驗證?

非線性回歸模型的驗證。已知x,y的關係大致符合y=a0+a1*x+a2*x*x,滿足t分布,通過實驗觀測到一組數據,根據最小二乘法擬合,得到係數a0,a1,a2的值。

然後要有新的一組x,y 怎麼判斷確實符合上面擬合的表達式關係

謝謝各位大師指點~~


謝邀。大體給個思路。

你的問題其實仍然還是線性回歸的範疇,因為是參數線性的,所以你的問題還是可以寫為:

y=x

現在你的問題是,得到了eta估計值hat{eta},檢驗新的數據的問題。

對於新的數據,在原假設(新數據符合以上表達式),有:

y_n=x

(下標n代表new),預測值:

hat{y}_n=x

相減:

y_n-hat{y}_n=x

平方:

(y_n-hat{y}_n)^2=(eta-hat{eta})x_nx

求和,得到檢驗統計量:

sum(y_n-hat{y}_n)^2=o_p(1)+sum u_n^2

注意當估計樣本量足夠大的時候,第一項是一個無窮小量,扔掉;第二部分比較麻煩,如果是正態的則是卡方分布(自由度為新數據點的個數)。

如果u不是正態的,那麼檢驗統計量是什麼分布也說不清楚了,這個時候可以用bootstrap來檢驗。怎麼bootstrap呢?只要對原始數據計算得到的殘差進行有放回抽樣並計算平方和就可以了。

寫了個腳本,效果沒有想像的好,不過也能用:

N=500
Nn=30
Iter=1000
reject_90=0
reject_95=0
reject_99=0
for iter=1:Iter
x=randn(N)
u=randn(N).^2-1
beta=1
y=x*beta+u

#estimation
b=(x"*x)x"*y
uhat=y-x*b[1]

#new data
xn=randn(Nn)
un=randn(Nn).^2-1
betan=2
yn=xn*betan+un
# residuals
r=yn-(xn*b[1])
test_stat=sum(r.^2)
# bootstrap
NB=1000
boot_sample=Array(Float64,NB)
for b=1:NB
uhat_sample=uhat[ceil(Integer,rand(Nn)*N)]
boot_sample[b]=sum(uhat_sample.^2)
end
if test_stat&>quantile(boot_sample,.9)
reject_90+=1
end
if test_stat&>quantile(boot_sample,.95)
reject_95+=1
end
if test_stat&>quantile(boot_sample,.99)
reject_99+=1
end
end
println(reject_90/Iter)
println(reject_95/Iter)
println(reject_99/Iter)


可以通過Excel完成。

對數據列出散點圖,然後添加趨勢線,其中趨勢線可以添加為線性回歸,對數回歸,指數回歸和多項式回歸。題主的描述是多項式回歸了,然後我們根據擬合優度,也就是判定係數R2來確定擬合程度,與接近1說明擬合程度越好。


推薦閱讀:

線性回歸的相關指數R平方的表達式(見圖)是怎麼來的?
如何簡明地解釋「線性回歸」「貝葉斯定理」「假設檢驗」這些術語?
線性回歸中的 ANOVA 的作用是什麼?
通過邏輯回歸的sigmoid函數把線性回歸轉化到[0,1]之間,這個值為什麼可以代表概率?

TAG:線性回歸 |