Mplus中級編

     清水裕士
広島大学大学院総合科学研究科
中級編のメニュー
• Mplusを使う上で知っとくといい知識
 – 推定方法の違い、標準誤差の推定、欠損値推定

• 高度なモデルの制約
 – MODEL Constraint:の利用

• 多母集団同時分析
 – 複数のグループを同じモデルで比較

• カテゴリカル・非正規データの分析
 – 2値データ、順序データ、様々な分布データ

• 便利なコマンドやオプションの利用
 – 新しい変数の作成、データ入力フォーマットの選択など
知っておくと便利な知識
推定法について
• 我々がよく使う推定法
 – 最小二乗法(Un-weighted Least Square Method)
   • 分散分析、回帰分析などはすべてこの方法

• 構造方程式モデルの推定法
 – 最尤法(Maximum Likelihood Method)
   • 手元のデータが最も得られやすいようなモデルを推定
   • ESTIMATOR = ML;あるいはMLR;
 – 重みつき最小二乗法(Weighted Least Square Method)
   • 誤差を推定精度で重みづける最小二乗法
   • ESTIMATOR = WLS; あるいはWLSMV;
 – MCMCによるベイズ推定法
   • ベイズの定理に基づいた、モンテカルロ法を使った推定法
   • ESTIMATOR = BAYES;
標準誤差の推定法
• 普通の推定方法
 – MLやWLS
 – モデルの仮定に基づいて標準誤差を推定
  • 多変量正規性の仮定

• ロバスト標準誤差の推定
 – MLRやWLSMV
 – データの分布に合わせて標準誤差を補正
  • 多少多変量正規性から逸脱しても、妥当な結果
    – 推定値そのものは同じ
  • Mplusのデフォルトはこちらを使う。オススメはこちら。
    – ただ、ロバスト標準誤差の推定では、χ2乗検定がやや複雑にな
      る。そのため、今回はMLやWLSで書いている。
欠損値の推定法
• 従来の方法
 – リストワイズ削除による分析
   • 分散分析や回帰分析、因子分析はすべてこれを使う
   • 推定結果は多くの場合、バイアスを受ける

• 構造方程式モデルの欠損値推定
 – 完全情報最尤法(Full information ML)
   • 特に指定はいらない。基本はこれを使ってくれる。
   • サブジェクト全体を消すのではなく、欠損していない部分を
     すべて活用して推定
   • 欠損値のパターンに基づいてサブグループを作る
   • サブグループを多母集団分析でモデルを推定
      – 実際はEMアルゴリズムで推定する
欠損値推定における注意点
• 完全情報最尤法の適用範囲
 – 分散を推定している変数のみに適用
   • 内生変数はすべて分散が推定される
   • 外生変数は共分散を指定するか、分散を推定するように指
     定する必要がある
 – 分散が推定されている変数すべてが欠損の場合は、
   その欠損は推定できない

• あらかじめ欠損値を補完する方法も有効
 – DATA IMPUTATIONコマンドを使う

• 欠損値推定はしないよりも、したほうがいい!
高度なモデルの制約
高度なモデルの制約
• パラメータ名を付けることで、より詳細な制約
  が可能になる。
  – 例:talk と perのパスの合計が1になるようにする
     • ※違うパラメータは、違う行に書く(セミコロンは最後)
MODEL:
 idt on talk(p1)
        per(p2);
Model constraint:
  p1 = 1-p2;
新しいパラメータを作成する
• NEWオプションを使う
   – 既存のパラメーターから、新しいパラメータを作る
   – 例:媒介分析の間接効果をパラメータとして作成

MODEL:
 idt on talk(p1)
        con(p2);
 talk on con(p3);

Model constraint:
NEW(indirect);
indirect = p1 * p3;
新しいパラメータの推定結果
多母集団同時分析
二つ以上のグループを比較する
• 実験条件と統制条件でモデルが違うかも。
 – とはいえ、別々に分析するのは効率が悪い
  • サンプルサイズが半分になる
  • パスの比較を直接的にできない

• 多母集団分析の利点
 – 二つのグループでモデルが等しいかどうかを検討
  • 情報量基準で等値モデルと非等値モデルを比較
  • 同じであることが提案されたら、倹約的なモデルを提出できる
 – 部分的なパスの違いを検討
  • 一つのパスだけ異なっている、という仮定もOK
  • 全部が違うわけではないので、サンプルサイズを有効利用で
    きる
