標準的なIRTモデルの仮定
一次元性 :能力は1次元で表せる
局所独立性 :で条件づけた下での項目間の独立性。尤度関数の構築のために仮定。
一次元性¶
2PLMのように1次元の能力パラメータをもつモデルは、能力が1次元で表せることを仮定している。
データがこのモデルに合っているかどうかを確かめる必要がある
検証方法¶
スクリープロットを描き、第1主成分が突出して高ければ一次元性を満たすと判断する。厳密な判断基準はない。
Source
# ------------------------------
# サンプルデータの生成
# ------------------------------
import numpy as np
import pandas as pd
np.random.seed(42)
n_persons = 100
n_items = 10
# 能力θと項目困難度bを設定
theta = np.random.normal(0, 1, n_persons)
b = np.random.normal(0, 0.2, n_items)
a = np.random.normal(0, 0.1, n_items)
# 2PLMで応答を生成
prob = 1 / (1 + np.exp(- a * (theta[:, None] - b)))
responses = np.random.binomial(1, prob)
df = pd.DataFrame(responses, columns=[f"item_{i+1}" for i in range(n_items)])
# print(df.head())
# ------------------------------
# スクリープロット
# ------------------------------
import numpy as np
from ordinalcorr import hetcor
cor_matrix = hetcor(df)
eigenvalues, _ = np.linalg.eig(cor_matrix)
eigenvalues = np.sort(eigenvalues)[::-1]
import matplotlib.pyplot as plt
plt.figure(figsize=(4, 2))
plt.plot(range(1, len(eigenvalues) + 1), eigenvalues, 'o-', linewidth=2)
plt.title("Scree Plot")
plt.xlabel("Component Number")
plt.ylabel("Eigenvalue")
plt.xticks(range(1, len(eigenvalues) + 1))
plt.grid(True)
plt.show()
局所独立性(local independence)¶
局所独立性(local independence) の定義は「能力の値を固定したもとで、各項目の反応は独立」というもの。
局所独立性が仮定される理由は2つある
が反応傾向の変動要因だから
尤度関数が作りやすいから
1. が反応傾向の変動要因だから¶
IRTモデルでは、各項目への反応傾向(正答率)が変化する要因はであると仮定して項目反応曲線をモデリングしている。
が各項目の反応に影響しているため、が反応同士の疑似相関を起こす第3の変数(交絡因子)になっている状態。しかしの値を固定する(統制する)と、この疑似相関は消えるはず。
もし以外にに影響を与える共通の要因(以外の交絡因子)があるなら、局所独立性が満たされない。ということ。
2. 尤度関数が作りやすいから¶
尤度関数(≒反応パターンの同時分布)を各項目の積
とするために、で条件づけた下での項目間の独立性を仮定している。 (なおは項目パラメータ、は二値の反応、は反応パターン行列、はICC)
局所独立性の正確な検証は難しいが、統計量が参考によく用いられる。
統計量は
によって項目間の相関関係が十分に説明されているとすれば、その影響を除去した残差得点同士の相関は0に近くなるはず
以外に項目間に相関をもたらす要因がある場合はの影響を除いてもなお相関が残る
という考え方をとっている。
目安としては、「の項目ペアは局所独立性の侵害を疑う必要がある」とされるが0.20も絶対の閾値ではない。
局所依存性があるとどうなるのか?¶
局所依存性を考慮した場合に比べて項目母数の推定誤差が増加(登藤直弥. 2012. 項目反応間の局所依存性が項目母数の推定に与える影響)