開啟R軟體,檔案>新建指令碼程式,輸入需要進行迴歸分析的資料。
首先繪製出散點圖,觀察二者的關係是線性的或者非線性的,以建立合適的迴歸模型。
程式程式碼:
#輸入資料
x=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24)
y=c(276,277,283,294,308,330,355,387,422,461,507,558,613,675,741,811,886,966,1053,1142,1239,1340,1445,1556)
#繪製散點圖
plot(x,y,col=1:7)
其中plot為繪圖命令,col表示散點的顏色。
執行後得到下圖。
從圖形可知,y與x成非線性關係,圖形比較契合二次曲線,建立迴歸模型y=a+b*x+c*(x^2)
計算迴歸引數:
#迴歸分析
test=lm(y~1+x+I(x^2))
test
其中lm表示建立模型,其中的公式y=1+x+I(x^2),1表示常數項,I(x^2)表示x的平方項,注意這裡合起來是相當於組成另外一個變數,單獨x^2不能得到預想的結果。
執行得到引數,模型為:
y= 280.944-6.909*x +2.501*(x^2)
檢視顯著性檢驗結果。
執行程式碼summary(test)
表示提取模型的計算結果。
該結果中,call顯示出模型公式,residuals顯示出殘差的四分位數值,estimate這一列反映了模型的引數估計值,std.Error為標準差,Pr(>|t|)這一列位計算的P值,最下面是解釋。可以看出該模型的每個引數的P值的顯著性標記均為“***”,表示極為顯著。該模型透過迴歸檢驗。
利用predict()函式求該回歸模型的預測值和預測區間。
程式程式碼為:
#預測
pred=data.frame(x=25)
test.pred=predict(test,pred,interval="prediction",level=0.95)
test.pred
其中pred表示要預測的點,這裡必須以資料框的形式輸入,predict函式才能計算;interval="prediction"表示給出對應的預測區間,引數level=0.95表示顯著性水平。由此得到的預測結果為:Y"=1671.368 ,區間[1669.628,1673.109]。
計算全部擬合值,並繪製擬合曲線圖。
#計算全部擬合值
nihe=predict(test)
#曲線擬合圖
lines(nihe)
其中predict計算出全部擬合值。在繪製曲線命令lines()之前,需要先用plot()繪製出散點圖。
從圖中可以看出,擬合效果非常好。
在實際資料分析中,還會涉及多元線性迴歸方程、非線性迴歸模型等。可以使用命令lm(y~X1+X2+X3+I(X3^2)).....等等建立合適的模型,以得到更好的擬合效果。
開啟R軟體,檔案>新建指令碼程式,輸入需要進行迴歸分析的資料。
首先繪製出散點圖,觀察二者的關係是線性的或者非線性的,以建立合適的迴歸模型。
程式程式碼:
#輸入資料
x=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24)
y=c(276,277,283,294,308,330,355,387,422,461,507,558,613,675,741,811,886,966,1053,1142,1239,1340,1445,1556)
#繪製散點圖
plot(x,y,col=1:7)
其中plot為繪圖命令,col表示散點的顏色。
執行後得到下圖。
從圖形可知,y與x成非線性關係,圖形比較契合二次曲線,建立迴歸模型y=a+b*x+c*(x^2)
計算迴歸引數:
#迴歸分析
test=lm(y~1+x+I(x^2))
test
其中lm表示建立模型,其中的公式y=1+x+I(x^2),1表示常數項,I(x^2)表示x的平方項,注意這裡合起來是相當於組成另外一個變數,單獨x^2不能得到預想的結果。
執行得到引數,模型為:
y= 280.944-6.909*x +2.501*(x^2)
檢視顯著性檢驗結果。
執行程式碼summary(test)
表示提取模型的計算結果。
該結果中,call顯示出模型公式,residuals顯示出殘差的四分位數值,estimate這一列反映了模型的引數估計值,std.Error為標準差,Pr(>|t|)這一列位計算的P值,最下面是解釋。可以看出該模型的每個引數的P值的顯著性標記均為“***”,表示極為顯著。該模型透過迴歸檢驗。
利用predict()函式求該回歸模型的預測值和預測區間。
程式程式碼為:
#預測
pred=data.frame(x=25)
test.pred=predict(test,pred,interval="prediction",level=0.95)
test.pred
其中pred表示要預測的點,這裡必須以資料框的形式輸入,predict函式才能計算;interval="prediction"表示給出對應的預測區間,引數level=0.95表示顯著性水平。由此得到的預測結果為:Y"=1671.368 ,區間[1669.628,1673.109]。
計算全部擬合值,並繪製擬合曲線圖。
#計算全部擬合值
nihe=predict(test)
#曲線擬合圖
plot(x,y,col=1:7)
lines(nihe)
其中predict計算出全部擬合值。在繪製曲線命令lines()之前,需要先用plot()繪製出散點圖。
從圖中可以看出,擬合效果非常好。
在實際資料分析中,還會涉及多元線性迴歸方程、非線性迴歸模型等。可以使用命令lm(y~X1+X2+X3+I(X3^2)).....等等建立合適的模型,以得到更好的擬合效果。