多母集団パス解析
• Sample1のデータを使う
  – 2つの条件(con = 0, con = 1)でパスモデルが等しいかどう
    かをチェック

VARIABLE:
 NAMES = ID idt talk per skill con;
 USEVARIABLES = idt talk per;
 MISSING = .;
 GROUPING = con(0 = control 1 = experiment);
  – Conが0のとき、1のときに名前を付ける(必須)。
非等値モデルのコード
VARIABLE:
 NAMES = ID idt talk per skill con;
 USEVARIABLES = idt talk per;
 MISSING = .;
 GROUPING = con(0 = control 1 = experiment);

ANALYSIS:
 TYPE = GENERAL;
 ESTIMATOR = ML;

MODEL:
idt on talk per;

OUTPUT:
 SAMPSTAT STDYX MODINDICES(ALL);
パス等値モデルのコード
VARIABLE:
 NAMES = ID idt talk per skill con;
 USEVARIABLES = idt talk per;
 MISSING = .;
 GROUPING = con(0 = control 1 = experiment);

ANALYSIS:
 TYPE = GENERAL;
 ESTIMATOR = ML;

MODEL:
idt on talk per(p1-p2);

OUTPUT:
 SAMPSTAT STDYX MODINDICES(ALL);
モデルの比較 1
• 尤度比検定による比較
 – 尤度比検定:χ2乗検定を用いて、等値モデルが非等
   値モデルより有意に適合してないなら、非等値モデ
   ルを採択する
   • ネストされたモデルのみ比較可能


 – 非等値モデル χ2(0) = 0
 – 等値モデル χ2(2) = 2.518

 – 尤度比 = χ2model2 – χ2model1 = 2.518 n.s.
   • 「等値モデルが適合していない」は採択されない
モデルの比較 2
• 情報量基準による比較
 – 非等値モデル




 – 等値モデル




 – 情報量基準が小さいほうが適合
  • 等値モデルが採用される
パス等値モデルの結果
誤差分散も等値モデルのコード
VARIABLE:
 NAMES = ID idt talk per skill con;
 USEVARIABLES = idt talk per;
 MISSING = .;
 GROUPING = con(0 = control 1 = experiment);

ANALYSIS:
 TYPE = GENERAL;
 ESTIMATOR = ML;

MODEL:
 idt on talk per(p1-p2);
 idt(var1);

OUTPUT:
 SAMPSTAT STDYX MODINDICES(ALL);
誤差分散の等値モデルの結果
グループで違うモデルを指定
• 二つのグループでモデルが違う場合

MODEL:
 idt on talk per;

MODEL experiment:
 idt on talk@0;

   – con = 1の場合(experiment)だけ、talkのパスを0に固
     定する場合は、上のように記述する
多母集団因子分析
• Sample2のデータを使う。
 – 男性と女性で因子構造が異なるかを検討

• 因子構造の等質性の段階
 – 配置不変:測定される項目と因子数が等しい
   • モデル図が同じ
 – 測定不変:因子負荷量が等しい
   • 配置不変+因子負荷量を等値
 – 弱因子不変:因子の分散と共分散が等しい
   • 測定不変+因子の分散・共分散を等値
 – 強因子不変:測定項目の誤差分散も等しい
   • 弱因子不変+測定誤差分散を等値
   • 強因子不変で初めて、標準化係数がすべて等しくなる
多母集団因子分析
• Mplusによる多母集団因子分析
 – 因子負荷量はデフォルトで等値になる
  • 測定不変を仮定している
  • 異なるモデルを想定する場合は、グループごとに指定
    する
 – 基本的な設定は、パス解析と同じ
  • ただ因子分析のほうが検討するポイントが多い
 – 平均構造をオフにすると推定が簡単になる
  • ANALYSISコマンドにMODEL = NOMEANSTRUCTURE;
配置不変のコード
MODEL:
 F1 by v1-v3*;
 F2 by v4-v6*;
 F1-F2@1;
 [F1-F2@0];

MODEL female:
 F1 by v1-v3*;
 F2 by v4-v6*;
 F1-F2; [F1-F2];
測定不変のコード
MODEL:
 F1 by v1-v3*;
 F2 by v4-v6*;
 F1-F2@1;
 [F1-F2@0];

