尺度作成のヒントページ (SPSSと  SAS) Ver.7.2c(2004.5.14)
質問紙などで尺度を作成したあとの基本的な処理についてのヒントです。 おおよそ,処理の順序に書いてありますが,厳密な順序ではありません。また作成する尺度によって必要なものが異なりますので,適宜取捨選択して下さい。特に因子分析はあくまで例示ですので,他にも様々な分析方法があります。
(なおSPSS 11.0Jを基本に書いてありますが,他のバージョンでも通用します) SPSSそのもののトラブルシューティングとしては SPSS勝手にFAQなどもどうぞ参考にして下さい


基本データ構造(例示用)
各項目は1〜6点の6件法でコーディングされているものとする
回答者
番号
性別 項目1項目2項目3 項目4
16115
21251
32432
43656
51223

【1】データを入力する
まず,文字データ(例では男女など)は,数字にコード化しておいた方が後々便利。 (女=1 男=2など)
以下のような方法のいずれかで入力するとよい
  1. SPSSから直接入力する
    SPSSを立ち上げると出てくるデータエディタに直接入力する。他の方法のような変換処理をしなくてよいのは便利だが,どうしても重たくなるので,大量データには不向き
  2. Excelなど表計算ソフトから入力する
    表計算ソフトが慣れている人ならこれでも使える (ただしSPSS9.0以前の場合は,通常のExcelブック形式のワークシートをSPSSが読み込めないので,Excel Ver4形式のワークシート(xls)で保存する)
    SPSSではファイル(F)-開く(O)でワークシートを指定する
  3. テキストエディタから入力する
    データ数が多い時は,これが一番早い。SASなど他のソフトともデータを共有できるのが強み
    データは拡張子*.TXTまたは*.DATにしておくと,SPSSで読み込む際に便利
    ただしWindowsの「メモ帳」は容量が小さいのでデータ入力には使えない。普通はスペースやカンマ区切りなどで入力するが,固定長で連続で入力した方が,実は早い。
    (SPSS8.0ではコマンドシンタックスを用いないと読み込めない。またSPSS9.0では固定長書式がサポートされたが,やはりコマンドシンタックスの方が断然使いやすい。)
    シンタックスの書式例はSPSS勝手にFAQ参照
    欠損値についてはSASではピリオドが用いられるが,SPSSでは欠損値として読みとらないので,予め別の数字(データで使わない)を入れておき,SPSSの中で「変換-データの再割り当て」で,この数値を「システム欠損値」に書き換えること。 (この書き換えを忘れると,欠損値が実際の値として計算されてしまい,結果がおかしくなる。)
     なお,SASデータセット(バイナリ形式のもの)を直接読み込む場合は,コマンドシンタックスでGET SAS DATA文を用いる(GET SAS DATA文の具体的使い方はヘルプのSyntax guide参照)
ワープロ専用機からテキスト出力する場合など,ファイル末尾にEOF(^Z)制御コードを書き込んでしまうものがある。この制御コードはしばしば誤動作の原因となるので,テキストエディタなどを使ってEOFコードはなるべく除去しておく方が安全。

【テキストデータ読み込み】[ファイル-開く]メニューの場合(SPSS10以降)
読み込むデータ
NO AGE X1-X5
↓ ↓  ↓
001 20 12121←1人目の1行目
123156 15111←1人目の2行目
Y1-Y6  Z1-Z5

二人目以降↓
002 21 12321
1311 51222
: : : :

  1. ファイル-開く-データ
  2. 「ファイルの種類」のプルダウンメニューから「テキスト」または「データ」を選ぶ
  3. 「開く」ボタンを押すと「テキストインポートウィザード」画面になる
    (数行だけ読み込まれたものが「テキストファイル」欄に示される)
  4. 「テキストファイルは定義済みの形式に一致しますか?」→いいえ <次へ>
  5. 元データの形式 カンマやスペースなどで変数同士が区切られ,変数の列の位置(カラム)が決まっていないデータ→「自由書式」
    どのケース(被験者)でも同一変数は同一カラムになっている場合→「固定書式」
    上の例は「固定書式」の場合を示す
