出力の管理はSPSSの出力の一部をいろんな形式のファイルに書き出すことにある。
過去に一度解説してあるが、ややこしいのでもっともシンプルな形を示す。
単なる例のためにSPSS15に入っているデータを使う。C:\spss\Tutorial\sample_files\demo.sav
次のシンタックス(http://www.spss.com/corpinfo/newsletter/0705_tip1.htm参照)はクロス集計表の調整済み残差をSPSSファイルに保存し、保存したファイルをデータ窓に呼び出す。
データ窓に\spss\Tutorial\sample_files\demo.savを呼び出しておいて、テーブルの中のシンタックスをシンタックスエディタにコピーして、走らせる。
OMS /SELECT TABLES /IF COMMANDS = ["Crosstabs"] SUBTYPES = ["Crosstabulation"] /DESTINATION FORMAT = SAV NUMBERED = TableNumber_ OUTFILE = "C:\spss\OMS.sav". CROSSTABS /TABLES= 収入カテゴリ 車カテゴリ 教育 BY 婚姻状況 /CELLS= ASRESID. OMSEND. GET FILE='C:\spss\OMS.sav' |
TableNumber_ | Command_ | Subtype_ | Label_ | Item | Category | Var3 | 未婚 | 既婚 | p |
1 | Crosstabs | Crosstabulation | 世帯全体の収入カテゴリ (千ドル) と 婚姻状況 のクロス表 | 世帯全体の収入カテゴリ (千ドル) | 25未満 | 調整済み残差 | -0.9 | 0.9 | 0.39 |
1 | Crosstabs | Crosstabulation | 世帯全体の収入カテゴリ (千ドル) と 婚姻状況 のクロス表 | 世帯全体の収入カテゴリ (千ドル) | 25 - 49 | 調整済み残差 | 1.3 | -1.3 | 0.20 |
1 | Crosstabs | Crosstabulation | 世帯全体の収入カテゴリ (千ドル) と 婚姻状況 のクロス表 | 世帯全体の収入カテゴリ (千ドル) | 50 - 74 | 調整済み残差 | -0.8 | 0.8 | 0.42 |
1 | Crosstabs | Crosstabulation | 世帯全体の収入カテゴリ (千ドル) と 婚姻状況 のクロス表 | 世帯全体の収入カテゴリ (千ドル) | 75以上 | 調整済み残差 | 0.0 | 0.0 | 0.97 |
2 | Crosstabs | Crosstabulation | 車の価格カテゴリ と 婚姻状況 のクロス表 | 車の価格カテゴリ | 安い | 調整済み残差 | 0.3 | -0.3 | 0.80 |
2 | Crosstabs | Crosstabulation | 車の価格カテゴリ と 婚姻状況 のクロス表 | 車の価格カテゴリ | 普通 | 調整済み残差 | 0.1 | -0.1 | 0.96 |
2 | Crosstabs | Crosstabulation | 車の価格カテゴリ と 婚姻状況 のクロス表 | 車の価格カテゴリ | 高い | 調整済み残差 | -0.3 | 0.3 | 0.77 |
3 | Crosstabs | Crosstabulation | 教育のレベル と 婚姻状況 のクロス表 | 教育のレベル | 中学 | 調整済み残差 | -3.0 | 3.0 | 0.00 |
3 | Crosstabs | Crosstabulation | 教育のレベル と 婚姻状況 のクロス表 | 教育のレベル | 高校 | 調整済み残差 | -0.1 | 0.1 | 0.95 |
3 | Crosstabs | Crosstabulation | 教育のレベル と 婚姻状況 のクロス表 | 教育のレベル | 専門学校 | 調整済み残差 | 2.1 | -2.1 | 0.04 |
3 | Crosstabs | Crosstabulation | 教育のレベル と 婚姻状況 のクロス表 | 教育のレベル | 大学 | 調整済み残差 | 1.1 | -1.1 | 0.29 |
3 | Crosstabs | Crosstabulation | 教育のレベル と 婚姻状況 のクロス表 | 教育のレベル | 大学院 | 調整済み残差 | -0.1 | 0.1 | 0.93 |
COMPUTE p=SIG.CHISQ(未婚**2,1). RENAME VARIABLES Var1=Item Var2=Category. SPLIT FILE BY Item. SUMMARIZE /TABLES=Category 未婚 p /FORMAT=LIST NOCASENUM NOTOTAL /TITLE='Group comparisons for response categories' /MISSING=VARIABLE /CELLS=NONE. |
Item | Category | 婚姻状況 未婚 |
p | |
---|---|---|---|---|
世帯全体の収入カテゴリ (千ドル) | 1 | 25未満 | -.9 | .39 |
2 | 25 - 49 | 1.3 | .20 | |
3 | 50 - 74 | -.8 | .42 | |
4 | 75以上 | .0 | .97 | |
車の価格カテゴリ | 1 | 安い | .3 | .80 |
2 | 普通 | .1 | .96 | |
3 | 高い | -.3 | .77 | |
教育のレベル | 1 | 中学 | -3.0 | .00 |
2 | 高校 | -.1 | .95 | |
3 | 専門学校 | 2.1 | .04 | |
4 | 大学 | 1.1 | .29 | |
5 | 大学院 | -.1 | .93 |
>Error # 4757 in column 256. Text: (End of Command)
>SPLIT FILE コマンド上において、 8 個よりも多いスプリット ファ
>イル変数が要求されました。長い文字列変数は複数個のスピリット ファイル
>変数であると見なされます。
長い文字型変数 (8 バイトを超える文字型変数) の場合は 8 バイトが 1 つの変数としてカウントされ、8 つまでがグループ化変数として使用できます。というのに引っかかっていた。長い値(実際は変数ラベルが入っていた))のためこういう問題が生じてしまった。エラーメッセージにもいちいち調べなくてもいいような工夫が欲しい。
スクリプトの作成の実験台に丁度いいののではないか。
Python の説明は別途SPSS ときど記(227) 2006/ 1/10 外部プログラム 14の新機能などを見て知る必要がある。日本語のページがすでに変わっている。ここ(Pythonのお勉強)からいろいろ情報を得る必要があるだろう。
SPSSからの提供物は SPSS Developer Centralにある。
でspssaux.pyをnetscape でダウンロードしたらファイル名をspssaux.py.cfcに変更されていた。これは要注意だ。おっとほとんどの人はIEだから関係ないか。spssaux.pyに戻してc:\python24\lib\site-packagesに保存し、シンタックス窓に次のシンタックスを入れて走らせる。
BEGIN PROGRAM. import spssaux help (spssaux) END PROGRAM. |
data list free/v1 to v3. |
set printback off mprint off. DATA LIST FREE /var1. BEGIN DATA 1 END DATA. DATASET NAME File1. BEGIN PROGRAM PYTHON. import spss File1N=spss.GetVariableCount() END PROGRAM. DATA LIST FREE /var1 var2 var3. BEGIN DATA 1 2 3 END DATA. DATASET NAME File2. BEGIN PROGRAM PYTHON. File2N=spss.GetVariableCount() if File2N > File1N: message="File2 は File1 よりも変数が多い." elif File1N > File2N: message="File1 has more variables than File2." else: message="Both files have the same number of variables." print message END PROGRAM. |
選択された値は上のオプションから順に0,1, 2 となっていく。
Sub Main Begin Dialog UserDialog 500,119 , "オプションボタン練習" Text 10,10,180,15,"Please push the OK button" OptionGroup .Options OptionButton 10,30,180,15,"Option &0" OptionButton 10,45,180,15,"Option &1" OptionButton 10,60,180,15,"Option &2" OptionGroup .Group1 OptionButton 220,35,160,14,"OptionButton1",.OptionButton1 OptionButton 220,56,160,14,"OptionButton2",.OptionButton2 OKButton 80,90,40,20 Text 210,14,140,14,"グループ2",.Text1 End Dialog Dim dlg As UserDialog dlg.Options = 2 Dialog dlg ' show dialog (wait for ok) Debug.Print dlg.Options; "Options" Debug.Print dlg.Group1; "グループ2" End Sub |
次のようにCancelButton を指定する。「キャンセルボタンの追加」というボタンがあるのでそれを押せばいい。これでダイアログボックスの右上の×も有効となる。
Sub Main Begin Dialog UserDialog 200,120,"キャンセル練習" ' %GRID:10,7,1,1 Text 10,10,180,30,"キャンセルボタンを押してください" OKButton 40,90,40,20 CancelButton 90,91,90,21 End Dialog Dim dlg As UserDialog Dialog dlg ' ダイアログの表示 (wait for cancel) Debug.Print "Cancel was not pressed" End Sub |