狠狠撸

狠狠撸Share a Scribd company logo
惭辫濒耻蝉导入编?入门编

     清水裕士
広島大学大学院総合科学研究科
惭辫濒耻蝉导入编
Mplusとは
? Muthén&Muthénが作った統計ソフトウェア
  – 主に構造方程式モデリングのためのソフト
  – http://www.statmodel.com/

? 非常に高度な分析が可能
  – Amosができることは全部可能
  – カテゴリカルデータ分析、マルチレベル分析、潜在クラス
    分析、それらの組み合わせ、など

? CUI(Character User Interface)を採用
  – 最初はやや慣れが必要
  – 最新版(Mplus7)は、一部GUIに対応
惭辫濒耻蝉の编集画面
惭辫濒耻蝉の出力
惭辫濒耻蝉の出力 ダイアグラム
Mplusとは
? 機能の割にかなり安い
 – 学生の場合
  ? 基本モデル 2万円弱
  ? 全部入り  4万円弱
 – 教員の場合
  ? 基本モデル 5万6千円
  ? 全部入り  8万4千円


 – しかも、同じバージョンなら永久に使える
  ? アップデートする場合は、1年間は無料。それ以降は有料
Amosとの違い
? GUI(Amos)かCUI(Mplus)か
  – これには一長一短がある
     ? 簡単なパスモデルはAmosのほうが簡単
     ? Mplusだと、”F1 by v1-v40;” というコードだけで40項目の因子分析ができるが、
       Amosだと大変。

? 分析の機能
  – 完全にMplus>Amos
     ? Amosでできることはすべてできる

? ライセンスの扱い
  – AmosはIBMなので高価&年単位で更新が必要
  – Mplusは一度購入すれば、同じバージョンならずっと使える

? 日本語への対応
  – Amosは日本語に完全対応 Mplusは完全不対応
  – 今後もMplusは日本語に対応することはない
惭辫濒耻蝉入门编
入門編メニュー
? データの読み込み
 – データセットの準備
 – 基本的なコードの書き方

? とりあえず回帰分析
 – 重回帰分析
 – パス解析

? とりあえず因子分析
 – 確認的因子分析
 – 探索的因子分析
Mplusの構成
? データファイル
 – Mplusのデフォルトでは.datの拡張子。でも.txtとかでも
   よい。

? 入力ファイル
 – inpファイルと呼ばれる。これにすべてのコードを書く。
 – 拡張子は.inp

? 出力ファイル
 – outファイルと呼ばれる。これに分析結果が出力される。
 – 拡張子は.out
データファイルの読み込み
? 読み込みファイル
 – datファイル(.dat)
 – テキストファイル(.txt)
 – csvファイル(.csv)

? データ区切り
 – スペース
 – タブ
 – カンマ

? 僕個人のオススメは、タブ区切りのテキストファイル
例:エクセルのデータからMplusへ 0
? Mplus用のフォルダを作る
 – Mplusは日本語のパスを読めない!
   ? ユーザー名が日本語の人は、マイドキュメントにおい
     ても認識されない

 – 清水からのオススメ
   ? C:?mplusfile?~など、Cドライブに直接フォルダを作る
   ? 僕はDドライブにDropboxを置いているので、そこに。
例:エクセルのデータからMplusへ 1
? エクセルのデータを選択してコピー
 – 変数名は含めない
例:エクセルのデータからMplusへ 2
? メモ帳にそのまま張り付ける
例:エクセルのデータからMplusへ 3
? ファイルの保存場所
 – Mplusの入力ファイル(.inp)と同じフォルダに入れるこ
   とをオススメする。詳細は後述。
 – さっき作った、Mplus用のフォルダの中に入れる

? 保存方法
 – 保存するとき、拡張子は.datのほうが便利かもしれな
   いけど、そこは好みで。
  ? .datか、.txt、.csvあたりで。
 – 日本語は不対応なので、半角英数字で。
Mplus言語のルール
? 文章はすべて半角英数字
  – 日本語不可
  – 大文字?小文字の区別はない

? 文末にはセミコロン”;”を付ける
  – 改行だけでは、同じ文章だと判断される

