# 從faraway輸入資料
data("twins")
# 看前六筆資料
head(twins)
##   Foster Biological Social
## 1     82         82   high
## 2     80         90   high
## 3     88         91   high
## 4    108        115   high
## 5    116        115   high
## 6    117        129   high
# 檢視資料結構
str(twins)
## 'data.frame':    27 obs. of  3 variables:
##  $ Foster    : num  82 80 88 108 116 117 132 71 75 93 ...
##  $ Biological: num  82 90 91 115 115 129 131 78 79 82 ...
##  $ Social    : Factor w/ 3 levels "high","low","middle": 1 1 1 1 1 1 1 3 3 3 ...
# 摘要資料內容
summary(twins)
##      Foster         Biological       Social  
##  Min.   : 63.00   Min.   : 68.0   high  : 7  
##  1st Qu.: 84.50   1st Qu.: 83.5   low   :14  
##  Median : 94.00   Median : 94.0   middle: 6  
##  Mean   : 95.11   Mean   : 95.3              
##  3rd Qu.:107.50   3rd Qu.:104.5              
##  Max.   :132.00   Max.   :131.0
# 繪製Foster和Biological的相關圖
ggplot(aes(y = Foster, x = Biological, color = Social), data = twins) + geom_point() + geom_smooth(method = lm, se = F) + theme_bw()
## `geom_smooth()` using formula 'y ~ x'

# 散佈圖 加上模型預測區域 
twmod <- lm(Foster ~ Biological + Social, data = twins)
summary(twmod)
## 
## Call:
## lm(formula = Foster ~ Biological + Social, data = twins)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -14.8235  -5.2366  -0.1111   4.4755  13.6978 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   -0.6076    11.8551  -0.051    0.960    
## Biological     0.9658     0.1069   9.031 5.05e-09 ***
## Sociallow      6.2264     3.9171   1.590    0.126    
## Socialmiddle   2.0353     4.5908   0.443    0.662    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.571 on 23 degrees of freedom
## Multiple R-squared:  0.8039, Adjusted R-squared:  0.7784 
## F-statistic: 31.44 on 3 and 23 DF,  p-value: 2.604e-08

-0.61 + 0.966Biological + 6.23Sociallow + 2.04Socialmiddle + 7.57

R-squared 值為 .8039,說明迴歸模型占結果測量變異的 80.39%。 其中Biological t value 超出正負1.96,且p - value < .05,達到顯著,表示 Foster 和 Biological 之間有顯著的線性相關,在控制Sociallow 和 Socialmiddle 下,Biological 每增加一單位,Foster會增加0.966。

# 查看殘差值是否為常態分布
hist( x = residuals(twmod),
      xlab = "Value of residual",
      main = "",
      breaks = 20)

殘差未呈現常態分布,但整體而言有往0集中。實際數值仍與預期有差異。

# 檢查殘差變異是否為正向分布,根據模型繪製理論分數與標準化殘差的分數
plot(twmod, which = 2)

# fitted value(預測值) 和 residuals(殘差) 的關係圖
# 線段越接近水平越好
plot(twmod, which  = 1)

雖然不是完美的水平線,但起伏不大,可以說明此模型雖然會受部分殘差影響,但整體而言可以達到還不錯的預測結果。

# 將變項拆開來看,分別繪製其與 residuals(殘差) 的關係圖
residualPlots(twmod)

##            Test stat Pr(>|Test stat|)
## Biological   -0.6159           0.5443
## Social                               
## Tukey test   -0.8109           0.4174

變項 Foster 和 Biological 跟殘差仍有一點相關,但未達顯著,Social 所呈現的box plot,其第二四分位數也很接近0,顯示上述變項都可以做為有效的預測模型。

# fitted value(預測值) 和開根號後的 standardized residuals(標準化殘差) 的關係圖
# 線段越接近水平越好
plot(twmod, which = 3)

雖然不是完美的水平線,但起伏不大,可以說明此模型雖然會受標準化殘差些微的影響,但整體而言可以達到還不錯的預測結果。