#はじめに
本記事は「Rによるデータサイエンス第2班(金 明晢 著,森北出版)」を独学していく上でのメモになります。
ずっとRファイルにコメントアウト形式でメモを書いていたのですが、流石に見づらいのでこちらに記事という見やすい形で残していきます。
Rの基本的な使い方な部分は各手法のなかで学んでいけるだろうということで、具体的な手法に関する章からまとめていこうと思います。
#線形回帰分析
####そもそも回帰分析とは
血圧=f(年齢)とすると血圧を__目的変数__,年齢を__説明変数__と呼びます。
回帰分析とは説明変数を用いて、目的変数を説明する統計モデルをデータから求めるデータ分析の方法のことです。
また回帰分析に関して説明変数が一つだと__単回帰分析__,複数だと__重回帰分析__と呼びます。
さらにそれらの中でも直線関係でモデル化する回帰分析を__線形回帰分析__,非線形関係でモデル化する回帰分析を__非線形回帰分析__と呼びます。
下に簡単な包括関係を示します。非線形回帰のモデルの形は一例です。
線形回帰で用いられる方法として最小二乗法があります。
以下では簡単のため単回帰(一つの目的変数を一つの説明変数で予測)の場合を考えています。
最小二乗法とは、実データ$y_{i}$と統計モデル $\hat{y} = a + bx_{i}$ の差(残差)の二乗和である$S_{e} = \sum(y_{i} - a - bx_{i})^{2}$を最小にするような係数$a$および$b$を求める手法です。偏微分方程式を解くことで解を求めることができます。
####ケーススタディ
(1)関数lm
線形回帰分析の関数lmは以下の通りです。
lm(formula,data,weights,subset,na.action)
formula:モデルの形式を指定 回帰式y=a+bxにしたい時はy~x
回帰式y=bxにしたい時はy~-1+x
data:データセットの名前 用いるデータ形式はデータフレーム
weights:説明変数への重み(初心者は無視) 指定しなければ重みなし
subset:データセットの一部分を用いる際に用いる部分を明記
na.action:欠損値扱いを指定 指定がない時は、欠損値のデータを除いたデータを用いて計算(__欠損値__とはなんらかの理由でデータが取れなかった値のこと)
(2)用いるデータ
cars #速度(speed,第一列)とブレーキ後に止まる時間(dist,第二列)のデータ
plot(cars);cor(cars$speed,cars$dist) #散布図とピアソン相関係数(いわゆる相関係数)をプロット
carsのデータは省略しますが、plotの結果は以下のようになり、相関係数が0.8068949と求まります。この散布図からspeedとdistの間には相関関係があることがわかります。
(3)解析の結果
cars.lm<-lm(dist~speed,data=cars)
summary(cars.lm)
speedを説明変数,distを目的変数として線形回帰解析を行なった結果をcars.lmに代入しています。
またsummary(cars.lm)で解析結果の要約を見ることができます。
Residualsは残差を表し、以下のコマンドでも確認することができます。
residuals(cars.lm)
summaryのCoefficientsは回帰直線$\hat{y}=a + bx_{i}$の回帰係数を表し、
Interceptの行には係数$a$の推測値、標準誤差、$t$値、$p$値が、
speedの行には推測値と関連する統計量が記されています。
関数roundを使うことで小数点を丸め込むことができ、
round(coefficients(cars.lm),2) # 小数点第二位までで丸めている
この結果を用いると回帰式は dist = -17.58 + 3.93 $\times$ speedと書くことができます。