R語(yǔ)言非線性模型的實(shí)現(xiàn)
什么是非線性回歸
在非線性回歸中,分析師通常采用一個(gè)確定的函數(shù)形式和相應(yīng)的參數(shù)來(lái)擬合數(shù)據(jù)。最常用的參數(shù)估計(jì)方法是利用非線性最小二乘法(R中的nls函數(shù))。該方法使用線性函數(shù)來(lái)逼近非線性函數(shù),并且通過(guò)不斷迭代這個(gè)過(guò)程來(lái)得到參數(shù)的最優(yōu)解(本段來(lái)自維基百科)。非線性回歸的良好性質(zhì)之一是估計(jì)出的參數(shù)都有清晰的解釋(如Michaelis-Menten模型的Vmax是指最大速率),而變換數(shù)據(jù)后得到的線性模型其參數(shù)往往難以解釋。
實(shí)例一
首先,繪制出原數(shù)據(jù)的散點(diǎn)圖。代碼試下如下:
data9.3<-read.csv("C:/Users/Administrator/Desktop/data9.3.csv",head=TRUE)
attach(data9.3)
plot(x,y)
輸出結(jié)果為:

可以看出,這時(shí) y 與 x之間呈現(xiàn)出非線性,因此需要對(duì)數(shù)據(jù)進(jìn)行非線性回歸分析。
代碼實(shí)現(xiàn)如下:
nls9.3<-nls(y~a-a/(1+(x/c)^b),start=list(a=100,b=5,c=4.8)) summary(nls9.3) e<-resid(nls9.3) ebar<-mean(e) SE<-deviance(nls9.3) # 殘差平方和,由于e的均值不等于0,所以SE不等于殘差的離差平方和 SSE<-sum((e-ebar)^2) # 殘差的離差平方和 prey<-fitted(nls9.3) # y的預(yù)測(cè)值 pybar<-mean(prey) # y的預(yù)測(cè)值的均值 ybar<-mean(y) # y的均值 SST<-sum((y-ybar)^2) # 總離差平方和 Rsquare<-1-SE/SST # 相關(guān)指數(shù)
輸出結(jié)果為:


由以上輸出結(jié)果可知,對(duì)參數(shù)的估計(jì)經(jīng)過(guò)6步迭代計(jì)算后收斂,而且相關(guān)指數(shù) R 2 = 0.9986,說(shuō)明非線性回歸擬合效果很好。同時(shí),上述結(jié)果中對(duì)參數(shù)的顯著性檢驗(yàn)顯示參數(shù)均通過(guò)顯著性檢驗(yàn)。
但是,在小樣本的情況下,不可線性化的非線性回歸的殘差通暢不滿足正態(tài)性,進(jìn)而使用 t分布進(jìn)行檢驗(yàn)也是無(wú)效的,因此顯著性檢驗(yàn)的結(jié)果并不具有重要意義。
另外,聽(tīng)過(guò)對(duì)中間量的查看,回歸的利差平方和 S S R = 15156.55 ,而總離差平方和 S S T = 14917.89<S S R ,可見(jiàn)非線性回歸不再滿足平方和分解式。
該實(shí)例中殘差均值為 0.2856 ≠ 0,當(dāng)然,如果回歸擬合的效果好,殘差均值會(huì)接近0.
通過(guò)上述分析可以認(rèn)為, y與 x符合下面的非線性回歸:

實(shí)例二——Gompertz模型
回歸實(shí)現(xiàn)的代碼如下:
data9.4<-read.csv("C:/Users/Administrator/Desktop/data9.4.csv",head=TRUE)
y<-data9.4[,2]
t<-data9.4[,1]
model<-nls(y~k*(a^(b^t)),start=list(a=0.5,b=0.5,k=120),lower=c(0,0,116),upper=c(1,1,10000),algorithm="port")
summary(model)
c<-coef(model) # 將模型的回歸系數(shù)賦值給c
tt<-c(1:30)
yp<-c[3]*(c[1]^(c[2]^tt)) # 計(jì)算時(shí)間取值為tt時(shí)對(duì)應(yīng)的y的預(yù)測(cè)值
t1=t+1979 # 計(jì)算對(duì)應(yīng)的年份
t2<-tt+1979
plot(t1,y,type="o",ann=FALSE,ylim=c(0,160),xlim=c(1975,2015))
lines(t2,yp)
輸出結(jié)果為:

擬合結(jié)果為:

這里可以不用糾結(jié)這個(gè)模型是怎么得到的,這是一個(gè)計(jì)量經(jīng)濟(jì)學(xué)上的模型,已經(jīng)給出了確切的表達(dá)式為
。
舉這個(gè)例子的目的是了解由于回歸迭代中的參數(shù)超過(guò)范圍而導(dǎo)致代碼運(yùn)算產(chǎn)生無(wú)限不收斂的情況時(shí),如何對(duì)參數(shù)取值做出限定,并使用高斯-牛頓迭代算法(設(shè)定參數(shù)algorithm=“port”)。
到此這篇關(guān)于R語(yǔ)言非線性模型的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)R語(yǔ)言非線性模型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
R語(yǔ)言 解決無(wú)法打開(kāi)鏈結(jié)的問(wèn)題
這篇文章主要介紹了R語(yǔ)言 解決無(wú)法打開(kāi)鏈結(jié)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
使用ggsignif優(yōu)雅添加顯著性標(biāo)記詳解
這篇文章主要為大家介紹了使用ggsignif優(yōu)雅添加顯著性標(biāo)記詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
R語(yǔ)言模擬疫情傳播圖RVirusBroadcast展示疫情數(shù)據(jù)
本文用RVirusBroadcast展示模擬的疫情數(shù)據(jù),讓R語(yǔ)言模擬疫情傳播圖來(lái)告訴你為什么還不到出門的時(shí)候,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-02-02
R語(yǔ)言apply系列函數(shù)實(shí)例詳解
apply()函數(shù)是一種很強(qiáng)大的機(jī)制,下面這篇文章主要給大家介紹了關(guān)于R語(yǔ)言apply系列函數(shù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12
R語(yǔ)言數(shù)據(jù)類型轉(zhuǎn)換的實(shí)現(xiàn)(向量,列表,矩陣)
我們?cè)谑褂肦語(yǔ)言做數(shù)據(jù)分析時(shí),會(huì)一直對(duì)數(shù)據(jù)進(jìn)行不同類型的轉(zhuǎn)換,本文主要介紹了R語(yǔ)言數(shù)據(jù)類型轉(zhuǎn)換的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04
R語(yǔ)言繪制小提琴圖violin plot實(shí)現(xiàn)示例
這篇文章主要為大家介紹了R語(yǔ)言繪制小提琴圖violin plot的實(shí)現(xiàn)方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02

