SPSS ときど記(1〜10)

SPSSを使っていてトラぶったところや変な出力や裏技表技の便利な使い方を中心に書き留めてみる。何回話題があるかわからないですが,時々書くことにします。(Keizo Hori
最終更新日: (2000/3/27から)

メニューへ (11)-(20) (21)-(30)

  1. SPSS ときど記(10) 2000/ 4/23 因子分析 最尤法の適合度指標
  2. SPSS ときど記( 9) 2000/ 4/19 スクリプト 名付けて保存をしてもタイトルバーは変わらない
  3. SPSS ときど記( 8) 2000/ 4/17 因子分析 指数表現を止めるスクリプト
  4. SPSS ときど記( 7) 2000/ 4/14 因子分析 /print KMO AIC(MSA)
  5. SPSS ときど記( 6) 2000/ 4/12 マクロ loop の上限に引っかかる
  6. SPSS ときど記( 5) 2000/ 4/ 9 因子分析 因子負荷量を入力しての分析
  7. SPSS ときど記( 4) 2000/ 4/ 8 因子分析 重みなし最小2乗→重み付け最小2乗
  8. SPSS ときど記( 3) 2000/ 4/ 7 SPSSの個々のヘルプを見る
  9. SPSS ときど記( 2) 2000/ 3/29〜2000/4/7 CATPCA(categories)
  10. SPSS ときど記( 1) 2000/ 3/27 DO REPEAT の代理変数

SPSS ときど記(10) 2000/4/23

因子分析 最尤法の適合度指標

検証的因子分析・共分散構造分析(構造方程式モデル)では適合度検定,適合度指標,情報量基準などが使用されていて,モデルとデータの適合度をチェックし,どのモデルがいいかを判定するようになってきている。これらには探索的因子分析にも適用できるものもある。

χ2検定はSPSSの因子分析の最尤法でも出力される。χ2値から簡単に計算できる,AIC,BIC,RMSEA(Root mean square error of approximation)があればそれはそれで使えるであろう。χ2検定はサンプル数が多い場合はすぐ棄却してしまうのでサンプル数が多いときには有効な指標とは言えない。狩野(2000近刊)は検証的因子分析の説明において,「標本サイズn が大きくないときはカイ2乗値を重視し,nがかなり大きいときは適合度指標を見る」という考えを示している。

RMSEA は, その値が 0.05 以下であれば良い適合, 0.10 以上であれば悪い適合と判断する」(狩野,2000近刊)。90%の信頼閾を通常出力されているが,省略。計算法が明確になれば追加するかもしれない。

鈴木(1999) はGFI を強く薦めているが,残念ながらχ2値と自由度からすぐに求まるものでないので割愛した。

情報量規準のAIC,BIC, BIC* を計算してみた。因子分析においては,AICは必ずしも最適のモデルを示すわけではないとされている。サンプル数の多いときにはBIC のほうがいいとされている。BIC* は自由度のペナルティがAICとBICとの間になる。BICのペナルティがもっとも大きい。

例えば,柳井ほか(1990,p88)の性格データを分析すると,
男女200名,男子100名,女子100名 
AIC :6因子(または5因子),6因子(または5因子),4因子
BIC :4因子,4因子,3因子
BIC*:4因子,5因子(または4因子),3因子
となる。
 男女200名および男子100名の結果はAICは元の分析とは違って5因子と6因子の差が1.0以下となり,5因子でもかまわないものとなる。
 BICがもっとも因子数を少なく推定し,その次がBIC*,そして,AICがもっとも多くの因子数になっている。

さて,SPSSの因子分析のχ2値は,Bartlett の修正をしたものである。これは,spss アルゴリズムの因子分析のところを読めば分かる。

χ2値のBartlettの修正については鈴木(1999)が詳しい。この修正を元のχ2値に戻すのには,因子数と変数数がわからなければならない。このあたりを工夫してなるべく人手をかけないようにしたのが,rmsea.sbs です。

SPSSももう少し適合度指標をだすようにしてほしい。


《引用文献》
ftp://ftp.spss.com/pub/spss/statistics/spss/algorithms/ factor.pdf 2000/4/23

鈴木督久(1999). http://faculty.web.waseda.ac.jp/stok/menu01.html 因子分析モデル 2000/4/23(なぜか直接因子分析モデルのpdfファイルにアクセスがうまくいかないことが多い)

柳井晴夫・繁桝算男・前川真一・市川雅教(1990).『因子分析法』朝倉書店

吉田・狩野・原田(2000).『SASによる統計解析』科学技術出版

メニューへ トップへ (11)へ

SPSS ときど記(9) 2000/4/19

スクリプト 名付けて保存をしてもタイトルバーは変わらない

スクリプトのメニュー→名付けて保存
において別の名前をつけてもタイトルバーのファイル名が変わらない。スクリプト窓を終了させて,最近使ったファイルにはちゃんと新しい名前があるし,保存されている。

これはタイトルバーだけのバグなのだろうか?
メニューへ トップへ (10)へ

SPSS ときど記(8) 2000/4/17

因子分析 指数表現を止めるスクリプト

因子分析などの表においてSPSSは指数表現を既定値としている。これは止めてもらいたい。指数表現をする意味はまったくないだろう。表1のように指数表現が入っていると,表2に比べて見にくい。もちろん,SPSSは一定以下の因子負荷量の数値出力を止めることもできるので,出力しないという手もある。(因子分析オプションの抑制する最小の絶対値を指定)

そのほかの表などでも指数表現を止めたいときがある。

表1 指数表現を含むピボットテーブル例
回転後の因子行列
因子
1234
バーゲンの利用7.624E-028.766E-02.738-.139
ついでに買物.1843.499E-023.748E-027.316E-02
衝動買い.264-2.877E-02.211-.401

表2 指数表現をしないピボットテーブル例
回転後の因子行列
因子
1234
バーゲンの利用 .076.088.738-.139
ついでに買物 .184.035.037.073
衝動買い .264-.029.211-.401

さて,表2のように指数表現をしないようにするには,どうしたらよいか。どうも3つの方法があるようだ。

(1)ピボットテーブルごとに

右クリック→SPSSピボットテーブルオブジェクト→編集
(これはピボットテーブルをダブルクリックでもいい)

右クリック→テーブルの選択→右クリック→セルプロパティ→(値)→(カテゴリ)数値→(書式)#.#
をクリックしていく。
この方法だと出力ごとにいちいちこの操作をしないといけない。

昔は既定値を指定するればできたはずだが,どうも既定値にはならないようだ。

追記 2000/4/18
(b)ピボットテーブルごとの方法にスクリプトを使用する手もある。
問題のピボットテーブルをアクティブにしておく。 SPSSフォルダの下にあるscripts フォルダの中にある Undo Scientific Notation.sbs を走らせる。(ファイル→スクリプト→Undo Scientific Notation.sbs を選ぶ→ f5 またはスクリプト窓のスクリプト→実行)

(2)spo に出力されたピボットテーブル全部を処理するスクリプト。

SPSS社のweb にある,Apply_Autofit.SBS を一部修正して使用する。ただし,このスクリプトはピボット出力後に走らせることになる。
http://www.spss.com/software/spss/scriptexchange/scripts/EditOutput/Apply_Autofit.SBS

にある次の行を
objPivotTable.Autofit
を次のように置き換える。
with:

Call UndoScientificNotation(objPivotTable, "#.#")


(3)Autoscript.sbs に変更を加える。

例えば,
「回転後の因子行列」の表の上で右クリック→オートスクリプトの作成/編集→
によって,オートスクリプト編集状態になります。
-------
Sub FactorAnalysis_Table_RotatedFactorMatrix_Create(objTable As Object, objOutputDoc As Object, lngIndex As Long)
'Autoscript
'Trigger Event: RotatedFactorMatrix Table Creation after running Factor Analysis procedure.

End Sub
----------------
このEnd Sub の上に
Call UndoScientificNotation(objTable, "#.#")
を入れてやります。

指数表現をしたくないテーブルに同様のことを繰り返します。最後に保存を忘れずに。
そして,因子分析をすると,指数表現を自動的に小数に変換してくれます。

これでうまくいったと,スクリプト窓を閉じます。そして因子分析をします。あら不思議,エラーのダイアログボックスがでて,うまくいきません。いろいろやっているうちにSPSSが致命的エラーを出してしまったので再起動させ,改めてSPSSを立ち上げ,因子分析をしたところ,おお,ちゃんと指数表現を小数表現に変えていますかなり遅いぞ。

この方法ではテーブルごとに指定しないといけないので,いろんなテーブルを使用する人には不便かな。(2),(3)を使い分ければそれなりに使えるであろう。

因子負荷量の場合,プレゼンテーションの場合,小数点以下2位までの表示にしたい。この場合は(3)のところで,次のようにするのだが,

With objTable
.SelectTable
.NumericFormat("#.#", 2)
.ClearSelection
End With

因子番号のところも小数点第2位まで表示されちゃうぞ(;_;)。

最初のトラブルは何かSPSSに問題が起こっていたようだ。2回目のときにはAutoscript.sbs を書き換えて,保存したあと,スクリプトの窓を閉じてもちゃんと動きました。

メニューへ トップへ (9)へ

SPSS ときど記(7) 2000/4/14

因子分析 /print KMO AIC(MSA)

SPSS にはわけのわからない指標が出力されることがある。しかも,その指標がどういう意味をもつか調べることができない。SASなら参考文献がのっている場合が多いのだが,SPSSではマニュアルに参考文献が記載されていないことが多い。

そんな例の一つが因子分析のKMO(Kaiser-Meyer-Olkin)測度というものだ。さらにSPSS のいうところの MSA(Measure of Sampling Adequacy) 。MSA のほうは以前のバージョンと違って 少なくとも release 10.0 では/print のオプションからなくなっている。AIC(反イメージ共分散と反イメージ相関行列)を指定すると出力される。

先にいっておくと,KMOとMSA は現バージョンにおいてはリザルトコーチにその読みとり方を説明している。この点ではSPSSは大進歩しましたね。ただ,文献はまだ載っていない。

SPSSにおいて関連文献を調べるのは SPSS Statistical Algorithms. SPSS inc である。SPSS7.5用のアルゴリズムはPDF ファイルの形で公表されているが,個々のアルゴリズムのファイルの文献は人名だけである。ただしくは 同じ処にあるreference をダウンロードする。

そこでは,Dziuban and Shirkey(1974)への言及がある。

 さて改めて語ると,MSA(the measure of sampling adequacy。spss ではKMO(Kaiser-Meyer-Olkin) measure ) という指標がある。SPSSやSASで出力される。全体の指標と個別の変数の指標があるが,SPSSでは全体の指標をKMO と言ってしまっている。Kaiser の論文でも全体の指標も MSA と言っているのでMSA を使用する方がいいだろう。PsycINFO でさがすには《sampling adequacy》がいいようだ。

 次の表がだいたいの目安である(Kaiser and Rice, 1974)。これは全体指標でも個別変数指標でも同じ。
----------------------
.90以上 marvelous
.80以上 meritorious
.70以上 middling
.60以上 mediocre
.50以上 miserable
.50未満 unacceptable
-----------------------

SPSS(1999)のリザルトコーチは次のようになっている。
因子分析の KMO と Bartlett の検定
Kaiser-Meyer-Olkin の標本妥当性の測度は、共通分散である (すなわち基本の因子が原因と見られる) 変数の変動の比率を示す統計量です。

高い値 (1.0 に近い) は一般に、データに対して因子分析が役立つ可能性のあることを示しています。値が .50 未満であれば、因子分析の結果はあまり役立たないと思われます。
------------
因子分析の反イメージ行列
反イメージ相関行列の対角線上の各値は、それぞれの項目の標本妥当性の測度 (MSA) を示します。

.5 よりも小さい値の場合には、変数が他の変数の構造では適合しないものと思われます。分析からそのような変数を削除してみてください。
SAS(1988,p486)の説明では

Kaiser's Measure of Sampling Adequacy(Kaiser 1970; Kaiser and Rice 1974; Cerny and Kaiser 1977)。MSA を指定すれば,全体と各変数について出力される。MSAは,偏相関が通常の相関に関連する度合を要約するものである。この値が0.8以上であれば,分析結果は良好と考えられる。0.5以下であれば,問題となる変数を取り除いたり,問題となる変数に関連する別の変数を追加したりして修正したりする必要がある。
とあり,やはり0.50を問題にしている。 0.50 以上でないといけないと明確に示したのはShirkey and Dzubian(1976) のようですね。いくつかのデータにMSAを使ってみた 0.10 刻みに考えるほど鋭い指標ではないようだ。SPSSやSASの言っているように 0.50 以下の場合にはチェックをいれるという程度でいいようです。0.60未満の場合にはちょっとは考えないといけないのかな?

今年(2000年)の日心のワークショップにおいて狩野さん・原田さん(大阪大学)のSEFA(Stepwise Exploratory Factor Analysis)が悪い変数の指標をだすことになるらしい。その発展によって,MSA は全く無用の長物になるかもしれませんね。すでに無用の長物かな。

SASのMSAに対する訳語は「Kaiserの標本抽出妥当性測定値」(p475)となっている。SPSSは上にあるように「標本妥当性の測度」である。なんでこう一々違ってるの?

因子分析関係の本ではこの指標について管見では言及されていない。多変量解析関係のHow to もの系には載っていることがある。例えば,Sharma(1996,p116)では KMO(Kaiser-Meyer-Olkin) measure として言及している。また,Hair et al.(1998, p99-100)でも指標の使い方など説明しているが,ここでは MSA と言及している。論文においてもそれほど使用はないようであるが,PsychINFO を検索したところ,少しは使われている。

2000/4/17 追記
Kaiser(1981)によると,MSAには3つのバージョンがある。最初のはKaiser(1970)であり,2つ目が Kaiser and Rice(1974) である。3つ目が Kaiser(1981)でこれは Kaiser(1970)の平方根である。3つ目はルートの中がマイナスになるときには,unacceptable と表示することになっている。

一般に使用されているのは2番目のMSAである。これはShirkey and Dzubian(1976) によって検討がされていて,乱数の相関行列である場合には 0.5 になる。 0.5未満ということは乱数の相関行列よりよくないものとなっている。どういうもんだろ。このとき,1番目のMSAは 0となる。当然3番目のMSAも0となる。3番目のMSAは信頼性係数となっている。

2番目のMSAのその他の性質については Dzubian and Shirkey(1979)が検討している。変数の数が多くなると MSAがよくなることが分かっている。
《引用文献》
Cerny,B.A. and Kaiser,H.F, 1977 A study of a measure of sampling adequacy for factor-analytic correlation matrices. Multivariate Behavioral Research, 12, 43-47.
Dziuban, C. D., and Shirkey, E. C. (1974). When is a correlation matrix appropriate for factor analysis? Psychological Bulletin, 81, 358-61.
Dziuban, C. D., Shirkey, E. C., and Peeples, T.O. (1979). An investigation of some distributional characteristics of the measure of sampling adequacy. Educational and Psychological Measurement, 39, 543-549.
Hair.J.F.Jr., Anderson,R.E.,Tatham.R.L., and Black,W.C. (1998). Multivariate data analysis (5th ed.). Prentice Hall.
Kaiser,H.F.(1970). A second generation little Jiffy. Psychometrika,35,401-15.
Kaiser,H.F.(1981). A revised measure of sampling adequacy for factor-analytic data matrices. Educational and Psychological Measrement, 41, 379-381.
Kaiser and Rise(1974). Little Jiffy Mark IV. Educational and Psychological Measurement, 34(Spring),111-117.
Meyer, E. P., Kaiser, H. F.,Cerny, B. A., and Green, B. F.(1977). MSA for a special Spearman matrix. Psychometrika, 42, 153-156.
SAS(1988).SAS/STAT
ユーザーズガイド Release 6.03 Edition. SAS出版局
Sharma, S. (1996). Applied multivariate techniques. Wiley.
Shirkey, E.C. and Dziuban, C.D. (1976). A note on som sampling characteristics of the measure of sampling adequacy. Multivariate Behavioral Research, 11, 125-126.
SPSS for Windows, Rel. 10.0.5. (1999). Chicago: SPSS Inc.
メニューへ トップへ (8)へ


SPSS ときど記(6) 2000/4/12

マクロ loop の上限に引っかかる

SPSSのマクロをつくっていて,しばしばやる問題は,loop の上限を気にせずつくったら,実際の使用のときにloop の上限に引っかかってしまうということだ。それも警告しないほうが普通なので,注意が必要だ。例えば,数量化2類や3類のマクロはサンプルの数がloop の上限になるので,サンプル数以上のloop 数を設定する必要がある。(loop数の上限の既定値は 40)

set mxloops=100000.
のように set mxloops= の設定をしてやればいい。

今回ひっかかったのが,chisize.sps である。
SPSSのメーリングリストに次の質問があった。

>I need to set up a control group that will be used as a benchmark to measure
>an ad campaign effect. From previous experience, the response rate was
>around 3-4%, how should I determine the size of the control so that a .1%
>difference between the control and the targeted groups could be picked up
>with 99% confidence?

状況に不明な点がいくつかあるが, 3-4 %程度の反応率の群とあるキャンペーンをやったときに,0.1% の効果があったときにそれを有意水準 0.01 で判定したいということだろう。仮定があきらかでないが,前者を対照群,後者を実験群として同一サンプル数とるとする。このとき3%よりも4%のきもっとも厳しい条件となるので,対照群の期待値をとりあえず4.0%と設定しよう。4.0% と4.1% で1%水準で有意差があることを検定力=0.8 で言えるようにサンプル数を設定する。

マクロ chisize.sps は次の設定をすればいい。
chisize rk=2 2/value=4 96 4.1 95.9 /row=0/alpha=0.01.

で結果,サンプル数 4000 という結果がでた。 4000 という数字がでるときはかなり怪しい。そこで,
set mxloops=1000000.
という一文を入れると,
proportin (row)
.500 .500

          minimum sample size for chi-square test

 effect    alpha   desired  acquired   degree   minimum
  size    level    power    power     of   sample
   (w)                     freedom    size
                                total

  .003    .010    .800    .800      1   1815400


という結果がでた。つまり,サンプル数は1,815,400いる。一方で約90万強という非現実的な数字である。

効果の大きさ W=0.003 というきわめて小さなものを検出しようとしているのに無理がある。Cohen の基準では W=0.10 で小さいである。

set mxloops= は必須ですね。

私の提供しているマクロでも,
set mxloops= が入っていなかったり,その数値が小さければ大きな数値を入れてください。
メニューへ トップへ (7)へ


SPSS ときど記(5) 2000/4/9

因子分析 因子負荷量を入力しての分析

 狩野(1998, p16)に「因子負荷行列の推定値が得られると,因子回転はSASで行うのが便利である.」とある。う〜む。これじゃSPSSだと不便なようである。またそっかちな人なら,SPSSだと因子負荷量を入力として因子分析の回転ができないと考えてしまいそうです。

初期解の因子負荷行列の出力は次のような統計命令となる。
FACTOR
/VARIABLES t30001 t30002 t30003 t30004 t30005 t30006 t30007 t30008 t30009
t30010 t30011
/matrix out(fac=*)
/PRINT INITIAL EXTRACTION ROTATION
/CRITERIA MINEIGEN(1) ITERATE(25)
/EXTRACTION ML
/CRITERIA ITERATE(25)
/ROTATION VARIMAX .
----------------------------
最低必要な指定であれば,
FACTOR
/VARIABLES t30001 to t30011
/matrix out(fac=*)
/EXTRACTION ML.
だけである。要するにmatrix out(fac=*) において因子負荷量をデータエディタに出力している。'*' をファイル名にすればファイルに出力できる。
ROWTYPE_FACTOR_T30001T30002T30003T30004T30005T30006T30007T30008T30009T30010T30011
FACTOR1.5307850.5805556.6113453.5829824.4435268.5221882.5495793.5350029.5374252.6191978.7451040
FACTOR2.1028252.2397160.2495726.0823491.0037247-.4096172-.5348465-.1857385.1047288.2933896.0971902

上のようにデータエディタにデータが出力される。このようにデータエディタにデータがあれば,次の命令で因子負荷量から因子分析の回転ができる。

FACTOR
/matrix in(fac=*)
/CRITERIA ITERATE(25)
/ROTATION VARIMAX.

ここで注意しないといけないのは,ROWTYPE_ という変数に FACTOR という文字が入っていること,FACTOR_ という変数に因子番号が入っていることである。また,余計な変数が入っていないこと。つまり,ROWTYPE_,FACTOR_ という変数以外は因子分析につかった変数とされる。

また,ファイルから因子負荷量を入力する場合もget を使って,その上と同じようにデータエディタにデータが入っていることである。

因子負荷量は通常上の表の転置行列である。この場合,flip 命令を使えば,簡単に転置できる。

またはメニューで変数とケースを入れ換えるには
[データ] → [行と列の入れ換え]

上の表のデータのexcel ファイル(変数名つき)
誤解がないように付け加えておくと,このデータは狩野(1998)のデータではありません。サンプルとして示したデータです。読み込んで実験してみてください。
上のシンタックスをシンタックス窓にコピーして走らせてみる。

《引用文献》
狩野裕(1998). タレント好感度データの分析 豊田秀樹編『共分散構造分析[事例編]−構造方程式モデリング−』北大路書房

メニューへ トップへ (6)へ

SPSS ときど記(4) 2000/4/8

因子分析 重みなし最小2乗→重み付け最小2乗

SPSS10.0.5J が来たときに最初に気づいたミス。

因子分析の因子抽出法において「重みづけのない最小2乗法」を選択すると,「重みなし最小2乗法」出力の途中で「重み付け最小2乗法」で処理したことになっている。CATPCAでも訳語が変わってしまうことを指摘しているが,こっちはまったく別の方法を適用したことになる。SPSSの出力は本来そのままレポートできることを目指したものだと思われるが,そのままレポートに使うのは危険であることを示すものだ。

なお,共通性,説明された分散の合計の表では
>因子抽出法: 重みなし最小二乗法

因子行列,回転後の因子行列,因子変換行列の表では
>因子抽出法: 重み付け最小2乗
となっている。

重み付最小2乗法は「一般化最小2乗法」のことである(芝祐順ほか,1984,p8)。「重み付」は「おもみつき」と読むのではないかな? (狩野裕,1997, p135 では「重みつき最小2乗法」とある。ほかにも「重みつき」と書いてある例がある)

とにかく出力の途中で因子抽出法が「重みなし最小2乗法」から「一般化最小2乗法」に変わっていることになる。

ヘルプによると因子抽出法は次の7つである。
[方法] 因子抽出の方法を指定できます。使用できる方法は、主成分分析、重み付けのない最小 2 乗法、一般化最小 2 乗法、最尤法、主因子法、アルファ因子法、イメージ因子法です。
ここでも同じ英語なのにメニューやヘルプと出力が変わっていたのですね。


unweighted least squares methods の訳も出力にある「重みなし」最小2乗法のほうがポピュラーなのでは。柳井・高根(1985),柳井ほか(1990),田中・垂水(1995), 豊田(1992)では「重みなし」である。そのほかの訳語の例としては,服部・海保(1996)の「重みづけをしない」がある。

訳語を統一してもらいたいですね。もしくは英語出力のオプションを付けて欲しい。
《引用文献》
服部環・海保博之『Q&A心理データ解析』福村出版, 1996
狩野裕『AMOS,EQS,LISRELによるグラフィカル多変量解析』現代数学社,1997
芝祐順ほか『統計学辞典』新曜社, 1984
田中豊・垂水共之編『Windows版 統計解析ハンドブック多変量解析』共立出版, 1995
豊田秀樹『SASによる共分散構造分析』東京大学出版会, 1992
柳井晴夫・繁桝算男・前川真一・市川雅教『因子分析法』朝倉書店, 1990
柳井晴夫・高根芳雄『新版多変量解析法』朝倉書店, 1985
メニューへ トップへ (5)へ

SPSS ときど記(3) 2000/4/7

SPSSの個々のヘルプを見る

SPSSのヘルプを開くと,項目が多すぎて見たい項目やそれに関連した項目がどの程度あるかよくわからないことがあります。こんなとき,個別のヘルプをSPSSのフォルダから別のフォルダにコピーして,そのヘルプファイルをダブルクリックすると,そのヘルプの項目だけを見ることができます。

例えば exceldac.hlp を他のフォルダにコピーし,そこでダブルクリックするとExcel ファイルのヘルプを読むことができます。キーワード検索と手順,関連項目を使うことができます。categories のように日本語マニュアル(と英語マニュアル)がないときには,ヘルプだけで結構たすかります。

私のところにあるヘルプファイルをリストします。なんだろと思うようなヘルプもあるでしょ。
distut.hlp
exceldac.hlp
odbcwzrd.hlp
spssadv.hlp
spsscat.hlp
spssconj.hlp
spssdbca.hlp
spssnewg.hlp  interactive graphic
spssole.hlp  oleオートメーション処理(SPSS の OLE オートメーション処理オブジェクトに階層図)
spssout.hlp →これは統計の結果の見方(リザルト コーチ)もあるので要チェック
spsspro.hlp
spssprod.hlp
spssremo.hlp
spsstut.hlp
spsswin.hlp
textwzrd.hlp

spsswin.hlp を入れなければ個別のヘルプになりました。ちょっと見たいときはspsswin.hlp の名前を変えるだけでいいかな。あとにゴミ(*.gid ファイル)が残るので注意が必要。

ヘルプは用語の解説もあったりして,読んでみると意外と発見があります。
メニューへ トップへ (4)へ

SPSS ときど記(2) 2000/3/29〜2000/4/7

CATPCA(categories)

(1)上位版
CATPCA(CATegorical Principal Component Analysis カテゴリ主成分分析と訳している) は release 10 において期待していたものであるが,期待とは違っていたがそれなりに使えるものである。基本的には PRINCALSの上位版である。PRINCALSにいくつかオプションと出力が付け加わって使い勝手がよくなっている。SPSSの戦略らしいが,上位版がでて意味がなくなっても前の統計命令も残している。たとえは,対応分析の ANACOR は上位版 CORRESPONDENCE を追加しても残っている。そういえばHOMALS の上位版がPRINCALS だが,最初からこの2つがあった。

(2)もともとついていないHELP とマニュアル
Categories は 10.0 において2つの統計命令が追加されたのに10.0 のマニュアルがなかった。米国では1999年の10月か11月にでていたのに2000年2月にSPSSに尋ねたときにはまだマニュアルがないとのことであった。3月末に日本語版ができるということだったが,実際3月27日に英語版と日本語版のマニュアルが着いた。例によって日本語版は英語販のうち統計メニューの使い方だけを日本語にしたものだ。

ちなみにcategories のhelp もオリジナルのCD-ROMのものは使えなかった。2月に電話をして e-mail で送ってもらった。送ってもらった版は日本語であった。日本語版が出たのは 2000年1月である。

わざわざインストールして確かめたら,CD-ROMに入っていたcategories の help は日本語版であった。しかし,なぜかキーワード検索できないものであった。

cd-rom をよく捜したら,pdf ファイルでcatpca.pdf というマニュアルがあった。(ただし,proxscal の説明はない。)それはメニューを操作するもので,日本語になったのはこの部分であった。同時につくっているていうのはこういうことなのか。

(3)リリースできる状態でなかったのにリリースを強行したのはなぜ?
ここまでひどい状態でだすかな。後述のようにバグがある。しかも,米国版の最初にでた spss 10.0.0版のBASICはバグの嵐だったようでspss-l というメーリングリストでもひどくたたかれていたし,すぐに改訂版もでた。このような状態でrelease 10.0 を出したのはなぜか。SPSS社の状況を邪推されてもしかたがないだろう。SPSS社のバージョンアップ商法は前からおかしいと思っていたが,今回の事件はSPSS社の窮状を語っているのか?

さらに追加すれば,Categories には宣伝していないが新たに追加されたPROXSCAL という統計命令がある。ALSCAL とほとんど同じ(例によって上位になる)だから宣伝する必要はなかったのかもしれないが,宣伝する必要もないものをなぜ追加したのだろうか?大疑問である。

(4)訳語の混乱
(a)degree の訳語がメニューと出力の一部とで違っている。
日本語のマニュアル 26頁にある。「尺度と重み付けの定義」ダイアログボックスでは,degree が「次数」訳されているが。出力の一部ではdegree は「度数」と訳されている。
「記述統計」および「数量化」の「テーブル」(/PRINT=LOADING QUANT)のところ
>最適尺度水準: スプライン順序 (度数 3、内側ノット 0)

おっと,出力の中で,「次数」と「度数」にわかれているほうがひどいか。まあ,分担によるのでしょうが,ちゃんと「次数」に統一できないとはね。

(b)grouping をグループと訳しているが布置である。
英語版 p26,日本語版26頁にある
Multiple nominal / 多重名義の説明
The only information in the observed variable that is preserved in the optimally scaled variable is the grouping of objects in categories.
(その訳)
観測された変数内の情報で最適尺度変数に保持されているのは,カテゴリ内のオブジェクトのグループだけである。
---------------------------------------
object は 「被験者や単位」と別に説明がある。categories は数量化3類のカテゴリーである。variable は 数量化3類のアイテムになる。
おっと。ここのところで,ちょっと指を離したら,4月7日になっていた。
ようするになんのことかまったくわからない。なんでかなといろいろ英文をみたらgrouping の訳が全く違う。ほかにもやっかいなところがあるのであまり関わりたくない文章だ。
オブジェクトというのがなんなのかよく分からないので訳しづらいのだが, variable が単数であり,数量化3類のアイテムであるであるから,ううむ。「観測された変数のなかで,最適尺度化された変数において保持されている唯一の情報は,カテゴリーとしてのオブジェクトの布置である。」というところでしょうか。つまり,各アイテムごとのカテゴリの布置情報は保持している。図中の各カテゴリ・ポイントのプロットを見ろということ。数量化3類のプロットと同じようになっている。

(5)既定値が既定値になっていない。スプライン変数の指定のバグ
スプラインの既定値といっているものが既定値になっていない。この問題は「スプライン順序」とか「スプライン名義」の場合におこる。
「内側ノット」は既定値 2 ということになっているが,どうも既定値は0 のようだ。さらに,メニューを使うとこの既定値は-1 になっている。さらに「次数」を変えても必ずしも思い通りになならい。また,「内側ノット」は変えても0になるようだ。
このあたりメカニズムがよくわからない。いろいろな変化があるようだが,思い通りにならない場合が普通のようである。

こういうこともあるので,スプライン変数にしないほうがいいのではないか。スプラインにするメリットはそれほどなさそうだ。おそらく見かけがすこしよくなるということだろうが,フィットが悪くなるというデメリットがあるので,まず試すのはスプラインでない普通の「順序」や「多重名義」(または名義)を使う方がよさそうである。

なお,「尺度の定義」で「次数」「内側ノット」を変更すると,「カテゴリ主成分」のメニュー上では変更するが,実際には上に述べたようなものできちんと変更されない。また,「尺度の定義」を開くたびに「内側ノット」は-1(これは0以上でなければならない) となり,変更を強要される。

明らかなバグである。既定値のスプライン順序で起こるところがおかしい。簡単なチェックで見つかるバグである。

書くのに疲れた。なお,テックラインにはだいたいのところが理解されたようで,いつ修正されるかわからないが,バグリストには載ったということである。なんという対応だろう。
まあ,1年に一回バージョンアップしてるのだから,そういうのも分かるけどね。

メニューへ トップへ (3)へ

SPSS ときど記(1) 2000/3/27


DO REPEAT の代理変数


SPSS の do repeat は便利な機能だが,ちょっと油断するととんでもない間違いを犯す。

次の2つのsyntax による結果の違いを予測できるだろうか?

(1)
data list free/x.
begin data
1
end data.
do repeat y=x,x,x.
compute yx=y*0.5.
write /y yx.
end repeat.
exec.

(2)
data list free/x.
begin data
1
end data.
do repeat y=x,x,x.
compute y=y*0.5.
compute yx=y.
write /y yx.
end repeat.
exec.

走らせてみれば分かるが,
(1)は
  1.00   .50
  1.00   .50
  1.00   .50

(2)は
  .50   .50
  .25   .25
  .13   .13

と(2)の場合は y の計算結果を持ち越す。

ついでに,
(3)
data list free/x.
begin data
1
end data.
do repeat y=1,1,1.
compute y=y*0.5.
compute yx=y*0.5.
write /y yx.
end repeat.
exec.

この場合はエラーがでる。

(4)
data list free/x.
begin data
1
end data.
do repeat y=1,1,1.
compute yx=y*0.5.
write /y yx.
end repeat.
exec.

この場合は正常に計算。
  .50
  .50
  .50

(3),(4)の違いは,do repeat の代理変数(ここでのy)は変数,定数の区別をしていることに起因している。つまり,(3)は yがマクロ定数なので,compute y=y*0.5.と定数に計算結果を入れることはできない。(4)ではy が定数なので出力されていない。こういうところでは文句をいわないようだ。

(5)
data list free/x.
begin data
1
end data.
do repeat y=x,1,x.
compute yx=y*0.5.
write /y yx.
end repeat.
exec.
と代理変数に変数,定数を混在させても答えをだす。
  1.00   .50
   .50
  1.00   .50

だけど,(3)に混在させると定数の場合にエラーになる。

ま,(3)〜(5)はマニュアルの範囲内のことであるが,
(1)(2)の違いはマニュアルに書いてあったかな? 単純な場合はすぐ気が付くが,長いシンタックスの場合,気づかないこともあるでしょう。

spss for windows release 10.0.5J での実験でした。

注意:このようになることは変数x を指定していることから当然である。これはバグではなく,変な使い方をするときには注意がいるということである。逆にこういう変なこともできるということ。

メニューへ トップへ (2)へ

堀 啓造ホームページへ