MODEL female:
 F1-F2;
 [F1-F2];
弱因子不変のコード
MODEL:
 F1 by v1-v3*;
 F2 by v4-v6*;
 F1-F2@1;
 [F1-F2@0];
 F1 with F2(cov1);

MODEL female:
 [F1-F2];
強因子不変のコード
MODEL:
 F1 by v1-v3*;
 F2 by v4-v6*;
 F1-F2@1;
 [F1-F2@0];
 F1 with F2(cov1);
 v1-v6(err1-err6);

MODEL female:
 [F1-F2];
因子構造の比較
• 配置不変
 – BIC=2632
• 測定不変
 – BIC=2606
• 弱因子不変
 – BIC=2600
• 強因子不変
 – BIC=2574

 →強因子配置不変が有力候補
カテゴリカルデータの分析
これまではAmosでもできる
• ここからが、Mplusの真骨頂
 – 変数の尺度や分布に様々な仮定を当てはめられる

• 尺度の水準
 – 連続尺度・・・今までのモデル
 – 順序尺度・・・順序性があるカテゴリカルデータ
 – 名義尺度・・・順序性がないカテゴリカルデータ

• 目的変数の分布(後述)
 – 正規分布・・・今までのモデル
 – ポワソン分布・・・イベント生起度数の分布
 – 打ち切りデータ・・・測定がある段階までしかされてない
多変量正規性の仮定と心理尺度
• 一般に、構造方程式モデルは最尤法を使う
 – よって、多変量正規性の仮定が必要

 – しかし、心理尺度の多くは正規分布にならない
  • 臨床尺度は、「極端な人」を識別することを目的とする
  • 回答の負担を減らすため、2~4件法もよく使われる
  • 天井・床効果もよく起こる

• 連続・正規性から、順序・非正規性へ
 – 無理に連続・正規性にこだわる必要はない
  • 道具はそろっているし、その使い方も簡単
  • 使うことで慣れていき、報告が増え、当たり前になる
順序回帰分析
• sample1のデータを使う。
 – idtが1項目の尺度で測定されている
   • 連続変量とは言い難い。

• 順序カテゴリカルの指定
 – VARIABLES:コマンドにCATEGORICALオプション
 CATEGORICAL = idt;
   • ※順序、名義尺度は値がすべて整数である必要

 – ANALYSIS:コマンドで推定法を選択
   • WLS:重みつき最小二乗法・・・順序プロビット回帰分析
   • ML:最尤法・・・順序ロジスティック回帰分析
以下のコードを書く(ロジスティック回帰)
VARIABLE:
 NAMES = ID idt talk per skill con;
 USEVARIABLES = idt talk per;
 MISSING = .;
 CATEGORICAL = idt;

ANALYSIS:
 TYPE = GENERAL;
 ESTIMATOR = ML;

MODEL:
idt on talk per;
推定結果
ロジスティック回帰分析の注意点
• ロジスティック回帰分析で欠損値推定
 – ESTIMATOR = ML(MLR)で、外生変数の分散を推
   定することで欠損値推定した分析をしたい場合
  • さっきのコードでは走らない


• モンテカルロ積分(数値計算積分)が必要
 – ANLYSISコマンドで以下の文を書く
  • INTEGRATION = MONTECARLO;
ロジスティック回帰の解釈
• 得られる係数は回帰分析とだいぶ違う
 – それは、背後にロジット分布を仮定しているから
 – 得られる係数はロジット得点

• 解釈はオッズ比のほうがわかりやすい
 – 1が基準 → オッズ比が1なら回帰係数=0
 – オッズ比の解釈
  • 説明変数が1点上がると、一つ上の段階に回答する確率が
    何倍増えるか
  • オッズ比=1.8・・・説明変数が1点増えると、目的変数が一つ
    上の段階を選択する確率が1.8倍多くなる
  • オッズ比=0.7・・・一つ上の選択率が0.7倍 = 一つ下の選択
    率が1.43倍多い
ロジスティック回帰の解釈
• あるいは標準化係数を見るという手もある
 – 順序尺度の場合は、背後に潜在変数を仮定し、その分
   散を使って標準化係数を計算できる
 – 得られる係数の解釈は、説明変数が1SD増加した時、
   順序尺度の背後に仮定される潜在変数が1SD増加す
   る、という感じ
  • 基本的には、重回帰分析の標準化係数と同じ解釈でよい

