求めたa, bが不適切と判断した場合の対処方法 ===> 今週のテーマ
ここまでは、構造がシンプルな単回帰分析を例に、この分析方法の考え方や残差の取り方、および、なぜそのように取る必要があるか等を説明した。この節では、より実用場面で登場する重回帰分析まで拡張し、分析の進め方や利用時の注意点を含めて紹介する。いろいろな場面での応用が可能な手法なので、大いに利用していただきたい。
回帰平面の方程式: \[ \textbf{y} = a_{0} + \sum_{j=1}^{p} a_{j}\textbf{x}^t_{j} \]
測定値と予測値のズレ(残差): \[ \varepsilon_{i} = y_{i} - (a_{0}+\sum_{j=1}^{p}a_{j}x_{ij}) \;\;\;\;\;\; (i=1,2,...,n) \]
残差の2乗和を最小に: \[ S = \sum_{i=1}^{n}{\varepsilon_{i}^2} = \sum_{i=1}^{n} \{ {y_{i} - ( a_{0}+\sum_{j=1}^{p}a_{j}x_{ij}})\}^2 \;\;\; { \to min} \]
行列表記: \[ {\textbf{Y}}={\textbf{X} \textbf{A}} \]
ここで、 \[ \textbf{Y}= \begin{pmatrix} y_{1} \\ y_{2} \\ y_{3} \\ \vdots \\ y_{i} \\ \vdots \\ y_{n} \end{pmatrix}, \;\;\; %%% {\textbf{X}}= \begin{pmatrix} 1 & x_{11} & x_{12} & \cdots & x_{1j} & \cdots & x_{1p}\\ 1 & x_{21} & x_{23} & \cdots & x_{2j} & \cdots & x_{2p} \\ 1 & x_{31} & x_{32} & \cdots & x_{3j} & \cdots & x_{3p} \\ \vdots & \vdots & \vdots & \ddots & \vdots & & \vdots \\ 1 & x_{i1} & x_{i2} & \cdots & x_{ij} & \cdots & x_{ip} \\ \vdots & \vdots & \vdots & & \vdots & \ddots & \vdots \\ 1 & x_{n1} & x_{n2} & \cdots & x_{nj} & \cdots & x_{np} \\ \end{pmatrix}, \;\;\; %%% \textbf{A}= \begin{pmatrix} a_{0} \\ a_{1} \\ a_{2} \\ \vdots \\ a_{j} \\ \vdots \\ a_{p} \end{pmatrix}. \]
\(\textbf{A}\) を求めるには、左側から\(\textbf{X}^t\)をかけて、
\[ \textbf{X}^t {\textbf{Y}}={\textbf{X}^t {\textbf{X} \textbf{A}}} \]
その後、今度は左側から\(({{\textbf{X}^t {\textbf{X}}}})^{-1}\)をかけて、
\[ \textbf{A} = ({{\textbf{X}^t {\textbf{X}}}})^{-1} \textbf{X}^t {\textbf{Y}} \]
よって、\(\textbf{A}\) を求めるには、\(({{\textbf{X}^t {\textbf{X}}}})\)が逆行列を持つことが条件となる。
単回帰分析の時も説明したが、 データに欠損値が含まれていると、後々の分析(残差プロット等)時に、 毎回欠損値を除去する手順を組み込む必要が生じて面倒なので、 分析対象の変量だけをまず切り出し、その上で、欠損値を除外(完全データ)しておく。
# データ切り出し
dim(Student24)
## [1] 792 9
StudHWC<-na.omit(Student24[,3:5]) # 欠損値を含むデータを削除
dim(StudHWC)
## [1] 242 3
colnames(StudHWC)
## [1] "Height" "Weight" "Chest"
StudHWC[1:10,]
## Height Weight Chest
## 2 145.5 42.0 76
## 3 146.7 41.0 85
## 5 148.0 43.0 80
## 8 150.0 43.0 82
## 9 150.0 46.0 86
## 16 151.7 41.5 80
## 17 152.0 35.0 77
## 23 153.0 46.5 87
## 25 153.0 55.0 78
## 26 153.0 57.0 38
元々の収集データは772サンプルであったが、 身長と体重と胸囲だけのデータを抽出し、 この中に欠損値を含むサンプルを除外すると、残ったのは239サンプルであった。 よって、欠損値を含んでいたのは533サンプルあったことになる。 変量が多くなると欠損値を含むサンプルが多くなる傾向にある。 以後は、Student24の代わりにStudHWCを使って分析を行う。
既に第4回で紹介したので再掲となるが、 3変量以上の場合に変量間の関係を概観するのに便利な「散布図行列」を再度描画しておく。 3変量の中から2変量ごとを組み合わせて描画した散布図を、 行列形式で配置したものである。 複数変量の関係を視覚的に把握するのに優れた手法であり、 変量間でどの程度関係性がありそうかを視覚的に把握することができて便利である。 例えば、データ分析の初期段階でまずは全体像を掴もうとするような際には有効に機能する。
# 散布図行列
plot(StudHWC)
dim(StudHWC) # サンプルサイズを改めて確認
## [1] 242 3
# 重回帰分析
RresultHWC<-lm(Weight~Height+Chest,
data=StudHWC) # 右辺に説明する変量をプラスマークで追加していく
# 計算結果要約
summary(RresultHWC)
##
## Call:
## lm(formula = Weight ~ Height + Chest, data = StudHWC)
##
## Residuals:
## Min 1Q Median 3Q Max
## -14.019 -4.341 -1.411 3.280 31.561
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -99.70771 9.92295 -10.048 < 2e-16 ***
## Height 0.80174 0.06103 13.136 < 2e-16 ***
## Chest 0.29231 0.04930 5.929 1.06e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.038 on 239 degrees of freedom
## Multiple R-squared: 0.5393, Adjusted R-squared: 0.5354
## F-statistic: 139.9 on 2 and 239 DF, p-value: < 2.2e-16
*以下、順に計算結果を見ていくと、
Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -99.70771 9.92295 -10.048 < 2e-16 *** Height 0.80174 0.06103 13.136 < 2e-16 *** Chest 0.29231 0.04930 5.929 1.06e-08 ***
Adjusted R-squared: 0.5354
F-statistic: 139.9 on 2 and 239 DF, p-value: < 2.2e-16
Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -99.70771 9.92295 -10.048 < 2e-16 *** Height 0.80174 0.06103 13.136 < 2e-16 *** Chest 0.29231 0.04930 5.929 1.06e-08 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
回帰直線の係数が求まったらそれでおしまい?
# 残差プロット
plot(StudHWC$Height, RresultHWC$residuals) # 対身長
abline(v=seq(140,190,10), lty=3) # 点線を追記
abline(h=seq(-10,30,10), lty=3) # 点線を追記
abline(h=0, lty=1) # ゼロを実線で追記
plot(StudHWC$Chest, RresultHWC$residuals) # 対胸囲
abline(v=seq(30,120,10), lty=3) # 点線を追記
abline(h=seq(-10,30,10), lty=3) # 点線を追記
abline(h=0, lty=1) # ゼロを実線で追記
plot(StudHWC$Weight, RresultHWC$residuals) # 対体重
abline(v=seq(30,100,10), lty=3) # 点線を追記
abline(h=seq(-10,30,10), lty=3) # 点線を追記
abline(h=0, lty=1) # ゼロを実線で追記
残差の正規性を確かめてみよう。
# 残差のヒストグラム
hist(RresultHWC$residuals, right=F, ylim=c(0,100))
abline(h=seq(0,100,20), lty=3) # 点線を追記
# 残差の箱ひげ図
boxplot(RresultHWC$residuals, horizontal=T)
abline(v=seq(-10,30,10), lty=3) # 点線を追記
# 残差のQQプロット: 正規確率プロット
qqnorm(RresultHWC$residuals)
qqline(RresultHWC$residuals, lty=2)
abline(h=seq(-10,30,10), lty=3) # 点線を追記
abline(h=0, lty=1) # 実線を追記
abline(v=0, lty=1) # 実線を追記
[検討事項] 残差が20を超える辺りの5サンプルほどは(少なくとも)分布を乱しているように見える。===> 外れ値か? 吟味が必要。
# 計算結果要約(再掲)
summary(RresultHWC)
##
## Call:
## lm(formula = Weight ~ Height + Chest, data = StudHWC)
##
## Residuals:
## Min 1Q Median 3Q Max
## -14.019 -4.341 -1.411 3.280 31.561
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -99.70771 9.92295 -10.048 < 2e-16 ***
## Height 0.80174 0.06103 13.136 < 2e-16 ***
## Chest 0.29231 0.04930 5.929 1.06e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.038 on 239 degrees of freedom
## Multiple R-squared: 0.5393, Adjusted R-squared: 0.5354
## F-statistic: 139.9 on 2 and 239 DF, p-value: < 2.2e-16
元のExcelファイルに戻って除外する手もあるが、Rの中で実現するには、 不等号や論理演算子、否定(!, Not)等をうまく組み合わせて、対象とするサンプルを除外する。 それぞれの式の意味している事項が理解できるであろうか? もし理解できないようなら、式の中を中から順に分割して出力してみれば理解の促進になるであろう。
# 外れ値と考えたサンプルを抽出
StudTaiOver85<-StudHWC$Weight>85
StudHWC[StudTaiOver85,] # 体重が85超えのサンプル一覧
## Height Weight Chest
## 366 169.3 88.5 94
## 539 173.0 90.0 90
## 628 176.9 90.1 98
## 670 178.0 100.0 112
## 684 179.0 87.0 102
## 735 182.0 90.0 100
## 741 183.0 87.0 100
StudKyoLess50<-StudHWC$Chest<50
StudHWC[StudKyoLess50,] # 胸囲が50未満のサンプル一覧
## Height Weight Chest
## 26 153 57 38.0
## 355 169 60 30.5
## 538 173 84 46.0
## 599 175 72 45.0
StudHWC[StudTaiOver85|StudKyoLess50,] # 体重が85超え または 胸囲が50未満のサンプル一覧
## Height Weight Chest
## 26 153.0 57.0 38.0
## 355 169.0 60.0 30.5
## 366 169.3 88.5 94.0
## 538 173.0 84.0 46.0
## 539 173.0 90.0 90.0
## 599 175.0 72.0 45.0
## 628 176.9 90.1 98.0
## 670 178.0 100.0 112.0
## 684 179.0 87.0 102.0
## 735 182.0 90.0 100.0
## 741 183.0 87.0 100.0
# 一旦変数に置き直すと利用が簡単になる(理解がしやすくなる、実現していることは上記と同じ)
StudOutlier<-StudTaiOver85|StudKyoLess50
StudHWC[StudOutlier,] # 体重が85超え または 胸囲が50未満のサンプル
## Height Weight Chest
## 26 153.0 57.0 38.0
## 355 169.0 60.0 30.5
## 366 169.3 88.5 94.0
## 538 173.0 84.0 46.0
## 539 173.0 90.0 90.0
## 599 175.0 72.0 45.0
## 628 176.9 90.1 98.0
## 670 178.0 100.0 112.0
## 684 179.0 87.0 102.0
## 735 182.0 90.0 100.0
## 741 183.0 87.0 100.0
「体重が85超え または 胸囲が60未満」の11サンプルを特定。 元々は242サンプルあったが、11サンプルを除外したので231サンプルになっている。 以下では変数名をStudHWC2とした。
StudHWC2<-StudHWC[!StudOutlier,]
StudHWC2[1:10,]
## Height Weight Chest
## 2 145.5 42.0 76
## 3 146.7 41.0 85
## 5 148.0 43.0 80
## 8 150.0 43.0 82
## 9 150.0 46.0 86
## 16 151.7 41.5 80
## 17 152.0 35.0 77
## 23 153.0 46.5 87
## 25 153.0 55.0 78
## 32 154.4 44.0 75
dim(StudHWC2)
## [1] 231 3
dim(StudHWC)
## [1] 242 3
では、抽出したデータ(228サンプル)「StudHWC2」を対象に、改めて重回帰分析を行ってみよう。
dim(StudHWC2) # サンプルサイズを改めて確認
## [1] 231 3
# 重回帰分析
RresultHWC2<-lm(Weight~Height+Chest, data=StudHWC2)
# 計算結果要約
summary(RresultHWC2)
##
## Call:
## lm(formula = Weight ~ Height + Chest, data = StudHWC2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -10.911 -3.404 -0.978 3.232 17.344
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -98.63620 7.71208 -12.79 <2e-16 ***
## Height 0.66740 0.04701 14.20 <2e-16 ***
## Chest 0.53132 0.04993 10.64 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.2 on 228 degrees of freedom
## Multiple R-squared: 0.6698, Adjusted R-squared: 0.6669
## F-statistic: 231.2 on 2 and 228 DF, p-value: < 2.2e-16
*以下、順に計算結果を見ていくと、
Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -98.63620 7.71208 -12.79 <2e-16 *** Height 0.66740 0.04701 14.20 <2e-16 *** Chest 0.53132 0.04993 10.64 <2e-16 ***
Adjusted R-squared: 0.6669
F-statistic: 231.2 on 2 and 228 DF, p-value: < 2.2e-16
Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -98.63620 7.71208 -12.79 <2e-16 *** Height 0.66740 0.04701 14.20 <2e-16 *** Chest 0.53132 0.04993 10.64 <2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# 残差プロット
plot(StudHWC2$Height, RresultHWC2$residuals) # 対身長
abline(v=seq(140,190,10), lty=3) # 点線を追記
abline(h=seq(-10,30,5), lty=3) # 点線を追記
abline(h=0, lty=1) # ゼロを実線で追記
plot(StudHWC2$Chest, RresultHWC2$residuals) # 対胸囲
abline(v=seq(30,120,10), lty=3) # 点線を追記
abline(h=seq(-10,30,5), lty=3) # 点線を追記
abline(h=0, lty=1) # ゼロを実線で追記
plot(StudHWC2$Weight, RresultHWC2$residuals) # 対体重
abline(v=seq(30,100,10), lty=3) # 点線を追記
abline(h=seq(-10,30,5), lty=3) # 点線を追記
abline(h=0, lty=1) # ゼロを実線で追記
残差の正規性を確かめてみよう。
# 残差のヒストグラム
hist(RresultHWC2$residuals, right=F, ylim=c(0,100))
abline(h=seq(0,100,20), lty=3) # 点線を追記
# 残差の箱ひげ図
boxplot(RresultHWC2$residuals, horizontal=T)
abline(v=seq(-10,15,5), lty=3) # 点線を追記
# 残差のQQプロット: 正規確率プロット
qqnorm(RresultHWC2$residuals)
qqline(RresultHWC2$residuals, lty=2)
abline(h=seq(-10,30,5), lty=3) # 点線を追記
abline(h=0, lty=1) # 実線を追記
abline(v=0, lty=1) # 実線を追記
外れ値を除外する前後で残差のQQプロットが改善されたことを確認せよ。
# 計算結果要約(再掲)
summary(RresultHWC2)
##
## Call:
## lm(formula = Weight ~ Height + Chest, data = StudHWC2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -10.911 -3.404 -0.978 3.232 17.344
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -98.63620 7.71208 -12.79 <2e-16 ***
## Height 0.66740 0.04701 14.20 <2e-16 ***
## Chest 0.53132 0.04993 10.64 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.2 on 228 degrees of freedom
## Multiple R-squared: 0.6698, Adjusted R-squared: 0.6669
## F-statistic: 231.2 on 2 and 228 DF, p-value: < 2.2e-16
[参考: 出力の読み方の詳細] 統計検定のための、Rの出力結果からわかること(回帰分析編)
間隔尺度(interval scale) : セ氏やカ氏で測定された温度。原点は任意。
残差の二乗和を最小にする(最小二乗法)
上記以外に「多重共線性(multi-colinearity)」の問題もある。 逆行列が取れなくなる(ランク落ち)。 数値計算上、解が求まったかのような振る舞いをするものの不安定な解。 そのような場合は、組み込んでいる説明変数間の関係を見直す必要がある。
\[
{\textbf{X}}=
\begin{pmatrix}
1 & x_{11} & x_{12} & \cdots & x_{1k} & x_{1l} &
x_{1m} & \cdots & x_{1p}\\
1 & x_{21} & x_{23} & \cdots & x_{2k} & x_{2l} &
x_{2m} & \cdots & x_{2p} \\
1 & x_{31} & x_{32} & \cdots & x_{3k} & x_{3l} &
x_{3m} & \cdots & x_{3p} \\
\vdots & \vdots & \vdots & & \vdots & \vdots
& \vdots & & \vdots \\
1 & x_{i1} & x_{i2} & \cdots & x_{ik} & x_{il} &
x_{im} & \cdots & x_{ip} \\
\vdots & \vdots & \vdots & & \vdots & \vdots
& \vdots & & \vdots \\
1 & x_{n1} & x_{n2} & \cdots & x_{nk} & x_{nl} &
x_{nm} & \cdots & x_{np} \\
\end{pmatrix}
\]
ここで、例えば
\[ a) \; x_{im} = x_{ik} \;\;\;\;\;\; (i=1,2,...,n) \\ \]
\[ b) \; x_{im} = x_{ik} + x_{il} \;\;\;\;\;\; (i=1,2,...,n) \\ \]
\[ c) \; x_{im} = \alpha \; x_{ik} \;\;\;\;\;\; \alpha は実数, \; (i=1,2,...,n) \\ \]
等だったら、\(\textbf{X}\)はランク落ちする。 すなわち、逆行列が取れなくなり、多重共線性(multi-colinearity)が起こる。 また、既に投入した変量と相関が極めて高い変量を投入した場合も同様の事態が起きる。 このような場合は、投入した変量を見直す必要がある。
【最終レポート(後期前半)】
以下の事項について、WordファイルもしくはPDFファイルでレポートを作成し、Moodleから提出下さい。なお、提出フォームは11月14日(木)
昼から利用可能となります。
1.【必須項目】
かねてからお伝えしていたように、各自が興味を持って収集したデータに対して統計手法を適用し、何らかの知見を引き出して報告してください。統計手法として、本講義で紹介した統計手法には限定しません。また、対象とするデータは1つ以上いくつでもかまいません。
2.【必須項目】
本講義を受講することによって「統計」に抱くイメージが変化したかを述べよ。変化した場合
or
しない場合の各々で、講義を聞き終えた現状でどのように感じているか、また今後自分として統計に対してどのように取り組みたい/取り組みたくないかを説明せよ。
3.【任意項目(コメントがあれば嬉しいな)】 講義方法、講義の進め方
講義内容の感想だけでなく、講義方法等に付いて気になった点や感想、改善希望点をお聞かせください。
このページで取り扱ったプログラムだけを抜き出して以下に列挙しておく。
# ディレクトリの移動。必須ではない。個々人の設定に応じて。
setwd("D:/home_sub3/R_Dir") # ホームディレクトリに移動(Set Working Directory)
getwd() # 現在のディレクトリ位置を表示
list.files() # ファイル・ディレクトリ一覧を表示
setwd("KougiDS24") # ディレクトリを移動
list.files() # ファイル・ディレクトリ一覧を表示
# データの読み込み
Student24<-read.csv("StudAll24b.csv", skip=5,
header=TRUE, na.strings="NA")
dim(Student24)
colnames(Student24)
Student24[1:5,]
## 7.2. 前準備: 完全データの抽出
# データ切り出し
dim(Student24)
StudHWC<-na.omit(Student24[,3:5]) # 欠損値を含むデータを削除
dim(StudHWC)
colnames(StudHWC)
StudHWC[1:10,]
## 7.3. 散布図行列
# 散布図行列
plot(StudHWC)
## 7.4. プログラム & 計算結果
dim(StudHWC) # サンプルサイズを改めて確認
# 重回帰分析
RresultHWC<-lm(Weight~Height+Chest,
data=StudHWC) # 右辺に説明する変量をプラスマークで追加していく
# 計算結果要約
summary(RresultHWC)
## 7.5. 残差分析もお忘れなく
# 残差プロット
plot(StudHWC$Height, RresultHWC$residuals) # 対身長
abline(v=seq(140,190,10), lty=3) # 点線を追記
abline(h=seq(-10,30,10), lty=3) # 点線を追記
abline(h=0, lty=1) # ゼロを実線で追記
plot(StudHWC$Chest, RresultHWC$residuals) # 対胸囲
abline(v=seq(30,120,10), lty=3) # 点線を追記
abline(h=seq(-10,30,10), lty=3) # 点線を追記
abline(h=0, lty=1) # ゼロを実線で追記
plot(StudHWC$Weight, RresultHWC$residuals) # 対体重
abline(v=seq(30,100,10), lty=3) # 点線を追記
abline(h=seq(-10,30,10), lty=3) # 点線を追記
abline(h=0, lty=1) # ゼロを実線で追記
# 残差のヒストグラム
hist(RresultHWC$residuals, right=F, ylim=c(0,100))
abline(h=seq(0,100,20), lty=3) # 点線を追記
# 残差の箱ひげ図
boxplot(RresultHWC$residuals, horizontal=T)
abline(v=seq(-10,30,10), lty=3) # 点線を追記
# 残差のQQプロット: 正規確率プロット
qqnorm(RresultHWC$residuals)
qqline(RresultHWC$residuals, lty=2)
abline(h=seq(-10,30,10), lty=3) # 点線を追記
abline(h=0, lty=1) # 実線を追記
abline(v=0, lty=1) # 実線を追記
## 7.6. この分析のまとめ(結果の見方)
# 計算結果要約(再掲)
summary(RresultHWC)
## 8.1. 該当サンプルの除外
# 外れ値と考えたサンプルを抽出
StudTaiOver85<-StudHWC$Weight>85
StudHWC[StudTaiOver85,] # 体重が85超えのサンプル一覧
StudKyoLess50<-StudHWC$Chest<50
StudHWC[StudKyoLess50,] # 胸囲が50未満のサンプル一覧
StudHWC[StudTaiOver85|StudKyoLess50,] # 体重が85超え または 胸囲が50未満のサンプル一覧
# 一旦変数に置き直すと利用が簡単になる(理解がしやすくなる、実現していることは上記と同じ)
StudOutlier<-StudTaiOver85|StudKyoLess50
StudHWC[StudOutlier,] # 体重が85超え または 胸囲が50未満のサンプル
StudHWC2<-StudHWC[!StudOutlier,]
StudHWC2[1:10,]
dim(StudHWC2)
dim(StudHWC)
## 8.2. 改めて重回帰分析
dim(StudHWC2) # サンプルサイズを改めて確認
# 重回帰分析
RresultHWC2<-lm(Weight~Height+Chest, data=StudHWC2)
# 計算結果要約
summary(RresultHWC2)
## 8.3. 改めて残差分析もお忘れなく
# 残差プロット
plot(StudHWC2$Height, RresultHWC2$residuals) # 対身長
abline(v=seq(140,190,10), lty=3) # 点線を追記
abline(h=seq(-10,30,5), lty=3) # 点線を追記
abline(h=0, lty=1) # ゼロを実線で追記
plot(StudHWC2$Chest, RresultHWC2$residuals) # 対胸囲
abline(v=seq(30,120,10), lty=3) # 点線を追記
abline(h=seq(-10,30,5), lty=3) # 点線を追記
abline(h=0, lty=1) # ゼロを実線で追記
plot(StudHWC2$Weight, RresultHWC2$residuals) # 対体重
abline(v=seq(30,100,10), lty=3) # 点線を追記
abline(h=seq(-10,30,5), lty=3) # 点線を追記
abline(h=0, lty=1) # ゼロを実線で追記
# 残差のヒストグラム
hist(RresultHWC2$residuals, right=F, ylim=c(0,100))
abline(h=seq(0,100,20), lty=3) # 点線を追記
# 残差の箱ひげ図
boxplot(RresultHWC2$residuals, horizontal=T)
abline(v=seq(-10,15,5), lty=3) # 点線を追記
# 残差のQQプロット: 正規確率プロット
qqnorm(RresultHWC2$residuals)
qqline(RresultHWC2$residuals, lty=2)
abline(h=seq(-10,30,10), lty=3) # 点線を追記
abline(h=0, lty=1) # 実線を追記
abline(v=0, lty=1) # 実線を追記
## 8.4. 改めての分析のまとめ(結果の見方)
# 計算結果要約(再掲)
summary(RresultHWC2)