7.プログラミングの実際について

7.プログラミングの実際について

Pythonで相関と回帰分析の処理と理解のための可視化について、仮想データを用い実際に例題を解いて解説します。

理解を深めるために、Pythonで相関と回帰分析を行い、その結果を可視化する例題を解説します。まず、NumPyMatplotlibを使用して仮想データを生成し、その後、相関と回帰分析を行います。

まず、必要なライブラリをインポートします。次に、ランダムな仮想データを生成します。この例では、xyの間に線形な関係があると仮定します。なお、matplotlibの表示で日本語が文字化けするのを解消するため、次のようにGooglecolabのセルに入力・実行して、japanize_matplotlibライブラリをインストールします。

pip install japanize-matplotlib

図.japanize_matplotlibライブラリをインストール


次に示したPythonコードをGooglecolabの別のセルに入力・実行してください。

図.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%を説明していると解釈できます。

したがって、これらの結果からは、解析された変数間に強い正の関連性があり、回帰モデルがデータをかなりよく説明していることが示されています。


このブログの人気の投稿

小論文 統計的因果推論の現場適用による排泄ケアの展望

排泄ケア相談員の育成に向けて

解説 排泄ケアの相談支援計画書作成のためのチェックリスト