見出し画像

[PSPP]データの操作

変数の計算

こまかな操作は、各分析手法の説明のところで述べることになると思うので、ここでは簡単な変数の計算について説明します。

「国語」と「英語」の得点データを使い、2科目の合計得点を計算します。

・[変換]→[変数の計算]を選択。
・[目標変数]に「合計」と入力。
・左の一覧表から「国語」を選び、「=」の下の三角を押して、[数式]のところに「国語」を表示させる。
・つづけて「+」を入力し、「英語」をその後ろに表示させる。
・[OK]をクリック。

すると、「データビュー」の「英語」の列の隣に新たに「合計」の列ができ、合計得点が表示されます。

エクセルと同じように関数を使った計算や、シンタックスエディタを使ってIF文などが入った複雑な計算をすることも可能です。

たとえば、女子だけ2科目の合計点を計算し、男子は「0」と入力する場合は以下のようにします。

・[ファイル]→[新規作成]→[シンタックス]を選択。
・「シンタックスエディタ」が開くので、
  IF (性別 = 1) 合計2 = 国語+英語.
  IF (性別 = 2) 合計2 = 0.
と入力して、[実行]→[すべて]を選択。

これで、「データビュー」に新たに「合計2」という変数が作られて、女子だけ2科目の合計が表示され、男子は「0」が表示されます。

「国語+英語」の部分は「sum(国語,英語)」のように書くこともできます。また、3つ以上の連続して並んでいる変数を扱う場合は、エクセルの関数同様に「sum(A to C)」のような指定の仕方も可能です。

エクセルと同様に、「or」や「and」も使うことができ、例えば、「IF (性別 = 1 AND クラス = 1)」などのように指定します。使えるのは以下のものです。

・~と等しい = ,EQ
・~と等しくない ~=,NE
・~より少ない < ,LT
・~以下 <=,LE
・~より多い > ,GT
・~以上 >=,GE
・かつ & ,AND
・または | ,OR
・~でない NOT

また、システム欠損値は「SYSMIS」、システム欠損値またはユーザー欠損値は「MISSING」となります。

※システム欠損値は、データでブランクの場合、ユーザー欠損値は任意に定義できる(後述)。


変数への値の割り当て

計算をするわけではなく、変数の値を元に別の値に置き換える場合は、値の再割り当てということを行います。[変換]メニューの中に、[同一の変数への値の再割り当て]と[他の変数への値の再割り当て]の2つがあります。前者は言ってみれば「置換」です。置換の失敗が怖いという場合は、[他の変数への値の再割り当て]を使うといいでしょう。

[同一の変数への値の再割り当て]と[他の変数への値の再割り当て]は、再割り当てを行う変数を指定するところと、後で述べる数値の指定のところは共通です。違いは、[他の変数への値の再割り当て]では、変換する変数に対して[変換先変数]の[名前]を付けて[変更]をクリックするところです。

変数を指定した後は、どちらの再割り当ても、同じ作業となります。

・左側で元の値を指定し、右の[新しい値]に割り当てる値を入力し、[add]をクリック。

・これを必要な分だけ繰り返し、終了したら[続く]をクリック。
・元の変数指定画面(上の2枚の図)に戻るので、[OK]をクリック。

これで、値の再割り当てが行われ、[他の変数への値の再割り当て]では、新しい変数が自動で作成され、追加されます。

元の値の指定は、単独の値は勿論、欠損値も指定できます。範囲指定も[範囲]では上限と下限の指定が、[範囲:最小値から次の値まで]では上限の指定、[範囲:次の値から最大値まで]では下限の指定が行えます。

[その他の全ての値]は、指定しなかった全ての値を対象にすることができますので、例えば、100点満点のテストで、80点以上を[範囲:次の値から最大値まで]を使って「1」に、40点までを[範囲:最小値から次の値まで]を使って「3」にして、残りは[その他の全ての値]を使い、[新しい値]に「2」を入れることで、もれなく指定することができます。

次の図は、元の変数を「合計」にし、「15」までを「2」、[その他の全ての値]を「1」に指定して、[他の変数への値の再割り当て]を行ったものです。

数が少ないときは、これでかまわないのですが、数が多くなってくるとこれでは大変です。特に、元のデータが文字だったりすると、範囲指定ができないので極めて面倒になります。

そういう場合には、シンタックスを編集した方が早いこともあります。テキストエディタなどを使い慣れていると、編集が楽に行えますから、そちらで書いたシンタックスを、シンタックスエディタに貼り付けて実行すると、より効率的でしょう。

変数に値を割り当てるには、「RECODE」という命令を使います。

例えば、「Q2」という変数には、「A」から「Z」までの値が入っているはずなのですが、入力ミスでそれ以外の値が入っている可能性があるので、それを排除するためのフィルターとして「Q2fltr」という新しい変数に、「A」から「Z」までの値に「1」、それ以外の値に「0」を割り当てるとします。

・[ファイル]→[新規作成]→[シンタックス]を選択。

起動したシンタックスエディタに、以下のように書き、[実行]→[すべて]で割り当てが行われます。

RECODE Q2
 ("A" = 1) ("B" = 1) ("C" = 1)
 ("D" = 1) ("E" = 1) ("F" = 1)
 ("G" = 1) ("H" = 1) ("I" = 1)
 ("J" = 1) ("K" = 1) ("L" = 1)
 ("M" = 1) ("N" = 1) ("O" = 1)
 ("P" = 1) ("Q" = 1) ("R" = 1)
 ("S" = 1) ("T" = 1) ("U" = 1)
 ("V" = 1) ("W" = 1) ("X" = 1)
 ("Y" = 1) ("Z" = 1) (ELSE = 0)
 INTO Q2fltr .

