Pandasで残差を計算する方法

はじめに

線形回帰モデルを作成する際には、データの変動を説明するために残差を計算することが一般的です。Pandasライブラリを使用して、データフレームに予測値と残差を追加する方法について解説します。

Pandasライブラリのインポートとデータフレームの作成

まずは、Pandasライブラリをインポートし、データフレームを作成します。

import pandas as pd
import numpy as np
# データフレームの作成
data = {'x': [1, 2, 3, 4, 5], 'y': [2, 4, 5, 4, 5]}
df = pd.DataFrame(data)
print(df)

上記のコードでは、x列に1~5までの整数が、y列に2, 4, 5, 4, 5という値が含まれるデータフレームを作成しています。

   x  y
0  1  2
1  2  4
2  3  5
3  4  4
4  5  5

このデータフレームを用いて、線形回帰モデルを作成します。

線形回帰モデルの作成と係数の取得

次に、線形回帰モデルを作成します。ここでは、xを説明変数、yを目的変数として、y = ax + bという式で表される線形回帰モデルを作成します。

from sklearn.linear_model import LinearRegression
# 線形回帰モデルの作成
X = df[['x']]
y = df['y']
lr = LinearRegression()
lr.fit(X, y)
# 係数の取得
a = lr.coef_[0]
b = lr.intercept_
print(f'a: {a}, b: {b}')

上記のコードでは、sklearn.linear_modelモジュールのLinearRegressionクラスを使用して、x列を説明変数、y列を目的変数とした線形回帰モデルを作成しています。lr.coef_属性には回帰係数、lr.intercept_属性には切片が格納されています。上記のコードで取得した回帰係数aと切片bを用いて、y = ax + bという式で表される線形回帰モデルを作成できます。

データフレームに予測値を追加する方法

続いて、作成した線形回帰モデルを用いて、予測値を求めます。

# 予測値の計算
df['y_pred'] = lr.predict(X)
print(df)

上記のコードでは、lr.predict()メソッドを使用して、x列の値から予測値を計算し、データフレームの新しい列’y_pred’に予測値を追加しています。

   x  y  y_pred
0  1  2     2.8
1  2  4     3.4
2  3  5     4.0
3  4  4     4.6
4  5  5     5.2

このように、データフレームに予測値を追加することができます。

残差の計算とデータフレームへの追加

次に、残差を計算し、データフレームに追加します。

# 残差の計算
df['residual'] = df['y'] - df['y_pred']
print(df)

上記のコードでは、’y’列から予測値’y_pred’を引いた残差を計算し、データフレームの新しい列’residual’に追加しています。

   x  y  y_pred  residual
0  1  2     2.8      -0.8
1  2  4     3.4       0.6
2  3  5     4.0       1.0
3  4  4     4.6      -0.6
4  5  5     5.2      -0.2

このように、データフレームに残差を追加することができます。

残差の分析と可視化

最後に、残差を分析し、可視化してみます。

# 残差の平均値と標準偏差
residual_mean = df['residual'].mean()
residual_std = df['residual'].std()
print(f'mean of residual: {residual_mean}')
print(f'standard deviation of residual: {residual_std}')
mean of residual: -8.881784197001253e-17
standard deviation of residual: 0.7745966692414833

上記のコードでは、残差の平均値と標準偏差を計算しています。

# 残差のヒストグラム
import matplotlib.pyplot as plt
plt.hist(df['residual'], bins=10)
plt.xlabel('residual')
plt.ylabel('frequency')
plt.title('Histogram of Residual')
plt.show()

上記のコードでは、Matplotlibライブラリを使用して、残差のヒストグラムを作成しています。

上記のヒストグラムから、残差が正規分布に従っていることがわかります。

まとめ

今回は、Pandasライブラリを使用して、線形回帰モデルの残差を計算する方法について解説しました。具体的には、データフレームに予測値と残差を追加する方法、残差の計算方法、残差の分析と可視化方法について説明しました。線形回帰モデルの残差を計算することで、モデルの精度を評価することができます。

本記事が、Pandasを使用して線形回帰モデルの残差を計算する方法について理解するのに役立つことを願っています。