Juliaで線形回帰、最小二乗法で回帰直線を描く方法

どうも、木村(@kimu3_slime)です。

今回は、Juliaで線形回帰、最小二乗法で回帰直線を描く方法を紹介します。

参考:Juliaで散布図・相関図を描き、相関係数を求める方法

 

準備

RDatasets, StatsPlots, GLMを使うので、持っていなければインストールしておきましょう。

準備として、以下のコードを実行しておきます。

 

線形回帰、最小二乗法で回帰直線を描く方法

RDatasets.jlから、アイリス(iris, アヤメ)のデータを使いましょう。

150 rows × 5 columns

SepalLengthSepalWidthPetalLengthPetalWidthSpecies
Float64Float64Float64Float64Cat…
15.13.51.40.2setosa
24.93.01.40.2setosa
34.73.21.30.2setosa
44.63.11.50.2setosa
55.03.61.40.2setosa

 

各変数での散布図、相関図は、次のようにして得られます。

図は得られますが、データを近似する直線(回帰直線)を得る方法がわかりません。

相関係数の一覧、相関係数は次の通り。

 

線形回帰、最小二乗法とは

線形回帰(linear regression)は、データ\((x_1,\dots,x_N),(y_1,\dots,y_N)\)を使って、変数\(x,y\)間の関係を直線\(y= a+bx\)(線形モデル)として予測する考え方です。

切片\(a\)、傾き\(b\)を推測する必要がありますが、その方法として最小二乗法(least squares method)が知られています。それは残差の二乗和(RSS, residual sum of squares)

\[\sum_{i=1}^n \varepsilon_i ^2 = \sum_{i=1}^n (y_i -(a+bx_i))^2\]

を最小化する\(a,b\)を求める方法です。

 

簡単な例

「ls1 =fit(LinearModel,@formula(Y ~ X), データフレーム)」で、データフレームの2つの変数間について、最小二乗法による線形回帰モデルを作ります。

Coef.が回帰係数、すなわち切片と傾きの推測値です。Std. Errorは、推定量の標準偏差=標準誤差(standard error)で、推定の精度を表します。

他にも、回帰係数が0であるかどうかについてのt検定におけるt値とp値、推定量の95%信頼区間の下限と上限が示されています。

 

「coef(回帰モデル)」で、回帰係数を取り出せます。

 

これを使えば、散布図と回帰直線を合わせた図が作れますね。

 

一般化

ここまでの結果を一般化して、データフレームと2つの変数名を与えたら、回帰係数を求め、散布図と回帰直線を描く関数を作りましょう。

回帰モデルの作成で「@formula(PetalWidth ~ PetalLength)」と書いていた部分を、「Term(Symbol(nameY)) ~ Term(Symbol(nameX))」と一般化しました。

fitの第2変数では特定の書式に則った数式が必要で、StatsModels.jlのConstructing a formula programmaticallyを参考に書いています。

 

試してみましょう。

標準誤差はさきほどより大きく、回帰直線と散布図のずれを見ても、直線的な関係があるかは微妙ですね。

 

アイリスには品種ごとのデータがあるので、グループ分けして線形回帰してみましょう。

 

品種setosaでは、直線的な関係はなさそうです。

 

 

品種versicolorとvirginicaでは、がく片の長さ(SepalWidth)が長いほど花弁の長さが長い(PetalWidth)が長いという関係にあることがわかりました。

 

以上、Julia線形回帰、最小二乗法で回帰直線を描く方法を紹介してきました。

散布図の一覧を得るのに比べて、個別に図、回帰係数、標準誤差などが求められるのが嬉しいですね。

木村すらいむ(@kimu3_slime)でした。ではでは。

 

1から始める Juliaプログラミング
進藤 裕之(著), 佐藤 建太(著)
コロナ社 (2020-03-26T00:00:01Z)
5つ星のうち4.5
¥7,353 (コレクター商品)

 

こちらもおすすめ

Juliaで散布図・相関図を描き、相関係数を求める方法

Juliaでデータのヒストグラム、箱ひげ図を描き、平均、中央値、分散を求める方法

最小二乗法とは:最小二乗解の求め方、正規方程式、射影による理解