SPSS備忘録 -54ページ目

「SPSSバッチ機能」でバッチ処理

6月13日の記事 の続きなのですが、SPSSバッチ機能でバッチ処理をします。


(1)SPSSシンタックスエディタに、データ入力から分析処理をさせるまでの一連の操作をシンタックス化しておき、*.spsファイルとして保存しておきます。


(2)Windows[スタート]ボタン→[すべてのプログラム]→[SPSS for Windows]→[SPSS 15.0 バッチ機能]を起動し、[追加]ボタンで(1)で指定したシンタックスを設定します。[出力用のフォルダ]欄に出力ファイルを書き出すディレクトリを指定し、*.spoファイル以外の文書や画像ファイルにしたい場合は[エクスポート オプション]で指定します。最後にメニューの[ファイル]→[保存]で*.sppファイルとして保存しておきます。


(3)Windowsコントロールパネルにある[タスク]を起動し、[SPSS 15.0J バッチ機能]をいつ動かすかをタスクとして登録しておきます。


(4)このタスクを右クリックし、[プロパティ]を開きます。[タスク]タブの[実行するファイル]欄に「C:\Program Files\SPSS\spssprod.exe」が既に指定されていると思われますので、(2)の*.sppファイルの場所を後に続けて「C:\Program Files\SPSS\spssprod.exe C:\batch.spp」というようにします。更にSPSSバッチ機能のスイッチとして「-r -s」と続け、「C:\Program Files\SPSS\spssprod.exe C:\batch.spp -r -s」とします。


(5)(3)で指定した条件になると、自動的にSPSSが起動して指定の処理を行います。


詳しくはマニュアルなどを参考にしてください。ためしに1回実行したほうが仕組みがわかると思います。

SPSSでバッチ処理

SPSSにもバッチ処理 をサポートする機能があります。これにより「毎週月曜日の深夜に前の週のデータを読み取って集計したファイルを自動作成させておく」というようなことをさせることが可能です。


SPSSには2種類のバッチ処理があります。


(1)SPSSB:SPSS Serverに入っている機能です。SPSS Serverの入っているコンピュータでコマンドプロンプトなどOSのコマンドモードを起動し、SPSSBというコマンドに続けて命令を出すことで実行されます。SPSS Serverがバックグラウンドサービス(デーモン)であるため、画面上にSPSSが動いている様子を見せずに処理できます。


(2)SPSSバッチ機能:SPSSのクライアントに入っている機能です(ただしDr.SPSSなど機能制限版にはないらしいです)。Windows[スタート]ボタン→[すべてのプログラム]→[SPSS for Windows]→[SPSS 15.0 バッチ機能]と選択すると、設定画面が表示できます。基本的にSPSS for Windowsを立ち上げて処理させる機能なので、画面上にSPSSが動いている様子を隠せません(常に最小化させておくことは可能)。


なぜ2種類あるのでしょうか?、紛らわしいです。以前英語のマニュアルをみたところ、「(2)SPSSバッチ機能」のほうは「SPSS Production mode」と紹介されておりました。きっと「(2)SPSSバッチ機能」は米国法人的にはバッチ処理じゃないんでしょう。「(2)SPSSバッチ機能」の機能のほうが歴史的に先に登場しているので、日本法人が「これはバッチ処理だよ!」と勇んで訳したのが残念ながら勇み足になって今も残っているのでしょうか?。


確かに「(2)SPSSバッチ機能」は厳密にはバッチ処理とはいえないかもしれませんが、実質バッチ処理をさせられる機能ですので、明日 紹介します。

条件式で複数の条件を同時に設定する場合(Clementine)

新フィールドの作成や条件抽出にて、例えば「18以上・60未満」や、「1~8のうちで1~3を選択したレコード」を抜き出す場合どのように選択すればいいでしょうか?。


Clementineでは条件式において、設定フィールドに対してひとつの式しかつなげることは出来ません。「年齢>=18」はOKですが、「60>年齢>=18」というような設定は出来ません。


複数の条件を設定したい場合は、条件式を複数用意して「and」や「or」で結合します。「18歳以上・60歳未満」の場合は「年齢>=18 and 年齢<60」で、「1~8のうちで1~3を選択したケース」の場合は「質問1=1 or 質問1=2 or 質問1=3」というようになります。条件になるフィールド名を何回も入力する必要がありますが、省略せず設定しましょう。


都度フィールドを設定

例えば年齢が18から60のレコードを選択したい場合は、CLEM式が「年齢 <= 60 and 年齢 > 18」となります。


18歳から60歳を選択