プログラミングの実際について
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)
実行結果
したがって、これらの結果からは、解析された変数間に強い正の関連性があり、回帰モデルがデータをかなりよく説明していることが示されています。