• よくわからなかったら、プロビット回帰を使う
 – プロビット回帰分析は標準正規分布を仮定するので、
   回帰係数を標準得点として解釈できる
  • 結果(説明率)は、ロジスティック回帰分析とほぼ変わらない
以下のコードを書く(プロビット回帰)
VARIABLE:
 NAMES = ID idt talk per skill con;
 USEVARIABLES = idt talk per;
 MISSING = .;
 CATEGORICAL = idt;

ANALYSIS:
 TYPE = GENERAL;
 ESTIMATOR = WLS;

MODEL:
idt on talk per;
推定結果
順序因子分析
• sample2のデータを使う
 – 5件法で測定された尺度で因子分析
   • 基本的には5件であれば連続変量とみなしても構わないが、
     正規性が満たされない場合は順序尺度としてみなすのも一
     つの方法

• 指定方法は同じ
 CATEGORICAL = v1-v6;
 – 因子分析ではWLS(あるいはWLSMV)がオススメ
   • 項目数と水準数が多い場合は、MLではメモリが足りなくな
     る場合もある
   • また、順序のMLは適合度指標が限定される
以下のコードを書く
VARIABLE:
 NAMES = ID v1-v6 sex;
 USEVARIABLES = v1-v6;
 MISSING = .;
 CATEGORICAL = v1-v6;

ANALYSIS:
 TYPE = GENERAL;
 ESTIMATOR = WLS;

MODEL:
 F1 by v1-v3*;
 F2 by v4-v6*;
 F1-F2@1;
 [F1-F2@0];
推定結果
名義回帰分析
• sample2を使う。
  – 順序性がない回帰分析
  – 男性と女性(順序性はない)
    • sexを名義尺度として分析
    • ただし、2値の場合は順序も名義も結果は同じ


• 名義カテゴリカルの指定
  – VARIABLES:コマンドにNOMINALオプション
  NOMINAL = sex;
  – 名義回帰は、ML(あるいはMLR)でしか推定できない
以下のコードを書く
VARIABLE:
 NAMES = ID v1-v6 sex;
 USEVARIABLES = v1-v3 sex;
 MISSING = .;
 CATEGORICAL = v1-v3;
 NOMINAL = sex;

ANALYSIS:
 TYPE = GENERAL;
 ESTIMATOR = ML;

MODEL:
 F1 by v1-v3*;
 F1@1;
 [F1@0];

 sex on F1;
非正規性データの分析
打ち切りデータの分析
• 測定があるレベルで止まってしまうデータ
 – 東大生のセンター試験の得点
  • 多くの人が100点近くを取ってしまう
  • 本来は学力には差があるが、測定道具の限界であるレベ
    ル以上が識別できないような場合

 – 心理尺度の天井効果
  • これもある意味、打ち切りデータ

 – このようなデータを、打ち切られなかった場合にどの
   ような得点になるかを推定して分析をする
Mplusで打ち切りデータの分析
• sample1のデータを使う
 – Idtが仮に天井効果の場合を想定
   • 5点の人を4点に変換して分析
 – VARIABLES:コマンドに

 CENSORED = idt(a);
 – と書く。(a)は上が打ち切られている場合。天井効果。
 – (b)は下が打ち切られている場合。床効果。
まずは元のデータの推定結果
次にidtを無理やり天井効果に
VARIABLE:
 NAMES = ID idt talk per skill con;
 USEVARIABLES = idt talk per;
 MISSING = .;

DEFINE:
 if(idt==5) then idt = 4;

ANALYSIS:
 TYPE = GENERAL;
 ESTIMATOR = ML;

MODEL:
idt on talk per;
次に変換後に普通の分析




係数が小さくなる 説明率も低め
最後に打ち切りデータとして分析
VARIABLE:
 NAMES = ID idt talk per skill con;
 USEVARIABLES = idt talk per;
 MISSING = .;
 CENSORED = idt(a);

DEFINE:
 if(idt==5) then idt = 4;

ANALYSIS:
 TYPE = GENERAL;
 ESTIMATOR = ML;

MODEL:
idt on talk per;
打ち切りデータの推定結果




