SPSS Statisticsスクリプトを使って出力結果の強調表示


はじめに

■実行環境
OS macOS Big Sur バージョン11.6
SPSS Statistics v28.0.0 (190)

SPSS Statisticsの出力テーブルで、参照したいセルをハイライト(強調表示)します。
例として、被験者が異なる2群の平均値を比較する独立したサンプルのt検定の有意確率(両側p値)をハイライトします。
SPSS Statisticsの[分析]メニュー>[平均の比較]>[独立したサンプルのt検定]を実行すると[独立サンプルの検定]テーブルに『Levene検定』、『(スチューデントの)t検定』、『Welch(ウェルチ)の検定』結果が出力されます。これは、独立したサンプルのt検定の仮定にある「2群の分散は等しい」かをLevene検定で評価し、その結果を基にして、等分散を仮定する場合にはt検定の結果を、等分散を仮定しない場合にはWelchの検定結果を採用できるようにしているためです。
そこで、等分散性の検定の結果からt検定、Welchの検定どちらの結果を採用すべきかを色付けし、視覚的に参照するセルを判断できるようにスクリプトを実行してみます。

独立したサンプルのt検定を実行

SPSS Statisticsに同梱されているサンプルデータdemo.sav を使用しました。
【手順】
 ①[分析]メニュー>[平均の比較]>[独立したサンプルのt検定]を選択
 ②[検定変数]に[年齢]、[居住年数]、[世帯収入]、[勤続年数]を投入
 ③[グループ化変数]に[性別]を投入し、[グループの定義]ボタンをクリック
 ④[グループ1]に[f]、[グループ2]に[m]と入力して、続行ボタンをクリック
 ⑤[OK]ボタンをクリック

独立したサンプルのt検定結果が出力されます。

今回注目するテーブルは、[独立サンプルの検定]です。
まずは、❶の[等分散性のためのLeveneの検定]の[有意確率]を参照します。有意水準は0.05 (5%)を採用します。
[年齢]は、[有意確率]が0.001未満で等分散を仮定できません。[現住所の居住年数]、[世帯収入]は、[有意確率]が0.05以上で等分散を仮定できます。[現在の会社での勤続年数]は、[有意確率]が0.05未満で等分散を仮定できません。
そこで、[年齢]と[現在の会社での勤続年数]は、❷の[2つの母平均の差の検定]の下段のWelchの検定結果を採用します。[現住所の居住年数]、[世帯収入]は、上段のt検定の結果を採用します。

スクリプトを実行して、参照するセルをハイライト

前述のように、❶を確認して、❷へ進む手続きをセルをハイライトすることですばやく間違いなくできるようにスクリプトを実行してみます。
【手順】
 ①[ユーティリティ]メニュー>[スクリプトの実行]を選択
 ②実行するスクリプトファイルを選択して、[Open]ボタンをクリック

参照すべき[2つの母平均の差の検定]の[有意確率]がハイライトされました。

スクリプトは、独立したサンプルのt検定を実行するたびに自動実行することもできます。

【手順】
 ①[編集]メニュー>[オプション]を選択
 ②[スクリプト]タブをクリック
 ③[オートスクリプトの使用]をチェック
 ④[OK]ボタンをクリック

以降、独立したサンプルのt検定を実行するとスクリプトが実行されます。

参考

今回の[独立したサンプルの検定]テーブルの[2つの母平均の差の検定]の参照セルをハイライトするために使用したスクリプトのサンプルは次の通りです。

# 独立したサンプルのt検定:等分散性の検定の結果から参照するセルをハイライト
import SpssClient
SpssClient.StartClient()

OutputDoc = SpssClient.GetDesignatedOutputDoc()
OutputItems = OutputDoc.GetOutputItems()

for index in range(OutputItems.Size()):   
    OutputItem = OutputItems.GetItemAt(index)
    if OutputItem.GetType() == SpssClient.OutputItemType.PIVOT \
          and OutputItem.GetDescription() == "独立サンプルの検定": #テーブル名の指定
          	  PivotTable = OutputItem.GetSpecificType()
          	  RowLabels = PivotTable.RowLabelArray()
          	  DataCells = PivotTable.DataCellArray()
          	  for m in range(RowLabels.GetNumRows()):
              	      for n in range(RowLabels.GetNumColumns()):
              	          if RowLabels.GetValueAt(m,n) == "等分散を仮定する":
              	              if DataCells.GetValueAt(m,1) == "<.001":
              	                  sig_value = 0.01
              	              else:
              	                  sig_value = float(DataCells.GetValueAt(m,1))

              	              if sig_value < 0.05:
              	                  DataCells.SetBackgroundColorAt(m+1,5,65280) #参照ハイライト
              	              else:
              	                  DataCells.SetBackgroundColorAt(m,5,65280) #参照ハイライト

スクリプトの参考資料はこちらです。
https://www.ibm.com/docs/en/SSLVMB_28.0.0/pdf/Python_Reference_Guide_for_IBM_SPSS_Statistics.pdf

まとめ

検定する変数の数が多い場合や頻繁に検定する場合には便利です。ハイライトして加工したテーブルを右クリックするとエクスポートが選択でき、このままのテーブルイメージでExcelに表示もできます。