define crossstats (vars=!charend('/')/ var=!charend('/') /tvar=!default(0)!charend('/') /* 0= btoh 1=names else=labels */ ). * Cramer の V係数. OMS /SELECT TABLES /IF COMMANDS = ["Crosstabs"] SUBTYPES = [ 'Symmetric Measures'] /DESTINATION FORMAT = SAV NUMBERED = TableNumber_ OUTFILE = "OMS2.sav". *カイ2乗値. OMS /SELECT TABLES /IF COMMANDS = ["Crosstabs"] SUBTYPES = [ 'Chi Square Tests'] /DESTINATION FORMAT = SAV NUMBERED = TableNumber_ OUTFILE = "OMS3.sav". exec. *クロス集計変数リスト. OMS /SELECT TABLES /IF COMMANDS = ["Crosstabs"] SUBTYPES = [ 'Case Processing Summary' ] /DESTINATION FORMAT = SAV NUMBERED = TableNumber_ OUTFILE = "OMS4.sav". *oms 指定の終了. **********************. preserve. set ovars=both tvars=both. !if (!tvar=1) !then set ovars=names tvars=names. !ifend. !if (!tvar=2) !then set ovars=labels tvars=labels. !ifend. **********************. *クロス集計の実行. CROSSTABS /CELLS= count row ASRESID/statistics=chi phi /TABLES= !vars BY !var . ********************************. ** ↑↑変数を指定する。↑↑ **. ********************************. OMSEND. *omsコマンド終了. ****************. *Cramer の V計数のとりだし. ****************. exec. GET FILE='OMS2.sav'. select if (Var2="Cramer の V"). save outfile='OMS.sav'/drop=Command_ Subtype_ Label_ Var1 Var2 近似有意確率 /rename=(値=効果量). ****************. *カイ2乗値等のとりだし. ****************. GET FILE='OMS3.sav'. exec. select if (Var1="Pearson のカイ 2 乗 "). save outfile='OMS31.sav'/drop=Var1 Command_ Subtype_ Label_ /rename=(値=カイ2乗値)(漸近有意確率両側=p値). exec. ********************. *尤度比χ2統計量の取り出し. *********************. GET FILE='OMS3.sav'. select if (Var1="尤度比"). save outfile='OMS32.sav'/keep=TableNumber_ 値 /rename=(値=尤度比). *GET FILE='OMS32.sav'. exec. *******************. *クロス集計変数の取り出し. *******************. GET FILE='OMS4.sav'. compute TableNumber_=$casenum. save outfile='OMS4.sav'/drop=Command_ Subtype_ Label_ 欠損_N 欠損_パーセント 合計_N 合計_パーセント /rename=(Var1=クロス集計). exec. ****************. *ファイルの合併. ****************. GET FILE='OMS4.sav'. match files file=*/FILE='OMS31.sav'/FILE='OMS32.sav'/ file=='OMS.sav'/by TableNumber_. save outfile='crossOMS.sav'. exec. **********************************. *合併を反映させたファイルを使用してAICの計算. **********************************. get file='crossOMS.sav'. compute AIC=2*自由度-尤度比. compute 効果量=abs(効果量). save outfile='crossOMS.sav'. **************. set ovars=names tvars=names. ****************. *処理順に書き出し. ****************. summarize table=TableNumber_ クロス集計 有効数_N 有効数_パーセント カイ2乗値 尤度比 自由度 p値 効果量 AIC /title='クロス集計表のカイ2乗値と効果量(処理順)' /cellls=none /format=list nocasenum nototal/statistics=none. ****************. *AIC順に書き出し. ****************. sort cases by AIC(A). summarize table=TableNumber_ クロス集計 有効数_N 有効数_パーセント カイ2乗値 尤度比 自由度 p値 効果量 AIC /title='クロス集計表のカイ2乗値と効果量(AIC順)' /cellls=none /format=list nocasenum nototal/statistics=none. ****************. *効果量順に書き出し. ****************. sort cases by 効果量(D). summarize table=TableNumber_ クロス集計 有効数_N 有効数_パーセント カイ2乗値 尤度比 自由度 p値 効果量 AIC /title='クロス集計表のカイ2乗値と効果量(効果量順)' /cellls=none /format=list nocasenum nototal/statistics=none. exec. *dataset 'crossOMS.sav'. restore. !enddefine. *以下実行例 処理する場合、差し替えてください↓↓↓******************.. crossstats vars=Campaign5009 Campaign5010/var= QAnswer18017 QAnswer18018. ********************************************************************.