Up

質問紙逆転項目の処理

2023.11.28 スクリプトを更新した。

 

質問紙は回答のバランスを取るために逆転項目を含むことがある。信頼性係数を求めるときは、逆転項目のカテゴリを逆にして、他の項目とカテゴリの方向を揃える必要がある。このための簡単なPythonスクリプトを用意してみた(リスト1)。

データは図1のように用意する。

図1 ExcelファイルData.xlsx

 

第1行目に変数名(項目名)を書く。第1列目はデータの識別用で、通し番号や適当な文字列を書いておく。第2列目から項目の回答を書き入れていく。ただし、第2行目は、逆転項目であるかどうかを示す値を入力する。逆転項目であればー1を設定するが、逆転項目でないならばー1以外の数値であれば何でもよい。図1では0が設定されている。3行目から以降に回答カテゴリ値を書いていく。

図1のExcelファイルは、次のスクリプトでPandasDataFrame型のオブジェクトとして読み込まれ、data_dfで表される。

 

flnm = input('入力データファイル(*.xlsx) = ')

with pd.ExcelFile(flnm) as data_fl:

    data_df = pd.read_excel(data_fl)

 

上のスクリプトを実行して、「モジュールxlrdがインストールされていない」などのエラーメッセージがでたら、pipコマンドでインストールすればよい。

次のスクリプトで、DataFrameオブジェクトdata_dfのデータは、項目のカテゴリ数Kの入力後、逆転項目の処理が行われ、dfで表されるDataFrameオブジェクトに格納される。

 

K = int(input('K = '))                          #   カテゴリ数

c_nm = data_df.columns.values

df = pd.DataFrame()

for c in c_nm:

    v = data_df[c].values

    if v[0] == -1:                              #   逆転項目

        df['R_' + c] = K + 1 - data_df[c].values[1:]

    else:

        df[c] = data_df[c].values[1:]

 

逆転項目として処理された項目は、項目名(変数名)の頭に「R_」が付けられた名前で表される。

逆転項目の処理結果のDataFrameオブジェクトdfは、次のスクリプトでExcelファイルに書き出される。ファイル名は、入力ファイル名の頭に「R_」が付いたものである。

 

with pd.ExcelWriter('R_' + flnm) as xl_writer:

    df.to_excel(xl_writer, index = False)

 

図1のファイルData.xlsxを入力ファイルとしたときのK=3の設定の場合の出力ファイルは図2のようになる。

図2 図1のファイルの処理結果

 

プログラムの全体をリスト1に示す。

なお、Jupyter Notebook用のプログラムも用意した。サンプルデータファイルとともにまとめて圧縮ファイルfiles8_RevItm_jn.zipとした。実行画面例をここに示した。

 

リスト1 逆転項目処理スクリプト

 

import pandas as pd

import numpy as np

 

flnm = input('入力データファイル(*.xlsx) = ')

with pd.ExcelFile(flnm) as data_fl:

    data_df = pd.read_excel(data_fl)

K = int(input('K = '))                          #   カテゴリ数

c_nm = data_df.columns.values

df = pd.DataFrame()

for c in c_nm:

    v = data_df[c].values

    if v[0] == -1:                              #   逆転項目

        df['R_' + c] = K + 1 - data_df[c].values[1:]

    else:

        df[c] = data_df[c].values[1:]

with pd.ExcelWriter('R_' + flnm) as xl_writer:

    df.to_excel(xl_writer, index = False)

 

 

リスト1のスクリプトファイルなどは圧縮ファイルfiles8_RevItm.zipにまとめたので、ダウンロード・解凍すれば自由に利用できる。

 

リスト1を実行すると、まず入力データファイル名の入力が求められる(図3)。

図3 実行時の画面

 

入力データファイルは、リスト1のスクリプトファイルと同じフォルダに置いておくと操作が簡単である。

入力データファイル名の設定後、カテゴリ数Kの入力が求められる。カテゴリ値は、1からKまでの整数値であることが前提とされている。カテゴリ数Kの入力後、逆転項目の処理が行われてファイルに出力される。

 

なお、心理尺度については<岡本安晴「心理学データ分析と測定」勁草書房>で説明している。

Pythonによるデータ分析については<岡本安晴「いまさら聞けないPythonでデータ分析」丸善出版>で説明している。

 

 

Up