回覆列表
  • 1 # 李大白Eyes

    開啟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)).....等等建立合適的模型,以得到更好的擬合效果。

  • 中秋節和大豐收的關聯?
  • 崴腳了,特別疼怎麼辦?走路都是硬撐著的!第二天更疼了?