自由書式の場合
  1. ファイルの先頭に変数名を含んでいますか?→1行目に変数名が記入されていれば「はい」(上の例では「いいえ」)→<次へ>
  2. 通常は 最初のケースの取り込み開始行番号:上の「ファイルの先頭に変数名を含んでいる」に「はい」とした場合は2,「いいえ」の場合は1にする
  3. 「ケースの表される方法」→通常は「各行が1つのケースを表す」
    1ケースあたり途中で改行している場合,「特定の数の変数が1つのケースを表す」とし1ケースあたり何行使っているかを記入
  4. インポートするケース数:通常「すべてのケース」→<次へ>
  5. 「変数間に使用する区切り記号」に変数区切り記号をチェック(カンマかスペースが一般的,スペースは半角と全角の区別がつきにくいので,カンマの方が安全)
  6. データプレビューで選択されている変数の仕様→そのまま<次へ>
  7. あとで使用できるようにこのファイルの形式を保存しますか?→適宜
  8. シンタックスを貼り付けますか?→シンタックスで何度も使うなら「はい」,通常は「いいえ」
固定書式の場合
  1. ファイルの先頭に変数名を含んでいますか?→1行目に変数名が記入されていれば「はい」(上の例では「いいえ」)→<次へ>
  2. 通常は 最初のケースの取り込み開始行番号:上の「ファイルの先頭に変数名を含んでいる」に「はい」とした場合は2,「いいえ」の場合は1にする
  3. 「1つのケースを表す行数」→元のテキストファイルが1ケースあたり何行使っているかを指定する(上の例では2)
  4. インポートするケース数:通常「すべてのケース」→<次へ>
  5. 「データプレビュー内の垂直線は,変数の分割点を表しています」などと表示されるのでデータプレビュー内の↑をドラッグしてデータの切れ目を指定する
  6. 数字と数字の間をクリックすると新しい↑が生まれる 1ケースあたり2行以上を指定した場合は「ケース内のライン」欄を選択して,ケース当たりのすべての行について,変数区切り位置を指定する
  7. データプレビューで選択されている変数の仕様→そのまま<次へ>
  8. あとで使用できるようにこのファイルの形式を保存しますか?→適宜
  9. シンタックスを貼り付けますか?→シンタックスで何度も使うなら「はい」,通常は「いいえ」

【テキストデータ読み込み】コマンドシンタックスの場合
読み込むデータ
NO AGE X1-X5
↓ ↓  ↓
001 20 12121←1人目の1行目
123156 15111←1人目の2行目
Y1-Y6  Z1-Z5

二人目以降↓
002 21 12321
1311 51222
: : : :

固定長書式のデータをFORTRAN流のフォーマット書式で読み込む例
(一人あたり二行にわたっているケース)
とっつきにくいようだが慣れてくるとこの方がデータ管理は断然楽

*******↓空白を欠損に変換する****
SET
BLANKS=SYSMIS
UNDEFINED=WARN.

****** ↓データを読み込む********
DATA LIST
FILE='C:\MyDocument\Data.dat' FIXED RECORDS=2 TABLE /
NO,AGE,X1 TO X5,Y1 TO Y6,Z1 TO Z5
(F3.0,1X,F2.0,1X,5F1.0
/6F1.0,1X,5F1.0) .
EXECUTE.
   ↑( )内にFORTRAN書式のフォーマットを書く。

RECODE
X1 TO X5 Y1 TO Y6 Z1 TO Z5 (9=SYSMIS).
EXECUTE .
↑並べた変数について9をシステム欠損値に変換する