? “IS”や”ARE”は”=“で代用できる
  – マニュアルには”IS”とか”ARE”が使われているが、”=“で大丈夫。

? その他
  – コメントアウトは”!”
Mplusの基本コード
? DATA:
  – データファイルのある場所を指定
? VARIABLE:
  – 分析に使う変数の指定
? ANALYSIS:
  – 分析方法の指定
? MODEL:
  – モデルの指定
? OUTPUT:
  – 出力の設定
? その他
  – PLOT、SAVEDATA、DEFINEなどなど
こんな感じ
DATA: コマンド
? 使うデータファイルを指定する
 – ファイルのパスを指定する
  ? FILE = “D:?Dropbox?????sample1.dat”;
  ? パスの最後にセミコロンを忘れずに!

 – inpファイルと同じフォルダに入れる場合???
  ? FILE = “sample1.dat”;
  ? ファイル名だけでよい。こちらが簡単なのでオススメ

? リストワイズ削除の時には以下を書く
 – LISTWISE = ON;
 – ただ、LISTWISEは基本は使わなくてよい
VARIABLE: コマンド
? 読み込んだ変数を指定する
 – データファイルにある変数名をすべて書く
 – NAMES = v1 v2 v3;
    ? 上の場合、v1-v3; と書くこともできる

? 分析に使用する変数を指定する
 – USEVARIABLES = v1 v2;
    ? 書き方は上と同じ

? 欠損値を指定する
 – MISSING = .;
    ? ピリオドの場合は上のように書く
    ? ダブルコーテーションはつけない
ANALYSIS: コマンド
? 分析方法を指定する
 – TYPE = GENERAL;
   ? 基本的なSEMをする場合はこれだけでOK。
   ? 他に、TWOLEVEL(マルチレベルモデル) 、MIXTURE
     (潜在クラス分析)、EFA(探索的因子分析)などがある。

 – ESTIMATOR = MLR;
   ? デフォルトはMLR。ロバスト最尤法のこと。
   ? 他に、ML(最尤法)、WLSMV(重みつき最小二乗法)、
     BAYES(ベイズ法)、GLS(最小二乗法)などがある。
      – Amosと結果を一致させたいなら、MLを使用するといい。
MODEL: コマンド
? モデルを指定する
 – モデルの書き方の基本は以下の5つ。
   ?   回帰分析(構造方程式)は ON
   ?   因子分析(測定方程式)は BY
   ?   共分散は WITH
   ?   変数名だけを書くと、分散を推定する指定
   ?   [変数名]と書くと、平均値を推定する指定

? パラメータの制約をする
 – MODEL CONSTRAINT:の後に書く
   ? これについては、後述
OUTPUT: コマンド
? 出力の設定をする
 – 記述統計量を出力する
  ? SAMPSTAT
 – 標準化係数を出力する
  ? STANDARIZED
  ? しかし、STDYXと書いた方が余計なのが出なくて便利。
 – 信頼区間を出力する
  ? CINTERVAL
  ? ブートストラップ信頼区間を出力する場合は、
    CINTERVAL(BOOTSTRAP)と書く。
その他のコマンド
? SAVEDATA: コマンド
  – 因子得点などを保存する
  – SAVE = FSOCRES; で因子得点を保存
    ? File = ###.txt; でファイル名を指定。日本語不可。

? PLOT:コマンド
  – グラフなどを出力する
    ? IRTやベイズ推定の時に使う


? DEFINE:コマンド
  – 新しい変数を作ったり、変換したりするのに使う
Mplusの基本コードの書き方
? 最初は、Language Generatorで。




  – 基本的なモデリングはこれで解決する。
これだけは覚えておこう
DATA:
 FILE IS "sample1.dat"; !ここにファイル名を書く。日本語不可。

VARIABLE:
 NAMES = ID idt talk per skill con; !ここにデータに入っている変数名すべて書く
 USEVARIABLES = idt talk per; !ここに分析に使う変数を書く。
 MISSING = .; !欠損値記号を書く。

ANALYSIS:
 TYPE = GENERAL; !普通のSEMをするなら、GENERALでよい。
 ESTIMATOR = ML; !MplusのデフォルトはMLR。MLにすればAMOSと同じ結果になる。

