RCSでうまくいかないとき

グラフ

このブログでは、統計解析ソフトStataのプログラミングのTipsや便利コマンドを紹介しています.

Facebook groupでは、ちょっとした疑問や気づいたことなどを共有して貰うフォーラムになっています. ブログと合わせて個人の学習に役立てて貰えれば幸いです.

以前、非線形の関係を図で表現するRestricted cubic splines(RCS)をStataで実行するための方法を解説しました.

いろんな方から様々な「うまくいかない事例」に関するご相談を受けました.今回はそういったことを他の皆さんと共有するコーナーを用意してみました.

事例1.invalid name

これはあらゆるコマンドで共通することですが、変数名を間違えると無情にもこのようにはじかれますのでご注意ください.

今回のケースでは変数名”var3″となっているはずが、”var 3″と間にスペースを入れてしまったがために生じた悲劇です.一度このようなミスを犯すとなかなか気づくのが難しいものです.

また、全角スペースも気づきにくいです.あとは変数名やラベル名をGUIから入力したときに、スペースを最後に入れてしまったりするとそのスペースが変数名の一部と認識されてしまうことがあります.そんなときには一度変数の後ろのスペースを消してもう一度半角スペースを入れてみたりするとうまくいくことがありますのでお試しあれ!

事例2.value xxx of varname not observed (levelsof, xblcコマンド)

これはちょっと根が深い問題です.エクセルを読み込んだあととか、あるいはStataの上で計算したあとなどにlevelsofでその変数の中に含まれる数列を読み込ませると、9.1999999とか、5.90000001みたいな変な数字が出てきてしまう事があります.

これをround upしてきれいにしないとコマンドが走らないことがあります.(元の変数と少しでも一致しないと走らないということのようです)

このメカニズムがどうなっているかよくわからないのですが、とにかく桁をへらそうと頑張っていました.

一番簡単なのはround関数で整数にしてしまうことです.

しかし桁が小数点以下しかないような変数のときにはどうしたものかと思っているのですが…

ちなみに100倍してroundしたあとに100で割る、などトライしてみましたが、ダメでした.

事例3.if not allowed (xblcコマンド)

層別解析をしようと思ってifで区切ろうとしたところ、こんなコメントが帰ってきました.

これは簡単で、xblcの前に走らせたメインの回帰分析コマンドの中にif条件節をいれればよいです.

事例4.at() invalid — invalid numlist (levelsof, xblcコマンド)

これはlocalマクロを使うときも共通していますが、`lclmacro‘ 左側のアポストロフィの逆みたいな記号(`: backtick というみたいです)は日本のコンピューターキーボードでは@マークのところにあります.

shift + @ で出すことができます.これは海外のPCではキーボードの位置が違います.Pennsylvania大の疫学統計学の授業を受けていたときに記号の位置を知りたくて尋ねたところ、日本で買っていったPCだったため探すのに時間がかかった思い出があります.

右側はアポストロフィです.

事例5.生存時間分析で”[_cons] not found”と出てしまう

これはCox回帰を走らせた後に出てくるエラーです.

Cox回帰の結果はよく見ると他の回帰分析のときと違ってconstant termがありません

xblcコマンドを走らせるときには必ずX軸のどこかの値をreferenceに指定してやる(つまりそこが基準になるのでY=1のラインと交差する)必要があります.そうしないと表題のようなエラーがでてしまう、というわけです.

まとめ

こういったトラブルシューティングに関する質問が来るというのは、きちんと活用して頂いている証拠でもあると思います.もとの記事も少し修正を加えてみましたのでまたご確認頂ければ幸いです.

コメント

タイトルとURLをコピーしました