library(tidyverse)
library(car)
library(faraway)
data(hsb)

看看資料結構

str(hsb)
## 'data.frame':    200 obs. of  11 variables:
##  $ id     : int  70 121 86 141 172 113 50 11 84 48 ...
##  $ gender : Factor w/ 2 levels "female","male": 2 1 2 2 2 2 2 2 2 2 ...
##  $ race   : Factor w/ 4 levels "african-amer",..: 4 4 4 4 4 4 1 3 4 1 ...
##  $ ses    : Factor w/ 3 levels "high","low","middle": 2 3 1 1 3 3 3 3 3 3 ...
##  $ schtyp : Factor w/ 2 levels "private","public": 2 2 2 2 2 2 2 2 2 2 ...
##  $ prog   : Factor w/ 3 levels "academic","general",..: 2 3 2 3 1 1 2 1 2 1 ...
##  $ read   : int  57 68 44 63 47 44 50 34 63 57 ...
##  $ write  : int  52 59 33 44 52 52 59 46 57 55 ...
##  $ math   : int  41 53 54 47 57 51 42 45 54 52 ...
##  $ science: int  47 63 58 53 53 63 53 39 58 50 ...
##  $ socst  : int  57 61 31 56 61 61 61 36 51 51 ...
head(hsb)
##    id gender  race    ses schtyp     prog read write math science socst
## 1  70   male white    low public  general   57    52   41      47    57
## 2 121 female white middle public vocation   68    59   53      63    61
## 3  86   male white   high public  general   44    33   54      58    31
## 4 141   male white   high public vocation   63    44   47      53    56
## 5 172   male white middle public academic   47    52   57      53    61
## 6 113   male white middle public academic   44    52   51      63    61

現在想要知道,性別與閱讀能力對寫作能力的預測力。

因為性別為類別變項,所以不需做相關檢定。

#看一下閱讀能力和寫作能力在性別上的差異:

ggplot(aes(y = read, x = write, color = gender), data = hsb) +
  geom_point() +
  geom_smooth(method = lm, se = F) + 
  theme_bw()
## `geom_smooth()` using formula 'y ~ x'

從上方的圖表可以看出,閱讀能力和寫作能力在性別上皆呈現正相關,斜率差不多。

#開始跑線性回歸模型,看性別與閱讀能力在寫作能力上的預測力:

rwg <- lm(write ~ gender + read, data = hsb)
summary(rwg)
## 
## Call:
## lm(formula = write ~ gender + read, data = hsb)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -17.523  -5.658   0.168   5.043  15.175 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 25.71526    2.64464   9.724  < 2e-16 ***
## gendermale  -5.48689    1.01426  -5.410 1.82e-07 ***
## read         0.56589    0.04938  11.459  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.133 on 197 degrees of freedom
## Multiple R-squared:  0.4394, Adjusted R-squared:  0.4337 
## F-statistic: 77.21 on 2 and 197 DF,  p-value: < 2.2e-16

yi=β0+β1x1i+β2x2i+εi

Writing = 25.715 - 5.487male + 0.566read + 7.133

  1. 截距的 β 估計值為25.715,t-value = 9.724,p-value < 0.05,因此拒絕虛無假設,截距估計值顯著大於零,也就是說,寫作的整體平均數(grand mean)為25.715。

  2. 性別屬於類別變項,詮釋方式與連續變項不同,是群組平均數的差異。此一迴歸模型將女性設為參照組,男性的寫作平均數比女性低5.487,然而t值為-5.410,p值<.000,因此拒絕虛無假設,男性的寫作能力較女性差。

  3. 閱讀的 β 估計值為0.566,t-value = 11.459,p-value < 0.05,因此拒絕虛無假設,閱讀與寫作有顯著的正相關。換言之,在考量其他變項之後,每變動一個單位的閱讀,寫作的平均數就會上升0.566。

  4. R-squared = 0.4394。此迴歸模型可解釋寫作中約43.94%的變異。

#檢測資料是否為常態

直方圖可以直觀的看出資料分布情況:

hist( x = residuals(rwg),
      xlab = "Value of residual",
      main = "",
      breaks = 20)

一個良好的迴歸模型,其預測值與觀察值的差異應近乎零,因此殘差會服從常態分佈,且平均數為零。

Normal Q-Q

.殘差是否為常態分佈

.殘差之圖形越接近直線越好

plot(rwg, which = 2)

從上方圖表可以看出,殘差的點所組成的線段接近直線,所以此筆資料的殘差接近常態分佈。

#觀察線性關係

.越接近水平線越好

residualPlots(rwg)

##            Test stat Pr(>|Test stat|)  
## gender                                 
## read         -1.1356          0.25752  
## Tukey test   -1.7249          0.08455 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

#檢測標準化殘差和期望值的同質性

同質性越高,越接近水平線

plot(rwg, which = 3)

從Residuals vs. Fitted的圖來看,點點應該是離散狀,紅色虛線呈筆直的水平線,且貼近零,表示殘差不會隨著預測值的變動而有所改變。可是此殘差圖中的紅色虛線,仍呈微幅的曲線狀,或許尚有些變異未能完全被模式中的自變項所解釋。