MODEL:
 !ここにモデルを書く。

OUTPUT:
 SAMPSTAT STDYX MODINDICES(ALL); !この3つは常に書いておいてよい。
サンプルデータ紹介
? 仮想的なデータを利用
 – 3人集団が集団討議を行う実験(100集団300人)
   ? ※実際に実験は行っていません!
 – 何が集団アイデンティティを高める要因となるのか?

? 測定変数
 – 集団アイデンティティ → idt
 – 発言量 → talk
 – 集団パフォーマンス → per

 – コミュニケーションスキル → skill
 – 実験条件(0が同じ情報条件、1が違う情報条件) → con
MODEL:コマンドの書き方
? 重回帰分析をやってみよう???ONを使う。
 – 目的変数:idt
 – 説明変数:talk per


 idt on talk per;
 – これで終わり!
 – Regressed on のON!
ではさっそく分析してみよう。
DATA:
 FILE IS "sample1.dat";

VARIABLE:
 NAMES = ID idt talk per skill con;
 USEVARIABLES = idt talk per;
 MISSING = .;

ANALYSIS:
 TYPE = GENERAL;
 ESTIMATOR = ML;

MODEL:
 idt on talk per;

OUTPUT:
 SAMPSTAT STDYX MODINDICES(ALL);
入力ファイルの保存と実行
? 分析を実行する前に、inpファイルを保存
 – 場所は、さっきつくったフォルダの中に
 – データファイルがある場所が便利
   ? フルパスを書かなくてよいから
 – 拡張子は.inp

? inpファイルが保存できたら、RUNボタンを押す
 – 最初は、何かしらエラーが出る。
 – こころが折れそうになることもあるが、がんばる。
出力の見方
? 結果を見るときの心得
 – できるだけ詳細をちゃんと見る
  ? 分析がうまくいってない場合、走っても警告が出ること
    がある。
  ? したかった分析がちゃんとできているか、チェック。
    – 手違いで分析法などが間違えているかもしれない
 – 適合度は必ず見る
  ? 適合度がかなり悪いなら、データ入力のミスの可能性
  ? 慣れないCUIでのモデリングは、ミスも多い
分析の要约
適合度指標
  ? 情報量基準
     – モデル比較に使う
  ? Χ2乗値
     – モデルがデータと等しいとい
       う帰無仮説の確率
  ? RMSEA
     – 0.05(0.10)以下がよい
     – 倹約性を考慮した指標
  ? CFI
     – 0.95以上がよい
     – 倹約性をやや考慮した指標
  ? SRMR
     – 0.05(0.10)以下がよい
     – モデルとデータの距離
推定結果
? Estimate:推定値
? S.E.:標準誤差
? EST./S.E. z値 1.96以上で5%有意
推定結果2 標準化係数
ダイアグラムの出力
? メニューバーのDiagramを選択
 – View diagramをクリックすると、パス図が見られる
 – ()内は標準誤差 出力設定で変えられる
分散?共分散の推定
? 分散と共分散を推定してみよう???WITHを使う。
 – さっきと同じモデルで
 – ただし、独立変数の分散も同時に推定する

 idt on talk per;
 talk per;
 talk with per;
 – Mplusでは、デフォルトでは内生変数の分散しか推定しない。
 – 外生変数の分散を指定すると、それらの変数間の共分散も自動
   的に推定する。
    ? すべての欠損値を推定するためには、独立変数も分散を推定する必
      要がある。ただ、データ規模が大きくなるため、適合度が悪くなることも
      ある
结果は???
共分散を推定したくない場合
? 固定母数の制約をする???@を使う。
 – 共分散を0に固定する

 talk with per@0;
 – これでtalkとperの共分散が0に固定される。

 idt on per@0;
 – とすれば、パス係数を0に固定することもできる。
共分散の指定あれこれ
? 一度に全部の変数の共分散を指定
 idt talk per WITH idt talk per;
  – これで3変数間の共分散を推定できる

? ペアごとの共分散を指定
 v1 v2 v3 PWITH v4 v5 v6;
  – V1とv4、v2とv5、v3とv6の共分散を推定

