7.プログラミングの実際について
7.プログラミングの実際について
Pythonで相関と回帰分析の処理と理解のための可視化について、仮想データを用い実際に例題を解いて解説します。
理解を深めるために、Pythonで相関と回帰分析を行い、その結果を可視化する例題を解説します。まず、NumPyとMatplotlibを使用して仮想データを生成し、その後、相関と回帰分析を行います。
まず、必要なライブラリをインポートします。次に、ランダムな仮想データを生成します。この例では、xとyの間に線形な関係があると仮定します。なお、matplotlibの表示で日本語が文字化けするのを解消するため、次のようにGooglecolabのセルに入力・実行して、japanize_matplotlibライブラリをインストールします。
pip install
japanize-matplotlib
次に示したPythonコードをGooglecolabの別のセルに入力・実行してください。
# 必要なライブラリのインポート
import numpy as
np
import
matplotlib.pyplot as plt
import
japanize_matplotlib # matplotlibの日本語文字化け解消
# 仮想データの生成
np.random.seed(0)
x =
np.random.rand(100) * 10 # 0から10の範囲でランダムなxのデータを生成
y = 2 * x +
np.random.randn(100) * 2 # y = 2x + ノイズとして正規分布に従う乱数を追加
# 相関係数の計算
correlation =
np.corrcoef(x, y)[0, 1]
print("相関係数:", correlation)
次に、散布図をプロットしてデータの分布と回帰直線を可視化します。
# 散布図のプロット
plt.scatter(x,
y, label='Data')
# 回帰直線のプロット
plt.plot(np.unique(x),
np.poly1d(np.polyfit(x, y, 1))(np.unique(x)), color='red', label='Regression
line')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('散布図と回帰直線')
plt.legend()
plt.show()
# 線形回帰分析
from scipy.stats
import linregress
slope, intercept,
r_value, p_value, std_err = linregress(x, y)
print("回帰係数:", slope)
print("切片:", intercept)
print("決定係数:", r_value ** 2)
実行結果
この結果を解釈すると、まず相関係数が0.9445と非常に高い値であることから、解析された変数間の強い正の相関関係が示されています。相関係数が1に近いほど、変数間の関連性が強くなります。したがって、この結果からは、解析された変数間の強い線形関係があることが示唆されます。次に、回帰分析の結果から、回帰係数が1.9874であることがわかります。これは、1つの変数が1単位増加すると、もう1つの変数が約1.9874単位増加することを示しています。また、切片が0.4443であることから、回帰直線が原点を通ることも示唆されます。最後に、決定係数が0.8921であることがわかります。これは、モデルが観測されたデータをどの程度説明できるかを示す指標であり、0から1の値を取ります。決定係数が1に近いほど、回帰モデルがデータをよく説明しています。この場合、決定係数が0.8921であり、かなり高い値であるため、回帰モデルがデータの89.21%を説明していると解釈できます。
したがって、これらの結果からは、解析された変数間に強い正の関連性があり、回帰モデルがデータをかなりよく説明していることが示されています。