詳細を説明すると、「RECODE」の後が元になる変数名、最後の「INTO」の後が割り当て先の変数名です。ここに新しい変数名を書けば、その変数列が作成されて、そこに値が入ります。既存の変数名を書けば、その変数に値を割り当てることができるので、元の変数名をそのまま書けば、[同一の変数への値の再割り当て]になります。

そしてその間に( )で囲んで、割り当て式を書きます。左が元の値、右が新しい値で、これを「=」で結びます。「”A”」のようになっているのは、文字データだからで、数値なら””は不要です。これはダイアログボックスで元の「値」と、「新しい値」の「値」を指定しているのと同じです。

最後の「ELSE」は「それ他のすべての値」の意味です。「それ他のすべての値」にチェックをつけて、「新しい値」の「値」に「0」を指定していることになります。

ダイアログボックスに従って、他の指定を見ていくと、

・システム欠損値:SYSMIS
・システムまたはユーザー欠損値:MISSING
・範囲:数値小 THRU 数値大
・範囲.最小値から次の値まで:LOWEST THRU 数値
・範囲.次の値から最大値まで:数値THRU HIGHEST

となります(ユーザー欠損値については、この後で説明します)。

一方の「新しい値」の「システム欠損値」は、元の値の場合と同じで「SYSMIS」です。

また、ここで「COPY」という指定も使うことができます。これはSPSSではチェック項目に上がっている「元の値をコピー」に相当するもので、元の変数の値をそのまま割り当てる命令です。


ユーザー欠損値の定義

通常、データの欠損値は元々無回答でデータがないのでブランクになっている場合をいいますが、データ収集の段階で、例えば無回答を「0」や「99」などのように、任意の数字を割りあてて、「無回答」であることに意味を持たせることもあります。単純集計やクロス集計で「無回答」を集計するような場合です。

しかし、この場合はそれが欠損値であるとPSPP上で設定しておかなければ、そのまま「0」や「99」として処理されてしまいます。

PSPPでは、以下の方法でユーザー欠損値の定義が可能です。

①変数ビューでの定義
まず、「変数ビュー」を用いる場合です。
・定義したい変数の[欠損値]の[…]をダブルクリック。
・[欠損値]のダイアログ・ボックスで、[離散的欠損値]か[範囲とオプションの離散的欠損値]をチェックして、欠損値を定義。
・[OK]をクリック。

[離散的欠損値]では、3つまで欠損値を定義することができます。

[範囲とオプションの離散的欠損値]では、上限と下限によって定めた範囲の値と、さらに個別に1つの欠損値を定義することができます。

②シンタックスエディタでの定義
通常は①変数ビューでの定義で問題ないのですが、複数の変数に対して定義を行うような場合は、シンタックスエディタを使って、定義をした方が実用的です。定義文は以下のようになります。

missing values 変数名(欠損値のリスト) /変数名(欠損値のリスト)…

たとえば、「国語」と「数学」という変数において、それぞれ「99」を欠損値として定義する場合は以下のようになります。

・[ファイル]→[新規作成]→[シンタックス]を選択。
・「シンタックスエディタ」が開くので、

 missing values 国語(99)/数学(99).

と入力して、[実行]→[すべて]を選択。

変数ビューを開いてみると、「国語」と「数学」の[欠損値]のところがともに「99.00」となっており、同時に定義されていることが確認できます。


ケースの選択とグループ分け

データが色々ある中で、特定のケースだけを選び出したい場合、エクセルのようにフィルターをかけることもできます。

たとえば、次のようなデータがあったとします。「性別」変数は、「男子」が「1」、「女子」が「2」で入力されています。

・[データ]→[ケースの選択]で、

[すべてのケース]
[ケースの無作為抽出]
[日付またはケース番号の範囲]
[フィルター変数の使用]

の4つのフィルターをかけることができます。

そして、そのフィルターで、分析から[除外]するか、データセットから[削除]するかを選ぶことができます。

[フィルター変数の使用]が一番汎用性が高いですが、これは「0」と「1」のうち、「1」を選択する機能しかありません。

そこで、左のデータで「女子」だけを選びたい場合は、先に説明した「他の変数への値の再割り当て」で、フィルター用の変数を作ります。

「性別フィルター」という変数に、「性別」が「2」の場合に「1」、その他の場合に「0」を割り当てます。それから、[フィルター変数の使用]に「性別フィルター」を選択し、[選択されなかったケース]で[除外]にチェックをつけて、[OK]をクリックします。

すると、「女子」だけが選択され、「男子」には「/」が入ります。もし、[選択されなかったケース]で[削除]にチェックをつけていれば、「男子」のケースがすべて削除されます。

選択状態は、[すべてのケース]を選択しなおすまで継続されます。

または、「男子」と「女子」で別々に同じ分析を行い、比較したいということもあるでしょう。その場合、[ケースの選択]を使うと、「男子」を選択→分析、「女子」を選択→分析ということをしなくてはいけません。比較したいグループが多くなると、これは大変です。

そういう場合は[ファイルの分割]を使います。

・[データ]→[ファイルの分割]を選択。
・[グループごとの分析]にチェックをし、[グループ化変数]に「性別」を指定。
・[グループ変数によるファイルの並べ替え]にチェックをつけると、ケースがグループごとにソートされる。
・[OK]をクリック。

一見、何も変化しませんが、ウインドウの一番下に[分割性別]と表示され、「性別」変数によって、ファイルが分割されていることが示されます。

ファイルの分割状態は、[全てのケースを分析]を選択しなおすまで継続し、以下に行う全ての分析は、[グループ化変数]内のグループごとに行われます。

このデータの場合だと、「男子」「女子」で別々に分析が行われます。

この記事が気に入ったらサポートをしてみませんか?