【FORTRAN書式】
Fは実数,Xはブランク,/は改行,[#].[#]は[全桁数].[小数点桁数]を意味する。よって
F3.1....小数点を含め全体で3桁で,内 小数点以下桁数1のもの(「1.5」など)
F1.0....1桁で小数点以下がない=1桁整数
5F1.0...1桁の数値が5回連続して並んでいる
1X...ブランクが1桁


F3.0,1X,F2.0,.....3桁整数,ブランク1,2桁整数 というデータ並び
/6F1.0,1X,5F1.0....改行して1桁整数が6連続,ブランク1,1桁整数が5連続

データ入力後のSPSSデータエディタの状態
NO SEX V1 V2 V3 V4
  1116115
  2221251
  3322432
  4413656
  5511223

【注意】何かの値を欠損値に指定していた場合,それが「数値」として認識されないよう注意。
[変換]-[値の再割り当て]-[同一の変数へ]で 欠損値扱いの値を,システム欠損値に書き換えるのがベスト

方法

【2】項目得点を見る
項目得点の度数分布や基本統計量から,得点が偏ったり,分散が小さい項目がないかチェックする
※逆転項目の処理
SPSSではここのようにする
(ただし,多くの場合は,因子分析などを行ってみないと,どの項目を逆転項目とみなすかは確定できないので,確定するまでは,逆転しない得点を用いた方がよい)
【3】GP分析
※GP分析では,計算内容を少しずつ変えながら何度も似たような計算を行うので,コマンドシンタックスを使う方がよい
  1. 合計点を算出
    [変換]メニュー−[計算]を選択
  2. 1で作った合計点の上位群下位群の得点を求める
    [分析]-[記述統計]-[度数分布表]の「統計」ボタンをクリック:「四分位」にチェック(または27%など細かい指定は「パーセンタイル」で指定し「追加」:上位群は73%)
※基本的に同一次元の尺度内で分析しないと意味がない


計算結果

度数分布表
統計量 SUM -------------------
度数有効5
欠損値0
パーセン
タイル
259.50000
279.62000
5014.00000
7314.50000
7514.38000



  • 上位群と下位群の分類基準になる新変数を作成する
    例)このデータではsumは4点から24点までが取りうる値の範囲である
    上の「統計量」から上下25%の場合,下位群は4から9,上位群が15-24点の範囲となる
    (1)[変換]-[値の再割り当て]-[他の変数へ]
    (2)sum1を左端の一覧から選択し,隣の右向き矢印をクリック
     変数ボックスにsum--->? と表示される
    (3)変換先変数欄に新しい任意の変数名(たとえばflag)と書き「変更」を押す
     変数ボックスにsum--->flag と表示される
    (4)[今までの値と新しい値]をクリック
    今までの値(左)の真ん中「範囲」の左の白丸をしたのボックスに値の下位群の範囲を入れる(4 から9)
    (5)右側「新しい値」の四角い欄に1と書いて下の「追加」を押すと
    「旧→新」欄に「4 thru 9 -->1」と表示される

    (6)次に上位群についても同じように
    左側の「範囲」を選び,上位群の範囲(15から24)と書く
    (7)右側「新しい値」の四角い欄に2と書いて下の「追加」を押す
    「旧→新」欄の二行目に「15 thru 24 -->2」と表示される
    (8)今までの値 その他すべての値を選ぶ
    (9)新しい値欄では「システム欠損値」の横の○を選択
    追加を押す
    「旧→新」欄の三行目に「ELSE -->SYSMIS」と表示される

    終わったら「続行」ボタンを押す
    最後に[OK]を押す

    これで下位群データはflagが1 上位群データはflagが2にセットされるその他中間群ではflagはシステム欠損値になる

  • 上位群と下位群の間で,t検定を行う
    [分析]-[平均の比較]-[独立したサンプルのT検定]
    「検定変数」に従属変数(例でいえばv1)
    「グループ化変数」に独立変数(flag)
    「グループの定義」ボタンをクリックしグループを示すグループ化変数値(例では1と2)を入れて「続行」
    (ちなみにこの数値例では,データ数が少なすぎてn=1となってしまうためt検定は出来ない)
    ここまでの作業でのデータエディタの状態
    NO SEX V1 V2 V3 V4 sum flag
      11161154.000.
      222125113.000.
      332243212.000.
      441365612.0002.00
      55112238.0001.00


    ※v2,v3,v4についても同様にt検定を行う
    ※以上の操作で「OK」の代わりに「貼り付け」を選択していくと「コマンドシンタックス」に作業手順がSPSSのプログラムとして記録されるので,類似の作業を繰り返して行う場合には,いちいちメニューから実行するよりも便利

    上記作業のコマンドシンタックスは以下の通り
    COMPUTE sum = v1+v2+v3+(7-v4) .   ←←←v4は逆転項目なので(7-v4)にする
    EXECUTE .

    FREQUENCIES
    VARIABLES=sum
    /NTILES= 4
    /PERCENTILES= 27 73
    /ORDER ANALYSIS .

    RECODE
    sum1
    (4 thru 9=1) (15 thru 24=2) (ELSE=SYSMIS) INTO flag .
    EXECUTE .

    T-TEST
    GROUPS=flag(1 2)
    /MISSING=ANALYSIS
    /VARIABLES=v1
    /CRITERIA=CIN(.95) .
    : : :
    T-TEST
    GROUPS=flag(1 2)
    /MISSING=ANALYSIS
    /VARIABLES=v4 /CRITERIA=CIN(.95) .

    ↑これをv1からv4までについて,すべて計算する

    合計を算出するとき v1+v2+v3ではなくsum(v1 to v3)のような書式も可能だが,欠損値があると,欠損値以外の数値だけの合計を求めてしまうので,ここでは不適切

    【4】項目得点と尺度得点の相関
    当該項目を除いた項目得点の合計とv1...v4の相関を求める
  • 合計点を算出
    データメニュー−計算を選択 (sum1は項目1(v1)と尺度得点との相関を見るために,v2〜v4の合計点を求めたもの
    v2の分析ではv1,v3,v4を合計する)

    ※基本的に同一次元の尺度内で分析しないと意味がない
    手順

    [コマンドシンタックス]
    COMPUTE sum1 = v2+v3+7-v4 .
    COMPUTE sum2 = v1+v3+7-v4 .
    COMPUTE sum3 = v1+v2+7-v4 .
    COMPUTE sum4 = v1+v2+v3 .
    EXECUTE .

    CORRELATIONS
    /VARIABLES=v1 sum1
    /PRINT=TWOTAIL NOSIG
    /MISSING=PAIRWISE .

    : : : :
    : : : :
    CORRELATIONS
    /VARIABLES=v4 sum4
    /PRINT=TWOTAIL NOSIG
    /MISSING=PAIRWISE .

    【5】因子分析
    因子分析はいろいろな方法がありますので,各自試してみて下さい。下は一例です
    因子分析の基本的な考え方やSPSSでの使い方については「松尾太加志・中村知靖 2002 誰も教えてくれなかった因子分析:数式が絶対に出てこない因子分析入門 北大路書房」などが参考になります

    ありがちなエラー
    1. 相関行列の計算などで「この値は正値行列ではありません」と出て停まってしまう
      (逆行列が計算できないなどデータに問題がある時のエラー)
      →項目数よりケース数が少なくないか?
      (ケース数がぎりぎりだと欠損値によって実質的なケース数が減ってしまえば,同じエラーになる)
    2. 共通性の推定値が1を越えてしまいエラーになる
      →いわゆる「Heywoodケース」と呼ばれるもの
      データや因子数が不適当な場合などに生じやすくなる
      →変数読み込みの際のカラムがズレていたり,関係ない変数まで分析に投入してないか?
    (Heywoodケースについては上記の参考文献または「SAS/STATソフトウエアユーザーズガイド」の因子分析のページ参照)

    [コマンドシンタックス](ECONVERGE(0.000001)だけはメニューでは指定できないので別途指定する)
    FACTOR
    /VARIABLES v1 TO v4 /MISSING PAIRWISE /ANALYSIS v1 TO v4
    /PRINT INITIAL EXTRACTION ROTATION
    /CRITERIA MINEIGEN(1) ITERATE(200) ECONVERGE(0.000001)
    /EXTRACTION PAF
    /CRITERIA ITERATE(200) ECONVERGE(0.000001)
    /ROTATION VARIMAX
    /METHOD=CORRELATION .

    【6】信頼性係数
    SPSS8まではProfessonalオプションがないと使えない。9.0からはBaseに入った(GraduatePackは7.5なのでBaseのみでは使えない)。以下は9.0以降の場合
    [分析]−[尺度]−[信頼性分析]を選択
    モデル=アルファでアルファ係数が求まる。その他,折半法,Guttman法,平行法などが選択できる
    「統計−記述統計」で「項目を削除したときの尺度」にチェックを入れておくと 信頼性の「足を引っ張っている」項目を見つける際に便利
    注:因子分析などでいくつかの因子が得られるなどして下位尺度を構成した場合は,下位尺度ごとでの信頼性係数を求めるのが基本
    (回転前第I因子に負荷量が高く,尺度全体としても内的一貫性が想定されるのなら,尺度全体の信頼性を見る,という場合なくはないが.....)

    具体的なメニュー画面はこちら

    [コマンドシンタックス]
    RELIABILITY
    /VARIABLES=v1 to v4
    /FORMAT=NOLABELS
    /SCALE(ALPHA)=ALL/MODEL=ALPHA
    /SUMMARY=TOTAL .

    なお,SPSSが使えない環境の場合の緊急避難用にMicrosoftExcel上で実行する信頼性係数算出のマクロを作成しました。ダウンロードはこちらまで

    【おまけ】SASで同じ計算をする場合
    参考までにSASでのプログラム例を示します。
    DATA TMP;
    INFILE 'MYDATA.DATA';
    INPUT NO SEX V1-V4;

    SUM=V1+V2+V3+7-V4;......GP分析用の合計点
    RUN;
    ****ここまではデータ読み込み部分:システムによってファイルの指定方法は異なる;

    ****度数分布*******;
    PROC FREQ DATA=TMP;
    TABLES V1-V4;
    RUN;
    ****平均と標準偏差****;
    PROC MEANS DATA=TMP;
    VAR V1-V4;
    RUN;

    ****四分位数**********;
    PROC UNIVARIATE DATA=TMP;
    VAR SUM;...出力中のQ3,Q1がそれぞれ75,25パーセンタイル点
    RUN;

    *****一旦上の出力を見てから********;
    DATA TMP2;
    INFILE 'MYDATA.DATA';
    INPUT NO SEX V1-V4;
    SUM=V1+V2+V3+7-V4;
    SUM1=V2+V3+7-V4;
    SUM2=V1+V3+7-V4;
    SUM3=V1+V2+7-V4;
    SUM4=V1+V2+V3;
    FLAG=.;
    IF SUM LE 9 THEN FLAG=1;
    IF SUM GE 15 THEN FLAG=2;
    RUN;
    *****t検定(GP分析);
    PROC TTEST DATA=TMP2;
    CLASS FLAG;
    VAR V1-V4;
    RUN;
    ****項目得点と尺度得点の相関(V1〜V4まで繰り返す);
    PROC CORR DATA=TMP2;
    VAR SUM1 V1;
    : : : :
    PROC CORR DATA=TMP2;
    VAR SUM4 V4;
    ****信頼性係数;
    PROC CORR DATA=TMP2 ALPHA NOMISS NOCORR;
    VAR V1-V4;
    RUN;
    ***因子分析;
    PROC FACTOR DATA=TMP2 METHOD=P PRIORS=SMC ROTATE=VARIMAX;
    VAR V1-V4;
    RUN;