R言語でデータ解析をしよう!単回帰分析編 | SiTest (サイテスト) ブログ

メニューボタン閉じるボタン

R言語でデータ解析をしよう!単回帰分析編

R言語はRStudio(専用のIDE)や、データセットを用意してくれているなど、比較的簡単に触り始めることができます。

今回は、このRStudioとデータセット(車のスピードに関するデータ)を使って、最も単純な回帰分析をやってみました。

単回帰分析とは?

回帰分析には、単回帰分析、重回帰分析、ロジスティック回帰分析,…
などなど、いくつか種類があります。
その中で、単回帰分析は、最も基礎的な回帰分析です。

単回帰とは、1つの目的変数を、1つの説明変数で予測できるモデルのことです。
数式で表すと、2変量の関係を Y = aX + b という式で表せます。
Xが説明変数で、Yが目的変数です。

説明変数が複数存在する場合は、重回帰と言われます。

今回使うデータをプロットしてみる

では、今回使用するデータを見ていきましょう。
「cars」という、元々R言語で用意されている車のスピードに関するデータを使用します。
このデータは2変量で、「車のスピード[mph]と、停車するまでに必要な距離[ft]の関係」のデータです。
ちなみに、mphは「miles per hour」の略でマイル毎時、ftはフィートです。

RStudioの環境構築はこちらを御覧ください。

plot関数を使って、carsのデータをプロットしてみます。

> plot(cars, main = "cars")

なお、グラフの描画の仕方は、こちらに記事がございます。

相関があるか確認する

プロットしたデータを見ると相関がありそうですが、本当に相関があるのかを確認しましょう。
というのも、無相関のデータに対してでも、回帰式は算出することができます。
cor関数(correlation coefficient)で相関係数を求めることで、回帰式を求める意味があるかを検討します。

> cor(cars$speed, cars$dist)
[1] 0.8068949

この値は-1〜1の間の数値になり、1に近いほうが正の相関、-1に近いほうが負の相関があります。
今回の結果では1に近いため、正の相関があるとわかります。

回帰分析をやってみる

では、回帰分析をやる意味があるとわかったので、実際に回帰分析を行います。
といっても、R言語でやることはとても簡単です。
lm関数(linear model)を使って以下の式を実行します。

> result <- lm(dist~speed , data=cars)
> summary(result)

これを実行すると、以下の結果が出力されます。

出力に使われている英語単語の意味をまとめました。

  • Residuals : 残差(予測値と観測値の差)
  • Median : 中央値
  • Coefficients : 係数(aとかbのこと)
  • Estimate : 推定値(aとかbの推定値のこと)
  • Std.Error(Standard Error) : 標準誤差
  • t value : t値
  • Pr(>|t|) : p値
  • Intercept : 切片
  • Signif. codes : 有意性
  • Residual standard error : 残差の標準誤差
  • degrees of freedom : 自由度
  • Multiple R-squared : 決定係数
  • Adjusted R-squared : 自由度修正済み決定係数
  • F-statistic : F検定

結果的に、以下の回帰式が求められます。

y = 3.9324x - 17.5791

では、この回帰式をプロットしましょう。
carsのデータに重ねて、線を描画します。

> plot(cars)
> abline(result, lwd=1, col="red")

まとめ

RStudioを使って、単回帰分析を行い、データのプロットと回帰式の描画を行いました。
R言語を使ってみることに主眼を置いているため、回帰分析の詳細な説明は省いていますが、
以外に簡単に回帰分析ができることがわかっていただけたかと思います。
今回省いた検定などについての記事も書くので、お楽しみに!