二変量解析と多変量解析
散布図、ペアプロット、相関ヒートマップ、グループ別統計を学びます。
「二変量解析と多変量解析」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。
1つの変数から複数の変数へ
二変量分析では2つの変数間の関係を調べ、多変量分析では複数の変数を一度に調べます。
目的は、どの特徴量が一緒に変化するかを見つけ、相互作用を発見し、目的変数の予測に役立つ変数を判断することです。
plt.scatterによる散布図
散布図は2つの数値変数を互いにプロットします。各点は1つの行を表し、傾向、クラスタ、外れ値を明らかにします。
import matplotlib.pyplot as plt
import seaborn as sns
plt.scatter(df["height"], df["weight"], alpha=0.4)
plt.xlabel("Height")
plt.ylabel("Weight")
plt.show()散布図の読み方
方向(上向き = 正の関係、下向き = 負の関係)、強さ(帯状に密集しているか、雲のように散らばっているか)、形状(線形か曲線か)に注目します。
sns.scatterplotでhueを指定すると、カテゴリごとに点を色分けしてグループ構造を明らかにできます。
sns.scatterplot(x="height", y="weight", hue="gender", data=df, alpha=0.5)
plt.show()df.corr()による相関
df.corr()は、数値列間のピアソン相関をペアごとに計算します。値は-1から+1の範囲になります。
- +1 → 完全な正の線形関係
- 0 → 線形関係なし
- -1 → 完全な負の線形関係
corr = df.corr(numeric_only=True)
print(corr["price"].sort_values(ascending=False))相関ヒートマップ
相関行列はヒートマップにすると読みやすくなります。annot=Trueを渡すと、各セルの中に値を表示できます。
正と負の相関を異なる色で示すため、発散型カラーマップ(例:coolwarm)を使います。
corr = df.corr(numeric_only=True)
sns.heatmap(corr, annot=True, fmt=".2f", cmap="coolwarm", center=0)
plt.show()多重共線性の発見
2つの特徴量に非常に高い相関(例:0.9超)がある場合、それらは重複した情報を持っています。これは多重共線性と呼ばれ、線形モデルを不安定にする可能性があります。
ヒートマップを使うと、重複した情報を持つペアがすぐに見つかるため、どちらか一方を削除できます。
corr = df.corr(numeric_only=True).abs()
high = corr[(corr > 0.9) & (corr < 1.0)]
print(high.dropna(how="all"))相関は因果関係を意味しない
強い相関があるからといって、一方の変数が他方の原因であるとは限りません。隠れた第三の変数が両方に影響している可能性もあれば、関係が偶然である可能性もあります。
相関は仮説を立てるために使い、その後、ドメイン知識と統制された分析によって検証します。
sns.pairplotによるペアプロット
sns.pairplotは、数値列のあらゆるペアについて散布図のグリッドを描き、対角線上にはヒストグラムまたはKDEを表示します。
すべての二変量の関係を一度にざっと確認する最速の方法です。列数の2乗に比例して規模が大きくなるため、大規模なデータセットでは列を限定します。
sns.pairplot(df[["height", "weight", "age", "income"]], hue="gender")
plt.show()グループ別の箱ひげ図
数値変数とカテゴリ変数の関係を調べるには、箱ひげ図のx軸にカテゴリを配置します。グループごとの分布をすぐに比較できます。
sns.boxplot(x="city", y="income", data=df)
plt.xticks(rotation=45)
plt.show()グループ別の集計
プロットは数値で補完できます。groupbyとaggを使うと、カテゴリごとに数値列を要約できます。
これは表形式で行う多変量分析です。平均、中央値、件数を横に並べて比較できます。
summary = df.groupby("city")["income"].agg(["mean", "median", "count"])
print(summary.sort_values("mean", ascending=False))エンコーディングによる多変量プロット
視覚的エンコーディングを使うと、x、y、色(hue)、サイズによって、3つ以上の変数を1つのグラフに取り込めます。
別々のプロットを作らなくても、第三の次元によって関係がどのように変化するかを示せます。
sns.scatterplot(x="height", y="weight", hue="age", size="income", data=df)
plt.show()クイックチェック:相関の範囲
df.corr()を実行し、2つの特徴量の間に-0.85という値が表示されたとします。
まとめ:二変量分析と多変量分析
これで、変数間の関係を調べられるようになりました。
- 2つの数値変数には
plt.scatter/sns.scatterplot - 相関行列には
df.corr()とsns.heatmap(annot=True) - 高い相関は多重共線性の可能性を示すため、重複した特徴量を削除します
- すべてのペアの概要には
sns.pairplot - 数値変数とカテゴリ変数の比較には、グループ別の箱ひげ図と
groupby().agg()
次は、特徴量を予測対象に直接結び付けます。
よくある質問
「二変量解析と多変量解析」レッスンは無料ですか?
はい。「二変量解析と多変量解析」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。
「二変量解析と多変量解析」で何を学びますか?
散布図、ペアプロット、相関ヒートマップ、グループ別統計を学びます。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn AI with Pythonを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「二変量解析と多変量解析」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn AI with Pythonレッスンでコードを書いて実行できますか?
はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- EDA ワークフローとデータプロファイリング
- 単変量解析
- 二変量解析と多変量解析
- 特徴量分布と目的変数の分析