SPSS Win  勝手にFAQ  ファイル編



トラブル

[Q15] データの内容を書き換える処理をしていないのに,統計処理後に「変数ビュー」内の「測定」欄の「スケール」が勝手に「名義」に変わってしまい,ファイルが更新されたことになってしまう
[A] 本来,24種類以上の値を持つ数値型変数は「スケール」,それ未満の数値型は「名義」になるのがデフォルトの設定のはず(ヘルプ内のデータエディタ-変数ビュー-変数測定レベルの説明を参照)。
よって,5件法などの調査データを読み込んだ場合,項目得点などはデフォルトでは「名義」になるはず。
しかしテキストデータからDATA LISTシンタックスで読み込んだデータをそのままsave outfileシンタックスで保存すると,24未満の変数も「スケール」に設定されてしまう。
さらにこのデータで何か計算を行うと24未満の変数が自動的に「名義」に書き換えられ「データの書き換えが生じた」とみなされてしまう(ファイル名の前に*印がつく)。

[現象を発生させるシンタックス]
DATA LIST
FILE='test.txt' FIXED RECORDS=1 TABLE /v1 to v5 1-5
save outfile="testsv.sav".
EXECUTE.

データ
12345
22345
32345
42345

[現象の詳細]
  1. 上記シンタックスを実行直後,データエディタ画面上の「測定」欄は「名義」になっている。ファイル名はsave outfileで指定した(testsv.sav)が表示されているが*印はない。
  2. しかしそのまま閉じようとすると「データエディタの内容をtestsv.savに保存しますか?」と問い返される。
  3. 「はい」と答えて保存すると,再度開いた時testsv.savの変数は「名義」となっており,以後現象は発生しなくなる。
  4. 「いいえ」と答えて保存しなかった場合,再度開いた段階でtestsv.savの変数の「測定」はすべて「スケール」に設定されている。
  5. その状態で何らかの分析処理を行うと,データエディタ上のファイルの「測定」欄が「名義」に書き換えられ,ファイル名の前に*印がつく
  6. ファイルを保存すると以後は現象は発生しなくなる。
  7. 手動で「スケール」に変更した上で保存しても,現象は発生しない(「名義」にも書き換わらない)
おそらくsave outfileコマンドでファイルに保存された「測定」の設定と,その際にデータエディタ上に展開されている設定が一致していないのではないかと推測される

[回避法]
上記3.のように読み込んだ直後のデータエディタを保存してしまうか,7.のように手動で「スケール」に書き換えて保存する

<参考>多くの変数の測定レベルを一度に変更するシンタックス
VARIABLE LEVEL v1 to v5 (SCALE).
EXECUTE.

メニューからの貼り付け方法
・1つの変数を変更したあと,データ-変数プロパティの定義 で修正元,修正先すべての変数を「スキャンする変数」に指定し「続行」
・修正先の1つの変数をクリックしてから「別の変数から」
・修正元変数をクリックして「コピー」
・「測定」欄が正しいことを確認して「貼り付け」
シンタックスが生成されるので,残りの変数を追加して実行する

[以下の場合は発生しない]
[例:次のようにシンタックス内にデータを直接記述した場合は現象は発生しない]
DATA LIST/v1 to v5(5f1.0).
begin data
11111
22222
33333
44444
end data.
save outfile="testsv.sav".

なお計算上は「測定」欄が名義でも「型」欄が数値型になっていれば数値として正しく処理される
また測定欄をデフォルト設定することはできない


[Q] より新しいバージョンで出力した結果出力ファイルが,古いバージョンのSPSSで読めない
[A] 仕様。読めることもあるが,原則的には下位バージョンでの互換性は保たれていない。とくに16からは拡張子も変更され,まったく別の出力方式になっている

[Q 14以前] SPSS15で作成したデータファイル(sav形式)がSPSS14までの古いバージョンのSPSSで読めない
[A] 7.5以降14まではほぼ下位バージョンでも開けましたが,15では内部の仕様変更があったのかもしれません。開ける場合もありますが,ダメなこともあります。save outfileシンタックスで作成したものでも同様です。しかしSPSS15に附属のCommand Syntax Reference p1583には
「VERSIONサブコマンドを指定しない場合,数値を指定しない場合はデフォルトの3が適用される,この場合,作成されたファイルは7.5よりも前のバージョンでは読むことができない(原文は英文)」と記されています。記述に従えば/VERSION=3が適用された場合,7.5〜14までのSPSSでは読めるはずです。このあたりはCommand Syntax Referenceの記述の誤りかもしれません。
 複数のバージョンの利用者間でデータをやりとりする時は,テキスト(CSV)やExcelなどの形式にした方が安全。

