Yêu cầu: viết 1 function dùng để hồi quy tuyến tính.

data(Boston)
str(Boston)
## 'data.frame':    506 obs. of  14 variables:
##  $ crim   : num  0.00632 0.02731 0.02729 0.03237 0.06905 ...
##  $ zn     : num  18 0 0 0 0 0 12.5 12.5 12.5 12.5 ...
##  $ indus  : num  2.31 7.07 7.07 2.18 2.18 2.18 7.87 7.87 7.87 7.87 ...
##  $ chas   : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ nox    : num  0.538 0.469 0.469 0.458 0.458 0.458 0.524 0.524 0.524 0.524 ...
##  $ rm     : num  6.58 6.42 7.18 7 7.15 ...
##  $ age    : num  65.2 78.9 61.1 45.8 54.2 58.7 66.6 96.1 100 85.9 ...
##  $ dis    : num  4.09 4.97 4.97 6.06 6.06 ...
##  $ rad    : int  1 2 2 3 3 3 5 5 5 5 ...
##  $ tax    : num  296 242 242 222 222 222 311 311 311 311 ...
##  $ ptratio: num  15.3 17.8 17.8 18.7 18.7 18.7 15.2 15.2 15.2 15.2 ...
##  $ black  : num  397 397 393 395 397 ...
##  $ lstat  : num  4.98 9.14 4.03 2.94 5.33 ...
##  $ medv   : num  24 21.6 34.7 33.4 36.2 28.7 22.9 27.1 16.5 18.9 ...
mohinhhoiquy <- function(data,x,y){
 #Hệ số tương quan
 mttq <- cor(data)
 # Hồi quy tuyến tính
 hq  <- lm(formula = paste(y, "~", x), data=data)
 # Biểu đồ phân tán
 bd <- pairs(data)
 # Kiểm định
 ttq <- dwtest(hq)
 op <- par(mfrow=c(2,2))
 pt <- plot(hq)
 # Dự báo
 db <- predict(hq,data)
 
 
 list(`Ma trận hệ số tương quan`=mttq,`Mô hình hồi quy`=summary(hq),`Biểu đồ phân tán`=bd,`Kiểm định tự tương quan`= ttq,`Phân tích phần dư để kiểm tra các giả định`=pt,`Dự báo`=db)
}

mohinhhoiquy(Boston,"medv","lstat")

