尺度作成のヒントページ
(SPSSと
SAS)
Ver.7.2c(2004.5.14)
質問紙などで尺度を作成したあとの基本的な処理についてのヒントです。
おおよそ,処理の順序に書いてありますが,厳密な順序ではありません。また作成する尺度によって必要なものが異なりますので,適宜取捨選択して下さい。特に因子分析はあくまで例示ですので,他にも様々な分析方法があります。
(なおSPSS 11.0Jを基本に書いてありますが,他のバージョンでも通用します)
SPSSそのもののトラブルシューティングとしては
SPSS勝手にFAQなどもどうぞ参考にして下さい
基本データ構造(例示用)
各項目は1〜6点の6件法でコーディングされているものとする
回答者 番号 | 性別 |
項目1 | 項目2 | 項目3 |
項目4 |
1 | 女 | 6 | 1 | 1 | 5 |
2 | 男 | 1 | 2 | 5 | 1 |
3 | 男 | 2 | 4 | 3 | 2 |
4 | 女 | 3 | 6 | 5 | 6 |
5 | 女 | 1 | 2 | 2 | 3 |
【1】データを入力する
まず,文字データ(例では男女など)は,数字にコード化しておいた方が後々便利。
(女=1 男=2など)
以下のような方法のいずれかで入力するとよい
- SPSSから直接入力する
SPSSを立ち上げると出てくるデータエディタに直接入力する。他の方法のような変換処理をしなくてよいのは便利だが,どうしても重たくなるので,大量データには不向き
- Excelなど表計算ソフトから入力する
表計算ソフトが慣れている人ならこれでも使える
(ただしSPSS9.0以前の場合は,通常のExcelブック形式のワークシートをSPSSが読み込めないので,Excel Ver4形式のワークシート(xls)で保存する)
SPSSではファイル(F)-開く(O)でワークシートを指定する
- テキストエディタから入力する
データ数が多い時は,これが一番早い。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,「いいえ」の場合は1にする
- 「ケースの表される方法」→通常は「各行が1つのケースを表す」
1ケースあたり途中で改行している場合,「特定の数の変数が1つのケースを表す」とし1ケースあたり何行使っているかを記入
- インポートするケース数:通常「すべてのケース」→<次へ>
- 「変数間に使用する区切り記号」に変数区切り記号をチェック(カンマかスペースが一般的,スペースは半角と全角の区別がつきにくいので,カンマの方が安全)
- データプレビューで選択されている変数の仕様→そのまま<次へ>
- あとで使用できるようにこのファイルの形式を保存しますか?→適宜
- シンタックスを貼り付けますか?→シンタックスで何度も使うなら「はい」,通常は「いいえ」
固定書式の場合
- ファイルの先頭に変数名を含んでいますか?→1行目に変数名が記入されていれば「はい」(上の例では「いいえ」)→<次へ>
- 通常は 最初のケースの取り込み開始行番号:上の「ファイルの先頭に変数名を含んでいる」に「はい」とした場合は2,「いいえ」の場合は1にする
- 「1つのケースを表す行数」→元のテキストファイルが1ケースあたり何行使っているかを指定する(上の例では2)
- インポートするケース数:通常「すべてのケース」→<次へ>
- 「データプレビュー内の垂直線は,変数の分割点を表しています」などと表示されるのでデータプレビュー内の↑をドラッグしてデータの切れ目を指定する
- 数字と数字の間をクリックすると新しい↑が生まれる
1ケースあたり2行以上を指定した場合は「ケース内のライン」欄を選択して,ケース当たりのすべての行について,変数区切り位置を指定する
- データプレビューで選択されている変数の仕様→そのまま<次へ>
- あとで使用できるようにこのファイルの形式を保存しますか?→適宜
- シンタックスを貼り付けますか?→シンタックスで何度も使うなら「はい」,通常は「いいえ」
【テキストデータ読み込み】コマンドシンタックスの場合
読み込むデータ
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 |
1 | 1 | 1 | 6 | 1 | 1 | 5 |
2 | 2 | 2 | 1 | 2 | 5 | 1 |
3 | 3 | 2 | 2 | 4 | 3 | 2 |
4 | 4 | 1 | 3 | 6 | 5 | 6 |
5 | 5 | 1 | 1 | 2 | 2 | 3 |
- 変数はなるべく短い記述の方が後々楽
- 変数名は「半角英数」を使った方がよい
(SPSS8以降は変数名に全角文字や日本語も使えるが,後々使いにくいのでやめたほうがよい)
- 変数内容は「ラベル」に書き込むのがコツ
(SPSS10では「変数ビュー」タグ,Ver9.0まではグレーの欄の変数名をダブルクリックすると変数指定用画面が出てくる)
【注意】何かの値を欠損値に指定していた場合,それが「数値」として認識されないよう注意。
[変換]-[値の再割り当て]-[同一の変数へ]で
欠損値扱いの値を,システム欠損値に書き換えるのがベスト
方法
- [変換]-[値の再割り当て]-[同一の変数へ]
- 変換する変数を左側のボックスのリストから選んで>矢印をクリック
(殆ど全部の変数を選んだ方がよい)
- 「今までの値と新しい値」をクリック
- 「今までの値」欄に,欠損値とみなしている数値を入れる
- 「新しい値」欄は「システム欠損値」の左脇の○をクリック
- 「追加」ボタンをクリック(「旧→新」欄に 「(今までの値)→SYSMIS」が表示される)
- 「続行」ボタンをクリック
- 「OK」ボタンをクリック
【2】項目得点を見る
項目得点の度数分布や基本統計量から,得点が偏ったり,分散が小さい項目がないかチェックする
- [分析]-[記述統計]-[度数分布表]で度数分布
- [分析]-[記述統計]-[記述統計]で平均値や標準偏差
オプション内容をよく見て,不要な統計量は出力させないのが「通」のやり方
※逆転項目の処理
SPSSではここのようにする
(ただし,多くの場合は,因子分析などを行ってみないと,どの項目を逆転項目とみなすかは確定できないので,確定するまでは,逆転しない得点を用いた方がよい)
【3】GP分析
※GP分析では,計算内容を少しずつ変えながら何度も似たような計算を行うので,コマンドシンタックスを使う方がよい
- 合計点を算出
[変換]メニュー−[計算]を選択
- 目的変数=新たな変数名
- 数式=全項目の変数を合計するための式を書く
- ex)sum=v1+v2+v3+(7-v4) これはsumという新変数を作り各変数の合計点を入れるという意味
- 逆転項目は (とりうる最大値)+(とりうる最小値)−数値
(上の例ではv4が逆転項目。6+1-実測値で逆転している)
- 1で作った合計点の上位群下位群の得点を求める
[分析]-[記述統計]-[度数分布表]の「統計」ボタンをクリック:「四分位」にチェック(または27%など細かい指定は「パーセンタイル」で指定し「追加」:上位群は73%)
※基本的に同一次元の尺度内で分析しないと意味がない
計算結果
度数分布表
統計量
SUM
-------------------
度数 | 有効 | 5 |
| 欠損値 | 0 |
パーセン タイル | 25 | 9.50000 |
| 27 | 9.62000 |
| 50 | 14.00000 |
| 73 | 14.50000 |
| 75 | 14.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 |
1 | 1 | 1 | 6 | 1 | 1 | 5 | 4.000 | . |
2 | 2 | 2 | 1 | 2 | 5 | 1 | 13.000 | . |
3 | 3 | 2 | 2 | 4 | 3 | 2 | 12.000 | . |
4 | 4 | 1 | 3 | 6 | 5 | 6 | 12.000 | 2.00 |
5 | 5 | 1 | 1 | 2 | 2 | 3 | 8.000 | 1.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の相関を求める
合計点を算出
データメニュー−計算を選択
- 目的変数=新たな変数名
- 数式=見たい変数を除いた他の変数を合計する式を書く
- ex)sum1=v2+v3+(7-v4) これはsum1という新変数を作り各変数の合計点を入れるという意味
- 逆転項目は (とりうる最大値)+(とりうる最小値)−数値
(上の例ではv4が逆転項目。6+1-実測値で逆転している)
(sum1は項目1(v1)と尺度得点との相関を見るために,v2〜v4の合計点を求めたもの
v2の分析ではv1,v3,v4を合計する)
※基本的に同一次元の尺度内で分析しないと意味がない
手順
- [分析]-[相関]-[2変量]
- 相関係数:ふつうはPearsonを選択
[コマンドシンタックス]
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 誰も教えてくれなかった因子分析:数式が絶対に出てこない因子分析入門 北大路書房」などが参考になります
- [分析]-[データの分解]-[因子分析]
- 因子抽出:方法=「主因子法」「最尤法」など
(デフォルトの「主成分分析」は因子分析では選択しないよう注意)
- 分析=相関行列, 抽出の規準=最小の固有値, 表示=回転のない因子解, 収束のための最大反復数=100〜200くらい(デフォルトの25は小さすぎる)
などを設定して「続行」
- 回転:「バリマックス」あるいは「プロマックス」回転が一般的,表示=回転後の解
,収束のための最大反復数=100〜200くらい
- 得点:何もチェックしない(ケース各個人の因子得点がほしい場合は「変数として保存」にチェック)
- オプション:欠損値:ペアごとに除外(リストごとだとnが小さくなってしまう)*
ありがちなエラー
- 相関行列の計算などで「この値は正値行列ではありません」と出て停まってしまう
(逆行列が計算できないなどデータに問題がある時のエラー)
→項目数よりケース数が少なくないか?
(ケース数がぎりぎりだと欠損値によって実質的なケース数が減ってしまえば,同じエラーになる)
- 共通性の推定値が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;