1.入門書紹介 『ウルトラ・ビギナーのためのSPSSによる統計解析入門』プレアデス出版(2007年刊。発売中。税込2,310円) 超初心者-ウルトラ・ビギナー-が統計解析とSPSSの基礎の基礎、基礎を学びながら一挙に中級レベルまで到達できよう に工夫しましたので、ご利用ください。
2.SPSSのバッチ処理 バッチ処理(batch processing)とは、データを一定時間または一定量まとめて一括処理することを言います。 この言葉を初めて聞いた方は、何か特殊な方法かと思うかもしれません。私も30年前はそうでした。大型計算機 センターの相談員に、「バッチ・ジョッブでやるの?」と聞かれたときに、「へっ?」となったことを覚えていま す。batch という言葉は、研究社新英和辞典によると、「(パン・陶器などの)ひとかまど、ひと焼き分」で、口語 では「一度分、ひと束; 一群、一団」の意味で使われるそうです。ということであれば、バッチ処理とは、いくつ かの課題をまとめてドーンとやってしまう処理の仕方だと思えばよいことになります(なーんだ)。 SPSSでの最も一般的な統計処理の仕方は、上の「1.データ解析入門」で見ましたように、次のような画面 (SPSSデータエディタ)上で、一つの分析課題を一回ずつ行います。たとえば、単純集計なら単純集計だけを、クロ ス集計ならクロス集計だけを行います。でも、そうした基本的な集計作業でも、変数のカテゴリ(数)を変えたり(値の再割り当て)、特定ケースだけを集 計(ケースの選択)しようとすれば、そのつど必要な手続きをすることになります。因子分析や他の分析でも、方 法やオプションを変えて分析しようと思えば、同様に、そのつど必要な手続きをすることになります。そうしたや り方では、何回も同じような作業をしなければなりません(もっとも、そのことを苦にしない人もいるかもしれま せんが)。バッチ処理では、こうしたことを1回の手続きで一挙に行うことができます。 バッチ処理を行うには、SPSSのコマンド(命令語)を使ってプログラムを書く必要がありますが、別に難しいこ とではありません。上で示した画面上で行う一般の処理の仕方でも、どのようなプログラムで実行されたかは出力 (SPSSビューア)の「記録」にある「シンタックス」に記述されていますから、それを参考にすることができます。 また、これから行おうとする分析がどのようなプログラムで実行されるかは、次のようにしてみることができます から、同じようにそれを参考にすることができます。 たとえば、相関係数の算出を行う場合、「分析」ボタンを押して分析方法を選択し、変数を入力すると以下のよ うな画面になります。
赤で囲った「貼り付け」ボタンを押すと、次のような画面(SPSSシンタックス エディタ)が現れ、実行するプロ グラムが記述されています。
上の図では見にくいので、プログラムを以下に再掲しておきます。 CORRELATIONS /VARIABLES=density urban lifeexpf lifeexpm /PRINT=TWOTAIL NOSIG /STATISTICS DESCRIPTIVES XPROD /MISSING=PAIRWISE . このプログラムは、density, urban, lifeexpf, lifeexpmという4つの変数に関するピアソン(Pearson)の相 関係数を算出させるプログラムです(この分析自体の意義は、いまは問わないものとする)。CORRELATIONS が相 関係数を算出するコマンドです。「 / 」で区切って必要なコマンド(サブコマンド)を記述します。ここでは、有 意差の検定は両側検定(TWOTAIL)で、有意な相関係数には星印をつけて(NOSIG)結果を書き出す(PRINT)ことを指 示しています。そして、オプションとして選んだ「平均値と標準偏差」と「交差積和と共分散」を算出させるため の記述が「 /STATISTICS DESCRIPTIVES XPROD 」で、「 /MISSING=PAIRWISE 」で欠損値をペアごとに除外する ことを指示しています。 プログラムの記述の仕方を知るには、「ヘルプ」→「トピック」→「統計分析」とたどっていき、それぞれの手 法についての説明欄にある「シンタックス」ボタンを押して下さい。より詳細な説明を必要とする場合は、「ヘル プ」→「Syntax Guide」とたどっていき、Adobe Acrobatで書かれた完全マニュアルを参照して下さい。ただし、 「ヘルプ」から「Syntax Guide」を参照するには、SPSS をパソコンにインストールする際に、「Syntax Guide」 も併せてインストールしておく必要があります。なお、ここでいうシンタックス(Syntax)というのは、プログラ ムの構成法-記述の仕方-のことをいいます。 SPSSでバッチ処理を行うには、SPSSをパソコンにインストールした際に「スタート」メニューの「プロ グラム」に登録された「SPSS バッチ機能」を起動します。すると、次のような画面が現れます。
赤で囲った「追加」ボタンを押すと、実行するプログラムファイル(シンタックス・ファイル)を聞いてきます から、あらかじめ作成して保存してあったファイル(これは、後で説明します)を指定します。すると、緑で囲ん だ欄にそのファイル名が記載されます。出力結果をSPSSがインストールされているフォルダ以外のフォルダに保存 する場合は、青で囲った「参照」ボタンを押して出力先を指定してやるか、その左の「出力用のフォルダ」欄に出 力先を直接書き込みます。 SPSSビューアに出力される分析結果の容量はかなり大きなものです。ごく簡単な分析でも、100KBは下りません。 オプションを加えたり、出力の多い分析を行うと、すぐに数MBにもなります。これでは、フロッピーディスクには 保存できないことはいうまでもありませんが、ハードディスクの空き容量もどんどん減ってしまいます。わたしは、 230MBとか640MBのMOディスクに保存することにしています。プログラムとデータもMOに保存しています。そう することによってハードディスクの容量を減らすことなく、また、SPSSがインストールされていてMOドライブを 備えているパソコンが置かれている場所であれば、MOディスクだけを持ち歩けばどこでも作業の続きができます。 SPSSがインストールされていてもMOドライブがセットされていないパソコンでも、外付けのMOドライブ(これ は軽いものです)を持参していけばよいことになります(もっとも、そんなこと必要ないという人には関係ないこ とですが)。 さて、プログラムは、どんなワープロソフトで書いてもかまいません。保存するときにテキストファイルとして 保存するだけです。windowsの「アクセサリー」フォルダに入っているテキスト・エディタのメモ帳(notepad)や ワードパッド(wordpad)でも十分ですし、秀丸のようなテキスト・エディタならもっと便利です。もっとも、テキ スト・エディタではブロック単位のコピーや移動、削除などができませんから、必要に応じてワープロソフトとテ キスト・エディタと使いわけたらよいでしょう。ただし、保存するときにはテキストファイルとして保存しなけれ ばなりません。 プログラムの書き出しはファイルの指定とデータの定義です。下のプログラムの一例に示すように、SET から EXECUTE までの間に書きます。ここでは、DATA LISTでDドライブにテキストファイルで保存してある「data.txt」 という名のデータファイルを分析に使うことを指示しています。このファイルは、9レコードからできています。 レコードというのはデータの並びで、ワープロ感覚で言えば、改行までが1レコードになります。9レコードとい うのは、下のdata.txtの中身に見るように、1ケースが9行のデータからなっていることを指しています。そし て、各変数の値は、どのケースでも決まった欄(カラム)に記入されています。たとえば、1レコード目の最初の6 カラムには、どのケースでも個人番号が記入されています。以上のように、このデータファイルは、固定カラム方 式で9レコードからなっていることを示しているのが「FIXED RECORD=9」です。 データファイルの作成方法は、この他にも、入力カラムを固定しない自由カラム方式もあります。もちろん、SPSS のデータエディタを使って作成したデータファイルも使えます。それらのデータを使うときは、ここで示している書 式とは別の書式になります。わたしがテキストファイルの固定カラム方式を使うのは、入力をほかの人に依頼したり、 大勢で入力作業をするときにはするときにはSPSSが無くてもデータファイルを作成できることと、固定カラム方 式の方が自由カラム方式よりも入力ミスなどの点検が容易だからです。 RECORDの次には、「 / 」で区切って、変数の名前と並びを記述します。各レコードは「 / 」で区切ります。こ こでの例で言えば、1レコード目は次のように記述されています。 /KOJIN V1 TO V467(F6.0,3X,F1.0,X,F2.0,X,F2.0,X,9F1.0,X,F2.0,X,6(F1.0,X), F2.0,X,F1.0,X,F2.0,X,F1.0,X,F2.0,X,F1.0,X,F2.0,X,15F1.0,X,F2.0/ 最初の「KOJIN V1 TO V467」は、最初の変数にKOJIN という名前をつけ、2番目以降の変数には順にV1, V2, V3 ・・・V467と名づけていることをコンピュータに指示しています。その後ろに「 ( 」で始めて、(F6.0,3X,・・・ F2.0/ のように、それぞれの変数の値が記入されている場所を指示しています。F6.0 というのは、最初のKOJINと いう変数の値は数値で(このことをFで表現します)、小数点以下の数値はなく、1~6カラムに記入されていること を指示しています。小数点以下の数値があれば、小数点以下に、その桁数を記入します。小数点以下2桁の場合は F6.2となります。data.txtの中身 の1行目の最初の 634006 や2ケース目の 728039 というのが、それです。 あとは、プログラムの一例に示すように、必要なコマンドやサブコマンドを記述していくことになります。 ●data.txtの中身 これがレコード番号 ↓ 634006 1 1 74 2 1 15 1 2 1 1 7 25 4 4 ← これが1レコード目 634006 2 1 7 6 3 1 5 5 5 6 3 ・ 634006 3 111421111111111 221 11111111111111 1 4 2 ・ 634006 4 8 1 30 15 2010 2 1 333332112 222 ・ 634006 5 211122 23 22 411 1122 1 3 2551155555 14 2 242413343 112112122323333122 この間が1ケース目の 634006 6 222233333222223333333222211235221511312111111 11123433423232222333212 データ 634006 7 441444444224344134334441114332244134323443243 2343243422224441243233 ・ 634006 8 112324411143114 114111 6 6 142441222233321444444434 11221 ・ 634006 9 2122 23142232423344 221133223422114122414222121221 3232322 ← これが9レコード目 728039 1 2 70 3 1 1 11 2 4 2 1 1 5 8 4 4 ← これが1レコード目 728039 2 1 1 1 11 14 3 11 1 4 4 7 3 3 ・ 728039 3 5555555535553555555 5 1 ・ 728039 4 8 301530 2 11 4 23322226233 ・ 728039 5 322243322633 1332422412 5555555555555 44241414141441 333333233333321133 この間が2ケース目の 728039 6 111133311111331111111311133533533255355555555 13444444444444444444444 データ 728039 7 444244333344444444444444134441444444444443342422433344313444444444444 ・ 728039 8 3344444444444444144444 6 1 111113333312424444444341 44444 ・ 728039 9 4444444444444444444 211111114222223211323123223323 3133242 ← これが9レコード目 ・・・・・・・ 以下省略 ・・・・・・ ●プログラムの一例 SET BLANKS=SYSMIS UNDEFINED=WARN WIDTH=132. DATA LIST FILE='D:\data.txt' FIXED RECORD=9 /KOJIN V1 TO V467(F6.0,3X,F1.0,X,F2.0,X,F2.0,X,9F1.0,X,F2.0,X,6(F1.0,X), F2.0,X,F1.0,X,F2.0,X,F1.0,X,F2.0,X,F1.0,X,F2.0,X,15F1.0,X,F2.0/ 9X,11F1.0,X,F2.0,X,F2.0,X,F2.0,X,F1.0,X,17F1.0,X,5(F2.0,X),F1.0/ 9X,19F1.0,X,20F1.0,X,F1.0,X,F1.0/ 9X,18F2.0,X,F1.0,X,11F1.0,X,13F1.0/ 9X,12F1.0,X,10F1.0,X,13F1.0,X,14F1.0,X,18F1.0/ 9X,25F1.0,20F1.0,X,23F1.0/ 9X,69F1.0/ 9X,22F1.0,X,F2.0,X,F2.0,X,24F1.0,X,5F1.0/ 9X,19F1.0,X,30F1.0,X,7F1.0). EXECUTE. VARIABLE LABELS KOJIN 'KOJIN回答者番号' V1 'V1 性別' V2 'V2 年齢' V3 'V3 世帯人数' ・・・・・・・ 省 略 ・・・・・・ V465 'V465 問47.25.特別扱いされる理由はない' V466 'V466 問47.26.自分の好きなことを優先' V467 'V467 問47.27.就業機会を制限すべき' VALUE LABELS V1 1 '1 男' 2 '2 女' /V14 1 '1 中学' 2 '2 高校' 3 '3 短大' 4 '4 大学' 5 '5 各種学校' /V15 1 '1 若い' 2 '2 年相応' 3 '3 老けている' 4 '4 わからない' ・・・・・・・ 省 略 ・・・・・・ ********************* MISSING VALUES V1(0, 3 THRU HI)/ V2(0 THRU 64)/ ・・・・・・・ 省 略 ・・・・・・ IF (V4 EQ 1) SETAI=1. IF (V5 EQ 1 AND ((V4 EQ 0 AND V6 EQ 0) AND (V7 EQ 0 AND V8 EQ 0)) AND ((V9 EQ 0 AND V10 EQ 0) AND (V11 EQ 0 AND V12 EQ 0))) SETAI=2. ・・・・・・・ 省 略 ・・・・・・ RECODE V81 TO V99(1=5)(2=4)(3=3)(4=2)(5=1) ************************************************** FACTOR VARIABLES=V400 TO V467 /MISSING LISTWISE /FORMAT=SORT BLANK(0.3) /PRINT ALL /EXTRACTION=GLS /CRITERIA ITERATE(80) /ROTATION=VARIMAX /MATRIX=OUT(COV=Q49.SAV) /SAVE=REG(ALL,TVFSCR) COMPUTE NAMAIKI=SUM(V214 TO V222) COMPUTE FREETIME=V138*60+V139 MISSING VALUES FREETIME(0, 1440 THRU HI) VARIABLE LABEL FREETIME '自由時間(分)' ************************************************ MEANS TABLES=TV_MIN BY V1 AGE SETAI V14 JOB V76 V77 V78 V121 V152 V176 /STATISTICS=ALL. ******************************* CORRELATIONS /VARIABLES=V81 TO V99 /PRINT=TWOTAIL NOSIG /MISSING=PAIRWISE . ******************************* NONPAR CORR /VARIABLES=V177 TO V186 /PRINT=BOTH TWOTAIL NOSIG /MISSING=PAIRWISE . **************************************** GLM FSCR28 BY V1 AGE SETAI /DESIGN=V1 AGE SETAI V1*AGE /PRINT=DESCRIPTIVE ETASQ OPOWER PARAMETER TEST(LMATRIX) HOMOGENEITY LOF RELIABILITY VARIABLES=V309 V315 V390 V335 V389 V388 V314 V369 /SCALE(KONOYARO)=V309 V315 V390 V335 V389 V388 V314 /MODEL=ALPHA /STATISTICS=DESCRIPTIVE SCALE /SUMMARY = MEANS VARIANCE TOTAL. ・・・・・・・・以下省略・・・・・・・・・・・・・・・・・・・・・ プログラムの作成を簡略化するには、先ほど述べたように、「ヘルプ」→「トピック」→「統計分析」→ 「シンタックス」とたどっていって、出てきたシンタックスや「Syntax Guide」の中のシンタックスをコピ ーして必要に応じて書き換えれるというやりかたがあります。また、上のプログラムの一例をコピーして テキストエディタにでも貼り付ければ、バッチ処理のためのプログラムをかなり簡単に組むことができるで しょう。 以上のようにしてプログラムができたら、あとは、実行するだけです。実行は、起動した「SPSSバッチ機能」 の画面(上で示しました)の「実行」ボタンを押すか、
ボタンを押すだけです。出力は、一般の処理と同じ ように「ビューア」に出力されます。また、「SPSSバッチ機能」の画面で、「編集」→「オプション」→「SPSS を実行時に表示」欄をチェックすると、実行終了と同時に一般処理の画面が現れて、そこにはバッチ処理のプロ グラムを作成中にCOMPUTE文などで新たに作成した変数や因子分析の際にオプションとして算出させる因子得点な ども自動的に付加されます。 かつて、大型計算機でSPSSを使っていた経験から、わたしには、いまでもバッチ処理の方が使い勝手がいい ような気がします。でも、パソコンでSPSSを使い始めた頃は、大型計算機の時よりもうまくいかずに難儀しま した。プログラムはかつてと大きな違いはないので問題はなかったのですが、EXECUTE までの最初の制御文の記述 に関してわかりやすく説明してあるものがなかったからです。色々試してみて、一番簡潔な書式として組んでみた のがここに記したものです。そんな経験から、以上のようなバッチ処理の仕方を紹介してみました。お役に立った ら幸いです。