## $`Ma trận hệ số tương quan`
##                crim          zn       indus         chas         nox
## crim     1.00000000 -0.20046922  0.40658341 -0.055891582  0.42097171
## zn      -0.20046922  1.00000000 -0.53382819 -0.042696719 -0.51660371
## indus    0.40658341 -0.53382819  1.00000000  0.062938027  0.76365145
## chas    -0.05589158 -0.04269672  0.06293803  1.000000000  0.09120281
## nox      0.42097171 -0.51660371  0.76365145  0.091202807  1.00000000
## rm      -0.21924670  0.31199059 -0.39167585  0.091251225 -0.30218819
## age      0.35273425 -0.56953734  0.64477851  0.086517774  0.73147010
## dis     -0.37967009  0.66440822 -0.70802699 -0.099175780 -0.76923011
## rad      0.62550515 -0.31194783  0.59512927 -0.007368241  0.61144056
## tax      0.58276431 -0.31456332  0.72076018 -0.035586518  0.66802320
## ptratio  0.28994558 -0.39167855  0.38324756 -0.121515174  0.18893268
## black   -0.38506394  0.17552032 -0.35697654  0.048788485 -0.38005064
## lstat    0.45562148 -0.41299457  0.60379972 -0.053929298  0.59087892
## medv    -0.38830461  0.36044534 -0.48372516  0.175260177 -0.42732077
##                  rm         age         dis          rad         tax    ptratio
## crim    -0.21924670  0.35273425 -0.37967009  0.625505145  0.58276431  0.2899456
## zn       0.31199059 -0.56953734  0.66440822 -0.311947826 -0.31456332 -0.3916785
## indus   -0.39167585  0.64477851 -0.70802699  0.595129275  0.72076018  0.3832476
## chas     0.09125123  0.08651777 -0.09917578 -0.007368241 -0.03558652 -0.1215152
## nox     -0.30218819  0.73147010 -0.76923011  0.611440563  0.66802320  0.1889327
## rm       1.00000000 -0.24026493  0.20524621 -0.209846668 -0.29204783 -0.3555015
## age     -0.24026493  1.00000000 -0.74788054  0.456022452  0.50645559  0.2615150
## dis      0.20524621 -0.74788054  1.00000000 -0.494587930 -0.53443158 -0.2324705
## rad     -0.20984667  0.45602245 -0.49458793  1.000000000  0.91022819  0.4647412
## tax     -0.29204783  0.50645559 -0.53443158  0.910228189  1.00000000  0.4608530
## ptratio -0.35550149  0.26151501 -0.23247054  0.464741179  0.46085304  1.0000000
## black    0.12806864 -0.27353398  0.29151167 -0.444412816 -0.44180801 -0.1773833
## lstat   -0.61380827  0.60233853 -0.49699583  0.488676335  0.54399341  0.3740443
## medv     0.69535995 -0.37695457  0.24992873 -0.381626231 -0.46853593 -0.5077867
##               black      lstat       medv
## crim    -0.38506394  0.4556215 -0.3883046
## zn       0.17552032 -0.4129946  0.3604453
## indus   -0.35697654  0.6037997 -0.4837252
## chas     0.04878848 -0.0539293  0.1752602
## nox     -0.38005064  0.5908789 -0.4273208
## rm       0.12806864 -0.6138083  0.6953599
## age     -0.27353398  0.6023385 -0.3769546
## dis      0.29151167 -0.4969958  0.2499287
## rad     -0.44441282  0.4886763 -0.3816262
## tax     -0.44180801  0.5439934 -0.4685359
## ptratio -0.17738330  0.3740443 -0.5077867
## black    1.00000000 -0.3660869  0.3334608
## lstat   -0.36608690  1.0000000 -0.7376627
## medv     0.33346082 -0.7376627  1.0000000
## 
## $`Mô hình hồi quy`
## 
## Call:
## lm(formula = paste(y, "~", x), data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -10.8631  -3.5959  -0.8133   2.4069  20.3152 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 25.55886    0.56823   44.98   <2e-16 ***
## medv        -0.57276    0.02335  -24.53   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.826 on 504 degrees of freedom
## Multiple R-squared:  0.5441, Adjusted R-squared:  0.5432 
## F-statistic: 601.6 on 1 and 504 DF,  p-value: < 2.2e-16
## 
## 
## $`Biểu đồ phân tán`
## NULL
## 
## $`Kiểm định tự tương quan`
## 
##  Durbin-Watson test
## 
## data:  hq
## DW = 0.90102, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0
## 
## 
## $`Phân tích phần dư để kiểm tra các giả định`
## NULL
## 
## $`Dự báo`
##          1          2          3          4          5          6          7 
## 11.8127195 13.1873335  5.6842322  6.4288148  4.8250985  9.1207672 12.4427509 
##          8          9         10         11         12         13         14 
## 10.0371765 16.1083882 14.7337742 16.9675219 14.7337742 13.1300579 13.8746405 
##         15         16         17         18         19         20         21 
## 15.1347033 14.1610184 12.3281998 15.5356324 13.9891916 15.1347033 17.7693801 
##         22         23         24         25         26         27         28 
## 14.3328451 16.8529707 17.2538998 16.6238684 17.5975533 16.0511126 17.0820731 
##         29         30         31         32         33         34         35 
## 15.0201521 13.5309870 18.2848603 17.2538998 17.9984824 18.0557580 17.8266556 
##         36         37         38         39         40         41         42 
## 14.7337742 14.1037428 13.5309870 11.4117904  7.9179799  5.5696811 10.3235544 
##         43         44         45         46         47         48         49 
## 11.0681370 11.4117904 13.4164358 14.5046719 14.1037428 16.0511126 17.3111754 
##         50         51         52         53         54         55         56 
## 14.4473963 14.2755696 13.8173649 11.2399637 12.1563730 14.7337742  5.2833032 
##         57         58         59         60         61         62         63 
## 11.4117904  7.4597753 12.2136486 14.3328451 14.8483254 16.3947661 12.8436800 
##         64         65         66         67         68         69         70 
## 11.2399637  6.6579171 12.0990974 14.4473963 12.9582312 15.5929079 13.5882626 
##         71         72         73         74         75         76         77 
## 11.6981684 13.1300579 12.5000265 12.1563730 11.7554439 13.3018847 14.1037428 
##         78         79         80         81         82         83         84 
## 13.6455381 13.4164358 13.9319161  9.5216962 11.8699951 11.3545149 12.4427509 
##         85         86         87         88         89         90         91 
## 11.8699951 10.3235544 12.6718533 12.8436800 12.0418219  9.1207672 12.6145777 
##         92         93         94         95         96         97         98 
## 12.9582312 12.4427509 11.2399637 13.7600893  9.2925939 13.3018847  3.3932090 
##         99        100        101        102        103        104        105 
##  0.4721543  6.5433660  9.8080741 10.3808300 14.9056010 14.5046719 14.0464672 
##        106        107        108        109        110        111        112 
## 14.3901207 14.3901207 13.8746405 14.2182940 14.4473963 13.1300579 12.5000265 
##        113        114        115        116        117        118        119 
## 14.7910498 14.8483254 14.9628765 15.0774277 13.4164358 14.5619475 13.8746405 
##        120        121        122        123        124        125        126 
## 14.5046719 12.9582312 13.9319161 13.8173649 15.6501835 14.7910498 13.3018847 
##        127        128        129        130        131        132        133 
## 16.5665928 16.2802149 15.2492544 17.3684510 14.5619475 14.3328451 12.3854753 
##        134        135        136        137        138        139        140 
## 15.0201521 16.6238684 15.1919789 15.5929079 15.7647347 17.9412068 15.3638056 
##        141        142        143        144        145        146        147 
## 17.5402777 17.3111754 17.8839312 16.6238684 18.8003405 17.6548289 16.6238684 
##        148        149        150        151        152        153        154 
## 17.1966242 15.3638056 16.7384196 13.2446091 14.3328451 16.7956952 14.4473963 
##        155        156        157        158        159        160        161 
## 15.8220103 16.6238684 18.0557580  1.9040438 11.6408928 12.2136486 10.0944521 
##        162        163        164        165        166        167        168 
## -3.0789318 -3.0789318 -3.0789318 12.5573021 11.2399637 -3.0789318 11.9272707 
##        169        170        171        172        173        174        175 
## 11.9272707 12.7864044 15.5929079 14.6192230 12.3281998 12.0418219 12.6145777 
##        176        177        178        179        180        181        182 
##  8.7198381 12.2709242 11.4690660  8.4334602  4.2523427  2.7631776  4.8250985 
##        183        184        185        186        187        188        189 
##  3.8514136  6.9442950 10.4381056  8.6052869 -3.0789318  7.2306730  8.4907358 
##        190        191        192        193        194        195        196 
##  5.5696811  4.3668938  8.0898067  4.7105473  7.7461532  8.8916648 -3.0789318 
##        197        198        199        200        201        202        203 
##  6.4860904  8.2043579  5.7415078  5.5696811  6.7151927 11.7554439  1.3312880 
##        204        205        206        207        208        209        210 
## -2.2197981 -3.0789318 12.6145777 11.5836172 12.6718533 11.5836172 14.1037428 
##        211        212        213        214        215        216        217 
## 13.1300579 14.5046719 12.7291288  9.4644207 11.9845463 11.2399637 12.2136486 
##        218        219        220        221        222        223        224 
##  9.1207672 13.2446091 12.3854753 10.2662788 13.1300579  9.8080741  8.3189090 
##        225        226        227        228        229        230        231 
## -0.1006016 -3.0789318  4.0232404  7.4597753 -1.1888376  7.5170509 11.6408928 
##        232        233        234        235        236        237        238 
##  7.4024997  1.6749415 -2.1052469  8.9489404 11.8127195 11.1826881  7.5170509 
##        239        240        241        242        243        244        245 
## 11.9845463 12.2136486 12.9582312 14.0464672 12.8436800 11.9845463 15.4783568 
##        246        247        248        249        250        251        252 
## 14.9628765 11.6408928 13.8173649 11.5263416 10.5526567 11.5836172 11.3545149 
##        253        254        255        256        257        258        259 
##  8.6052869  1.0449101 13.0155067 13.5882626  0.3576031 -3.0789318  4.9396497 
##        260        261        262        263        264        265        266 
##  8.3189090  6.1997125  0.8730833 -2.3916248  7.8034288  4.6532718 12.5000265 
##        267        268        269        270        271        272        273 
##  7.9752555 -3.0789318  0.6439810 13.7028137 13.4737114 11.1254125 11.5836172 
##        274        275        276        277        278        279        280 
##  5.3978543  7.0015706  7.2306730  6.5433660  6.6006416  8.8916648  5.4551299 
##        281        282        283        284        285        286        287 
## -0.4442550  5.2833032 -0.7879085 -3.0789318  7.1161218 12.9582312 14.0464672 
##        288        289        290        291        292        293        294 
## 12.2709242 12.7864044 11.3545149  9.2353183  4.1950671  9.5789718 11.8699951 
##        295        296        297        298        299        300        301 
## 13.1300579  9.1780427 10.0371765 13.9319161 12.6718533  8.9489404 11.3545149 
##        302        303        304        305        306        307        308 
## 12.9582312 10.4381056  6.6006416  4.8823741  9.2925939  6.4288148  9.4071451 
##        309        310        311        312        313        314        315 
## 12.5000265 13.9319161 16.3374905 12.9009556 14.4473963 13.1873335 11.9272707 
##        316        317        318        319        320        321        322 
## 16.2802149 15.3638056 14.2182940 12.3281998 13.5309870 11.9272707 12.3281998 
##        323        324        325        326        327        328        329 
## 13.8746405 14.9628765 11.2399637 11.4690660 12.3854753 12.8436800 14.5046719 
##        330        331        332        333        334        335        336 
## 12.6145777 14.2182940 15.7647347 14.4473963 12.8436800 13.7028137 13.4737114 
##        337        338        339        340        341        342        343 
## 14.3901207 14.9628765 13.7600893 14.6764986 14.8483254  6.8297439 16.1083882 
##        344        345        346        347        348        349        350 
## 11.8699951  7.6888776 15.5356324 15.7074591 12.3281998 11.5263416 10.3235544 
##        351        352        353        354        355        356        357 
## 12.4427509 11.7554439 14.9056010  8.3189090 15.1347033 13.7600893 15.3638056 
##        358        359        360        361        362        363        364 
## 13.1300579 12.5573021 12.6145777 11.2399637 14.1610184 13.6455381 15.9365614 
##        365        366        367        368        369        370        371 
## 13.0155067  9.8080741 13.0155067 12.3281998 -3.0789318 -3.0789318 -3.0789318 
##        372        373        374        375        376        377        378 
## -3.0789318 -3.0789318 17.6548289 17.6548289 16.9675219 17.5975533 17.9412068 
##        379        380        381        382        383        384        385 
## 18.0557580 19.7167499 19.6021987 19.3158208 19.0867184 18.5139626 20.5186080 
##        386        387        388        389        390        391        392 
## 21.4350173 19.5449231 21.3204662 19.7167499 18.9721673 16.9102463 12.2709242 
##        393        394        395        396        397        398        399 
## 20.0031278 17.6548289 18.2848603 18.0557580 18.3994115 20.6904347 22.6950801 
##        400        401        402        403        404        405        406 
## 21.9504976 22.3514266 21.4350173 18.6285138 20.8049859 20.6904347 22.6950801 
##        407        408        409        410        411        412        413 
## 18.7430650  9.5789718 15.7074591  9.8080741 16.9675219 15.7074591 15.3065300 
##        414        415        416        417        418        419        420 
## 16.2229393 21.5495685 21.4350173 21.2631906 19.6021987 20.5186080 20.7477103 
##        421        422        423        424        425        426        427 
## 15.9938370 17.4257266 13.6455381 17.8839312 18.8576161 20.8049859 19.7167499 
##        428        429        430        431        432        433        434 
## 19.3158208 19.2585452 20.1176789 17.2538998 17.4830022 16.3374905 17.3684510 
##        435        436        437        438        439        440        441 
## 18.8576161 17.8839312 20.0604033 20.5758836 20.7477103 18.2275847 19.5449231 
##        442        443        444        445        446        447        448 
## 15.7647347 15.0201521 16.7384196 19.3730964 18.8003405 17.0247975 18.3421359 
##        449        450        451        452        453        454        455 
## 17.4830022 18.1130336 17.8839312 16.8529707 16.3374905 15.3638056 17.0247975 
##        456        457        458        459        460        461        462 
## 17.4830022 18.2848603 17.8266556 17.0247975 14.1037428 16.1656638 15.4210812 
##        463        464        465        466        467        468        469 
## 14.3901207 13.9891916 13.3018847 14.1610184 14.6764986 14.6192230 14.6192230 
##        470        471        472        473        474        475        476 
## 14.0464672 14.1610184 14.3328451 12.2709242  8.4907358 17.6548289 17.9412068 
##        477        478        479        480        481        482        483 
## 15.9938370 18.6857894 17.1966242 13.3018847 12.3854753 11.9845463 11.2399637 
##        484        485        486        487        488        489        490 
## 13.0727823 13.7600893 13.4164358 14.6192230 13.7600893 16.8529707 21.5495685 
##        491        492        493        494        495        496        497 
## 20.9195371 17.7693801 14.0464672 13.0727823 11.5263416 12.3281998 14.2755696 
##        498        499        500        501        502        503        504 
## 15.0774277 13.4164358 15.5356324 15.9365614 12.7291288 13.7600893 11.8699951 
##        505        506 
## 12.9582312 18.7430650