堀@香川大学経済学部です。 Re: [fpr 2342] 確証的因子分析の際の相関と、項目の単純加算時の相関について > また、この希薄化の問題を回避するためには、 > 項目数をかなり増やさない限り、困難だということですので、 > 今回は残念ながら解析することはできません。 > しかし、早いうちに機会があれば試してみようと思います。 IRTでないほうはコンピュータでチェックすればいいでしょう。 厳密にはいろいろあるかもしれませんがとりあえずは次のようにする。 乱数を生成して,5変数×2と50変数×2の場合を比較すればいい。2因子モデルの 相関ありで乱数生成。 5段階または7段階に区切る。7段階のほうが設定した相関に近くなる可能性が高いで しょう。 連続変数でも希薄化が起こるので,無理にカテゴリー尺度にする必要はないかな。 というわけで連続変数でチェックを入れました。50変数だとコレスキー分解が大変な ので,5変数*2と10変数*2で比較してみるSPSSマクロを作ってみました。 例えば1回走らせてみると 5変数合計での相関 .415 因子間相関 .464 10変数合計での相関 .451 因子間相関 .475 1変数間での相関 .248〜.379 というような感じです。1000回くらいやれば実感できるのかな。コレスキー分解を きちんとできるデータにして,変数の数を増やしてやればもっとクリアになるでしょ う。1変数と比較すると希薄化の修正は明らかでしょう。 あとは,2度修正があるとすると,過剰修正があるのかのチェックを入れてみても面白 そうです。 *ran.sps----------------------------------------------------. title 任意の相関行列となる乱数生成. preserve. set printback=off. define rancorr (nvar=!charend('/')/ nsmpl=!charend('/')/ fname=!charend('/') !default(*)/ content=!charend('/') !default(corr)/ strict=!charend('/') !default(yes) ). *準備. !let !f='f'. !let !s='s'. !let !x='x'. !let !send=!concat(!s,!nvar). !let !xend=!concat(!x,!nvar). !let !fend=!concat(!f,!nvar). !let !col='col'. !let !colend=!concat(!col,!nvar) !let !strict2=!upcase(!strict). *new file. !if (!fname !ne '*') !then. *想定相関行列(下三角 SPSSファイルではない). matrix data variables=x1 to !xend/file=!fname /content=!content . !ifend. save /outfile='tempran.sav'. *乱数生成. input program. vector s(!nvar). loop #i=1 to !nsmpl. + loop #j = 1 to !nvar. + compute s(#j)=normal(1). + end loop. + end case. end loop. end file. end input program. save /outfile="tempranxx.sav". matrix. get d /file=* /var=s1 to !send. get r /file='tempran.sav'/var=x1 to !xend. compute detr=det(r). do if (det(r) > 0.000001). *相関行列のコレスキー分解(上三角). compute r1=chol(r). *相関行列に対応する乱数作成 変数名の col+番号. compute d=d*r1. save d /outfile=*. else. PRINT det(r) /format "F16.8" /TITLE '元の相関行列は正定値ではありませんのでコレスキー分解ができません'
ここは心理学研究の基礎メーリングリストに投稿された過去の記事を掲載しているページです。