多変量データ

Definition:Multivariate Data

多変量データ(multivariate data)とは、1つの観測対象に対して複数の変数(variable)が同時に観測されたデータである。

例えば、ある人物について次のような情報が存在するとき、

身長 体重 年齢 血圧
170 cm 65 kg 35 歳 120 mmHg

身長・体重・年齢・血圧という複数の変数が同時に記録されており、このようなデータを多変量データという。

単変量データ(univariate data)・二変量データ(bivariate data)との対比を以下に示す。

データの種類 変数の数 例
単変量データ(univariate) 1 身長のみ
二変量データ(bivariate) 2 身長・体重
多変量データ(multivariate) 3以上 身長・体重・年齢・血圧

多変量データの本質

多変量データの本質は、変数同士の関係性を同時に扱う点にある。

単変量データでは、平均・分散・ヒストグラムなど、1変数内部の性質しか扱えない。しかし多変量データでは、

  • 身長が高い人は体重も重いか
  • 年収と学歴は関係するか
  • 気温と売上は連動するか

のような、変数間の依存関係・共変動・構造を扱うことができる。

多変量データの数学的表現

観測ベクトル

多変量データでは、各観測対象を列ベクトルとして表現する。\[\mathbf{x} = (x_1,\, x_2,\, \dots,\, x_p)^\top \in \mathbb{R}^p\]

  • $\mathbf{x}$:1つの観測対象($p$ 次元列ベクトル)
  • $p$:変数の数(次元数)
  • $x_i$:第 $i$ 番目の変数の値

例えば身長・体重・年齢・血圧の4変数の場合は、\[\mathbf{x} = (170,\; 65,\; 35,\; 120)^\top\]

は4次元ベクトルである。

データ行列

観測対象が $n$ 個存在する場合、多変量データは $n \times p$ のデータ行列として表現される。\[X = \begin{pmatrix}x_{11} & x_{12} & \cdots & x_{1p} \\x_{21} & x_{22} & \cdots & x_{2p} \\\vdots & \vdots & \ddots & \vdots \\x_{n1} & x_{n2} & \cdots & x_{np}\end{pmatrix} \in \mathbb{R}^{n \times p}\]

  • $n$:観測数(サンプルサイズ)
  • $p$:変数数(次元数)
  • 第 $i$ 行 $(x_{i1},x_{i2},\cdots ,x_{ip})$:第 $i$ 番目の観測対象
  • 第 $j$ 列 $(x_{1j},x_{2j},\cdots ,x_{nj})^\top$:第 $j$ 番目の変数

変数の種類と尺度

多変量データでは、変数の型(尺度)が分析手法の選択に直結するため極めて重要である。

数量変数と質的変数

種類 説明 例 数学演算
数量変数(Quantitative) 数値として測定される 身長・体重・気温 可
質的変数(Qualitative) カテゴリを表す 性別・血液型・国籍 不可

尺度(Scale)の分類

スティーブンス(S. S. Stevens, 1946)の尺度分類が広く用いられる。

名義尺度(Nominal Scale)

対象を区別するだけの尺度。順序・差・比率の概念を持たない。

例:血液型、性別、国籍

順序尺度(Ordinal Scale)

順序のみが有意味。差は定義できない。

例:満足度評価、学年、ランク

間隔尺度(Interval Scale)

差に意味がある。ただし真のゼロが存在しないため比率は無意味。真のゼロが存在しないとは、数値の「0」が「全く存在しないこと(無)」を意味していない、ということ。摂氏0度は、単に「水が凍る点」という基準点にすぎない。0はあくまで人間が決めた、便宜上のスタート地点。

例:摂氏温度、西暦年

比率尺度(Ratio Scale)

真のゼロを持ち、差・比率ともに有意味。

例:長さ、重量、時間、年収

4尺度の比較

尺度 区別 順序 差 比率 例
名義尺度 ○ × × × 血液型・性別
順序尺度 ○ ○ × × 満足度・ランク
間隔尺度 ○ ○ ○ × 摂氏温度・西暦
比率尺度 ○ ○ ○ ○ 身長・重量・年収

多変量データの取り扱い

python

import pandas as pd

df = pd.DataFrame({
"age": [20, 30, 40],
"income": [300, 500, 800],
"gender": pd.Categorical(["M", "F", "M"])
})

データの確認・前処理

df.info()                              # 型・メモリ情報
df.describe() # 基本統計量

df.isnull().sum() # 列ごとの欠損数
df.dropna() # 欠損行の除去
df.fillna(df.mean(numeric_only=True)) # 平均値補完

R

df <- data.frame(
age = c(20, 30, 40),
income = c(300, 500, 800),
gender = factor(c("M", "F", "M"))
)

データの確認・前処理

str(df)        # 構造確認(型・次元)
summary(df) # 基本統計量

is.na(df) # 欠損値の位置確認
na.omit(df) # 欠損行の除去

scale(df[, c("age","income")]) # 数値列のみ標準化

Mathematics is the language with which God has written the universe.





















数理統計学 機械学習