[AMOS7] SPSS14までのバージョンで作成したデータファイル(sav形式)がAMOS7で読めない
[A] 古いバージョンのSPSSには対応していないようです。一時ファイルに保存できない旨を示すエラーが出たり,「オブジェクト参照がオブジェクトインスタンスに設定されていません」などというエラーが出て止まってしまうことがあります。他の形式(Excelなど)にファイルを変換すれば読めます。
確認されたエラーの例(SPSS11.5で作成したsavファイルを読ませようとした結果)
(hogeの部分は環境やモデルなどによって異なる)
グループhogeのデータをファイルC:\Documents and Settings\...Local Settings\Temp\Amos Temp\processHoge\yyyda.tmpへ書き込み中,エラーが発生しました。

グループhogeに含まれる欠損値を確認中にエラーが発生しました。
テンポラリデータファイルを書き込み中にエラーが発生しました。

グループhogeに対する飽和モデルを適合中にエラーが発生しました。
カイ2乗統計量を計算することができません。
テンポラリデータファイルを書き込み中にエラーが発生しました。

グループhogeに対する独立モデルを適合中にエラーが発生しました。
’ベースラインモデル’に必要とされる測度を計算することができません。
テンポラリデータファイルを書き込み中にエラーが発生しました。


[Q 7.5 TO 9.0] Excel形式で保存してあるデータファイルがSPSSで読み込めない
[A] SPSS9.0まではExcel Ver4のワークシート形式までしか対応していない。よってExcel上で[ファイル]-[名前を付けて保存]で[ファイルの種類]欄を[Microsfot Excel4.0ワークシート(*.xls)]にしなければならない。(ちなみに[Microsfot Excel4.0ブック(*.xlw)]ではだめ)。
その上でSPSSで[ファイル]-[開く]で[ファイルの種類]欄を[Excel(*.xls)]に指定して開く。
(たぶん,5.0以降は*.xlsのファイルでブック形式となったため,複数のワークシートが1つのファイルに含まれてしまい対応できないのではないか?)

[Q 7.5/8.0] Excel4形式のファイルをSPSSで読み込むと,英数文字ANKの変数名しか使われていなくても,次のような警告がでる

Warning # 6465
ワークシートにサポートされない文字グループがあります。
特殊文字はおそらく正確に変換されません。

[A] SPSSが過剰反応した結果であり,無視して構わない(?!)そうです ちなみに,8.0Jからは日本語変数名がサポートされています。