かなり元の推定値を復元できている(誤差は大きめ)
カウントデータの分析
• カウントデータ
 – 一定時間内の特定のイベントの生起度数
   • ポワソン分布に従うことが知られている
      – あるいは負の二項分布


• Mplusでのカウントデータの分析
 – USEVARIABLESコマンドに
 COUNT = idt(p);
 – と書く。(p)はポワソン分布のこと
 – 負の二項分布は(nb)と書く。
ポワソンを仮定した分析結果




• BICなどの値から、このデータはポワソンを仮
  定しないほうが適合していることがわかる
便利なオプションの利用
DEFINEコマンドの利用 P574
• 新しい変数を作成
 – 読み込んだ変数を利用して、新しい変数を作る

 – 数値変換
  • 線形・非線形変換、合成を行う
 – 条件式を利用した変数の作成
  • IF文を使って、条件に当てはまる場合の得点を与える
 – 関数を利用した変数の作成
  • Mplusに入っている関数を使って変数を合成・変換
数値変換
• 既存の変数で新しい変数を作る
 – X1 = v1 + v2;
 – X2 = v1 * v2 + v3 / v4 ;
 – X3 = LOG(v1);
    • 自然対数。常用対数はLOG10()
 – X4 = ABS(v2);
    • 絶対値
 – X5 = SQRT(v3);
    • 平方根
条件式を使う変換
• IF文を使う
 – IF( v1 == 1 AND v2 == 1) THEN group = 1;
 – IF( v1 == 2 OR v2 == 1 ) THEN group = 2;
    • groupは新しく作った変数名
    • “==“は等値を意味しており、”=“は代入を意味している
       – 混同しないように注意!
 – IF( v1 == 4) THEN group = _MISSING;
    • 欠損値に指定
Mplusの関数を使う
• MEAN:平均値を算出する
 – F1 = MEAN(v1-v3);

• SUM:合計値を算出する
 – F2 = SUM(v4-v6);

• CUT:カテゴリに分割する
 – CUT v1-v3(3);
    • V1-v3を、3以下を0、3より大を1にコードする
 – CUT v1 v3 v6( 2 4);
    • v1とv3とv6を、2以下を0、2より大4以下を1、4より大を2に
      コードする
DO文を使うと便利
• 複数の変数を一度に作成
 x1 = SQRT(v1);
 x2 = SQRT(v2);
 X3 = SQRT(v3);
 x4 = SQRT(v4);
 x5 = SQRT(v5);
 – こんなのも、下の1行で書ける
 DO(1, 5) x# = SQRT(v#);
DEFINEで定義した変数の利用
• USEVARIABLESオプションで指定する。
  – ただし、既存の変数の後に指定。
  – 例えば、次のように書く

  VARIABLE:
   NAMES = ID v1-v6;
   USEVARIABLES = f1 f2;
   MISSING = .;

  DEFINE:
   f1 = mean(v1-v3);
   f2 = mean(v4-v6);
DEFINE機能の便利な使い方
• いろんな従属変数で分析したい場合
    – USEVARIABLESとMODELの両方を変更しないといけない。
    – 次のように書いてみる
           • Xの変数を変えるだけで、モデルを変更することなくいろんなモデルを試せる

VARIABLE:
 NAMES = ID v1-v6;
 USEVARIABLES =v2-v5 x;
 MISSING = .;

DEFINE:
 x = v1;

MODEL:
 x on v2-v5;
DATA:コマンドのTYPEオプション
• デフォルトはINDIVIDUAL
 – 個人と変数の行列形式
 – 指定しなくてもこのタイプになる

• 要約データでの入力
 – 共分散行列形式
   • FULLCOV
   • 下三角行列の場合はCOV

 – 相関行列形式
   • FULLCORR
   • 下三角行列の場合はCORR
要約データセットの用意
• sample3にあるデータを数値部分だけコピー
 – メモ帳に張り付けて、sample3.datで保存
• 注意点
 – 平均値が上で、共分散行列が次。
 – 相関行列の場合は平均、標準偏差、相関行列の順
要約データでの入力
• 要約データを用意する
  – sample3.datを利用する
  – 平均値が入っているので、MEANSも書く
  – 人数も別で指定する。NOBSERVATIONS=人数。
DATA:
 FILE IS “sample3.dat";
 TYPE = MEANS FULLCOV;
 NOBSERVATIONS = 200;