? 共分散の自動推定をオフにする
  – ANALYSISコマンドにMODEL = NOCOVARIANCES と書く。
     ? これで、因子間や分散を推定した外生変数間の共分散が
       自動で推定されなくなる
平均値の指定
? 平均構造の推定
 – TYPE = GENERALにしておけば、自動的に平均構造も
   推定される
 – 自分で指定しておきたい場合は、[]を使って
 [idt];
    ? と書く。
 – 平均値に固定制約を与えたい場合は、
 [idt@0];
    ? と書く。
 – 平均値を推定したくない場合は、ANALYSISコマンドの
   ところに、MODEL = NOMEANSTRUCTURE;と書く。
パス解析
? ONとWITHでパス解析が可能
 – idt と per を talk と skill で予測するモデル
   ? skillをusevariablesに追加するのを忘れずに!


 idt per on talk skill;
 idt with per;

 – 複数の目的変数に同じ説明変数が予測する場合
   は、一行で書ける。
パス解析のダイアグラム
媒介分析
? 間接効果を検定する???INDを使う。
 – MODEL INDIRECTオプションを利用
 – Idt と conの関係をtalkが仲介するかを検等

 idt on talk con;
 talk on con;
 MODEL INDIRECT:
 idt IND talk con;

 – con → talk → idtという媒介効果を検定
間接効果の検定結果
? Specific indirectのところを見る。
  – いわゆるSobel testの結果。
媒介分析のダイアグラム
ブートストラップ信頼区間
? 間接効果のブートストラップ信頼区間
 – BOOTSTRAPオプションを使う
  ? ANALYSISコマンドに以下の文を書く。

  BOOT = 1000;
    – 回数は1000~10000回の範囲で。


 – CINTERVALオプションで信頼区間を出力する
  ? OUTPUTコマンドに以下の文を書く。

  CINTERVAL(BOOT)
コードは以下の通り
ANALYSIS:
 TYPE = GENERAL;
 ESTIMATOR = ML;
 BOOT = 1000;

MODEL:
 idt on talk con;
 talk on con;

MODEL indirect:
 idt IND talk con;

OUTPUT:
 SAMPSTAT STDYX MODINDICES(ALL) CINTERVAL(BOOT);
ブートストラップ信頼区間の結果




? 信頼区間に0が含まれてなければ有意
確認的因子分析
? sample2.datを使う
  – IDと6項目の変数
  – v1-v3が同じ因子、v4-v6は別の因子

? 因子分析をする???BYを使う。
  – F1とF2という潜在変数がv1-v10で測定されている

  F1 by v1-v3;
  F2 by v4-v6;
  – F1とF2の因子間相関は自動的に推定される
    ? もちろん、F1 with F2@0; と書けば、直交回転となる。
確認的因子分析
? いくつかの注意点
 – 普通にF1 by v1-v3;とかくと、v1への因子負荷量は、
   自動的に1に固定される
   ? これは、モデルの識別のために必要な制約
 – ただ、分散を1に固定しても因子分析は可能
   ? ただし、因子が外生変数の場合に限る
   F1@1;
   ? と書けば、F1の分散を1に固定することができる。
   ? また、v1を自由推定するように指定することができる。
   F1 by v1* v2-v3;
   ? あるいは F1 by v1-v5*; *は自由推定の指定。
以下のコードを書く
DATA:
 FILE IS "sample2.dat";

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

ANALYSIS:
 TYPE = GENERAL;
 ESTIMATOR = ML;

MODEL:
 F1 by v1-v3*;
 F2 by v4-v6*;
 F1-F2@1;

OUTPUT:
 SAMPSTAT STDYX MODINDICES(ALL);
確認的因子分析の結果




? 因子分析の場合は標準化のほうが解釈しやすい
惭辫濒耻蝉の使い方 初级编
確認的因子分析の適合度
? 因子分析は適合度が低くなりがち
 – SRMRはかなり悪くなるので、あまり参照しない
 – むしろ、CFIやRMSEAに注目する
  ? CFIは.85ぐらいでもそこそこ報告例がある
  ? RMSEAは0.05以下が望ましいが、0.10以下でもあり

? 因子数をどう決定するか
 – BICなどの情報量基準を用いる
  ? BICが一番小さくなる因子数を採用
  ? それだけではなくRMSEAなども適宜参照