[Q 8.0] 出力ナビゲータ(*.SPO)でテキスト部分を編集後,印刷プレビューしてから,この出力を保存しようとしたら,「ドキュメントの保存に失敗しました」と表示され保存できなくなってしう。
[A] Windows95のバージョンを4.50.950から「サービスパック1」で4.50.950aにアップグレードしたところ解決しました(NEC PC9821Xa13の場合)。
(7.5では発生しないトラブルだったのですが,何が変わったのか謎です)
※これは本当に分からなくて苦労しました。サポートでも全く再現出来ないとのことで,両方で頭抱えてました(^^;
[Q]一変数のテキストデータの読み込みをしたところ以下のエラーになってしまいその後再度読み込もうとしても「データ入力ファイルを読み込めません」となってしまう。さらにSPSSを終了すると再度起動できなくなる。
>Error # 4096. Command name: EXECUTE
>常設辞書が定義されていません。上記の変数変換でアクセスされる変数が定義
>されていません。
>This command not executed.

[A]一変数データで,ファイル先頭に変数名を含むデータで次の操作をすると発生する
テキストインポートウィザードのステップ2/6で「元データの形式」を「自由書式」,ファイルの先頭に変数名を含んでいますか?に「はい」,ステップ4/6で「変数間に私用する区切り記号」に何も指定しないとこのエラーになる
正しくは,ステップ2/6で「固定書式」を選び,(ファイル先頭に..は「はい」のまま) ステップ4/6で変数の分割点を指定せず(左端に↑印が一つだけある状態)で次へ進む。

※「自由書式」「固定書式」ともにステップ6/6(最終ステップ)での「次へ」ボタンを押しても何も起こらない(ダミーボタン?)。最終ステップを終えるには「完了」ボタンを押す。

ヒント

[Q] HALBAU形式のテキストファイルを読み込むのによい方法は?
[A] Excel4形式にいったん保存するのが一番やりやすい。
「ファイル-ASCIIデータの読み込み」があるが自由書式-カンマまたはスペース の場合,変数名を一つ一つ指定しないとならない。「固定書式」ではさらに,各変数ごとでのカラム位置を書かなくてはならない(一気に指定できないし,ファイル側に変数をあらかじめ置いておくこともできない)ので,大変。
[Q] 固定長テキストファイルを読み込むのによい方法は?
[A] コマンドシンタックスで,Fortran様式のフォーマットで一気に読み込むのがコツ!

SPSS9からはファイル-テキストデータの読み込み でテキストインポートウィザードが使えるので,比較的容易に読み込める
[例]
1行目:番号,年齢,50変数(a1〜a50)
2行目:30変数(b1〜b30) の場合

SET
BLANKS=SYSMIS
UNDEFINED=WARN.
DATA LIST
FILE='d:\mydata.dat' FIXED RECORDS=2 TABLE /
no,age,a1 to a50,b1 to b30
(F4.0,1X,F2.0,1X,50F2.0/30F2.0) .
EXECUTE.
******↑ここまでで読み込みは完了する*******
******↓ラベルまで設定してしまうと後が楽***
VARIABLE LABELS
no '番号'/ age '年齢'/.
EXECUTE.
******↓さらに欠損値が異なるコードの場合の処理もしてしまう方がよい***
******ここでは欠損値が-1となっていたのをすべてシステム欠損値に変換***
RECODE
no,age,a1 to a50,b1 to b30
(-1=SYSMIS) .
EXECUTE .


[Q] SPSSファイルを固定長テキストファイルに変換保存したい
[A] ファイル-名前を付けて保存画面で,[ファイルの種類]をASCII固定長ファイルにする
ただし,システム欠損値は空白として保存されてしまうので,前もってSPSS内でに別の値を与えておく方がよい。また変数間は区切れなく保存されてしまう。変数間に区切りを入れたいときはコマンドシンタックスでFORTRAN形式のフォーマットなどを使う

[Q] 計算結果の出力内容をテキストファイルにしたい
[A] FILE-エキスポートを用いる。 デフォルトでは「ファイルの種類」がHTMLファイルで出力されてしまうので,必ずテキストファイルに指定を変更する必要がある
またオプションで区切り文字をデフォルト(-|の罫線)のままにしておくと,うるさい
(基本的には出力ナビゲータをそのままオブジェクトとして他のアプリケーションで使えるというのが7.5以降のご自慢の機能なので,テキスト出力はオマケに近いらしい。けどナビゲータは日本語文字が欠けたり出力が隠れてしまったりするし,出力情報を取捨選択して使うためにはテキストファイル出力の方が遙かに便利と,個人的には思う)

[Q] 出力をエキスポートしたときセパレータ(罫線テキスト)をなくしたい
[A] エキスポート画面のオプションで「セパレータ」にスペースを入れる(何も入れないと自動的に|や-が挿入されてしまう)


[Q] キー変数に欠損値がある場合のファイル結合(変数追加)の際の注意
[A] [データ]-[ファイルの結合]-[変数の追加] では「キー変数によるケースの結合」が出来る。キー変数として指定した変数値が一致したケースについて,変数を結合してくれる。しかし,キー変数に複数ケースの欠損値が含まれていると次のようなエラーになり正しく結合されない。
>ファイルの中にキーが重複して使われています。表示されたファイル上におい て、BY
>変数はそれぞれのケースを個別なものとしては認識できません。結果を
>注意深く調べてください。

複数の欠損値が「同一値」と見なされてしまい,ケースを識別できないために発生する
システム欠損値の替わりにケースによって異なるダミー値(9991,9992,9993...など)を入れておくことで回避できる。
(同じ値を入れても,識別できないので,必ずそれぞれ違う値を入れる)

戻る| トップへ