VARIABLE:コマンドのUSEOBSERVATIONS
• 分析で使用するサブジェクトを指定する
 – 例えば、conが0のサブジェクトだけ使う場合


 USEOBSERVATIONS = CON == 0;

 – ==は等しい、という意味。=は代入なので違いに
   注意。
 – <や>、<=も使える。ANDやORなども使用可。
中級編の応用
項目反応理論
• Mplusでも項目反応理論が可能
 – 他のソフトウェアと一致させるためには要工夫
  •   1因子モデル
  •   各項目をCATEGORICALで指定
  •   推定法はML(あるいはMLR)で指定
  •   因子の分散を1、平均を0に固定
  •   推定値を1.702で割る
 – PLOTコマンドで、情報量関数や項目特性を出力
  • TYPE = PLOT3;
以下のコードを書く
VARIABLE:
 NAMES = ID v1-v6 sex;
 USEVARIABLES = v1-v6;
 MISSING = .;
 CATEGORICAL = v1-v6;
ANALYSIS:
 ESTIMATOR = ML;
MODEL:
 F1 by v1-v6*(p1-p6);
 F1@1; [F1@0];
MODEL Constraint:
 NEW(a1-a6);
 DO(1,6)p# = 1.702*a#;
PLOT:
 TYPE = PLOT3;
推定結果
• 項目の係数ではなく、a1-a6を確認
 – これはIRTの識別力を表している。
項目特性曲線(ICC)の見方




            項目特性曲線


            テスト情報関数
項目特性曲線
多母集団の項目反応理論
• 性別で項目反応理論の推定が等しいか検討
 – MLによるカテゴリカル分析は多母集団同時分析では
   実行できない
  • よって、WLSによる推定を使う
 – 閾値母数の指定方法
  [v1$1-v1$3];
  [v2$1-v2$4];
  [v3$1-v3$4];
  [v4$1-v4$4];
  [v5$1-v5$4];
  [v6$1-v6$4];
識別力は等値で閾値が異なるモデル
VARIABLE:                      MODEL female:
 NAMES = ID v1-v6 sex;          F1 by v1-v6*(p1-p6);
 USEVARIABLES = v1-v6;          F1@1;
 MISSING = .;                   [F1@0];
 CATEGORICAL = v1-v6;           [v1$1-v1$3];
 GROUPING = sex(1 = male 2 =
female);                        [v2$1-v2$4];
                                [v3$1-v3$4];
ANALYSIS:                       [v4$1-v4$4];
 TYPE = GENERAL;                [v5$1-v5$4];
 ESTIMATOR = WLS;               [v6$1-v6$4];

MODEL:                         PLOT:
 F1 by v1-v6*(p1-p6);           TYPE = PLOT3;
 F1@1;
 [F1@0];
MLによる多母集団の項目反応理論
• MLによるカテゴリカル分析は多母集団同時
  分析では実行できない
 – そこで、潜在クラス分析のKNOWNCLASSオプショ
   ンを利用して、同様の分析を行う
  • ただし、数値計算が必要なのでいろいろオプションを
    追加する必要がある


 – コードの詳しい意味は、上級編で。
識別力も閾値も異なるモデル
VARIABLE:                            %c#2%
 NAMES = ID v1-v6 sex;               F1 by v1-v6*(q1-q6);
 USEVARIABLES = v1-v6;               F1@1;
 MISSING = .;                        [F1@0];
 CATEGORICAL = v1-v6;                [v1$1-v1$3];
 CLASS = c(2);                       [v2$1-v2$4];
 KNOWNCLASS = c(sex = 1 sex = 2);    [v3$1-v3$4];
                                     [v4$1-v4$4];
ANALYSIS:                            [v5$1-v5$4];
 TYPE = MIXTURE;                     [v6$1-v6$4];
 ESTIMATOR = ML;
 ALGORITHM=INTEGRATION;             MODEL Constraint:
                                     NEW(a1-a6 b1-b6);
MODEL:                               DO(1,6)p# = 1.702*a#;
 %OVERALL%                           DO(1,6)q# = 1.702*b#;
 F1 by v1-v6*(p1-p6);
 F1@1;                              PLOT:
 [F1@0];                             TYPE = PLOT3;

Mplusの使い方 中級編