確認的因子分析の誤差相関
? 誤差相関とは
 – 測定項目の誤差項の間に共分散を仮定する
 F1 by v1-v3;
 v1 with v2;
 – 例えば、上のような感じ。

? どういう時に誤差相関を仮定するか
 – 測定方法論上、測定誤差に相関が仮定される場合
   ? 質問項目が似ている(同じ言葉が含まれている、など)
   ? 同じことについて、違う側面から質問している

 – 適合度を上げるためだけにむやみに仮定するべきではない
   ? しかし、相関を仮定することが妥当なら、仮定する方がよい。
モデルの識別
? 識別問題とは?
 – 特に潜在変数などを利用すると、推定するべきパ
   ラメータが多くなり、モデルが識別できない
  ? Mplusの場合、標準誤差の推定ができなくなる
  ? 固定母数を利用して、モデルを識別させる

? 典型的な識別問題への対処
 – 因子負荷量を1に固定
 – 因子の分散を1に固定(因子が外生変数のとき)
 – 因子負荷量を等値にする(2項目の場合など)
因子負荷量の等値制約
? 各項目の因子負荷量が等しいという仮定
 – モデルの倹約性が向上する可能性がある
 – パラメータ名を設定し、等値に指定する

 F1 by v1-v3*(p1);
 F2 by v4-v6*(p2);

 – v1-v3は、p1という同じパラメータであることを指定
 – v4-v6も同様に、p2という同じパラメータ
左が普通 右が等値制約
潜在変数を含むパス解析
? 因子間に因果関係を仮定する
 – F1がF2を回帰するような場合。

 F1 by v1- v3;
 F2 by v4-v6;
 F2 on F1;

 – 今回は、因子負荷量を1に固定して推定
分析结果(标準化係数)
MIMICモデル
? Multiple indicator Multiple Cause Model
  – 複数の説明変数が、潜在変数を経て複数の目的
    変数に影響するモデル。


  F2 by v4-v6;
  F2 on v1-v3;

  – 特に難しい制約は必要ない。
MIMICモデル ダイアグラム
探索的因子分析
? 事前にどの項目がどういう因子を構成するかわ
  かってない場合に使う方法
 – SPSSなどに入っている因子分析と同じ。

? 2種類の方法がある
 – EFA(探索的因子分析)を使う
  ? プロマックス回転など使える回転が多い
 – ESEM(探索的構造方程式モデル)を使う
  ? 因子得点をそのままSEMに使える
  ? 回転は、プロマックスは使えないが、たいていは使える
EFAでのやり方
? ANALYSISコマンドをTYPE = EFAとする。
  – EFAのあと、何因子を指定するかを最小値と最大値を指定。
     ? 下の例の場合、1因子と2因子の2つを走らせる。
  – ROTATIONオプションに、回転法を指定。
     ? VARIMAX, PROMAX, OBIIMIN, GEOMIN
        – デフォルトはGEOMIN回転
? MODELコマンドはいらない。


ANALYSIS:
TYPE = EFA 1 2;
ESTIMATOR = ML;
ROTATION = oblimin;
贰贵础の结果
ESEMでのやり方
? MODELコマンドを書く必要がある
  – モデルの最後に(*1)と書く。
  – 回転法も指定してやる

ANALYSIS:
 TYPE = GENERAL;
 ESTIMATOR = ML;
 ROTATION = oblimin;
MODEL:
 F1-F2 by v1-v6(*1);
ESEMの結果 EFAと同じ
贰厂贰惭のダイアグラム
2つの探索的因子分析
? モデルの中に二つ以上の探索的因子分析が含
  まれている場合
  – (*1)とは別に(*2)とする。

ANALYSIS:
 TYPE = GENERAL;
 ESTIMATOR = ML;
 ROTATION = oblimin;
MODEL:
 F1 by v1-v3(*1);
 F2 by v4-v6(*2);
入門編 おさらい
? Mplusのコードの基本
 – 回帰はON
 – 相関はWITH
 – 因子分析はBY
 – 固定パラメータは@
 – 自由パラメータは*
 – パスの等値制約は()

More Related Content

惭辫濒耻蝉の使い方 初级编