統計ソフトSTATAの部屋

このエントリーをはてなブックマークに追加
1ごろ
132人目の素数さん :2010/02/04(木) 14:29:14
統計ソフト STATAを使って統計解析をするスレです。
日本語の良いソースが少ないので盛り上げましょう。

立てたは良いが、落ちてしまったので再開です。
2ごろ:2010/03/03(水) 21:26:03
ああ、無事立てられました。
今度は消えないように保守します。
ちょっと質問したいこともありましたし。
3ごろ:2010/03/04(木) 04:29:59
まずは、STATAに有用な情報のリンク集を作っていきたいと思います。
ここにはとりあえず羅列して、どこかpukiwikiにでもまとめたいと思います。
4132人目の素数さん:2010/03/04(木) 04:54:59
4
5ごろ:2010/03/04(木) 09:46:26
4さん、ありがとうございます。
取り敢えず、沈まないように
有名所のリンクをコピペします。
外国語ですが。
http://www.ats.ucla.edu/stat/stata/
6132人目の素数さん:2010/03/04(木) 15:28:35
6
7ごろ:2010/03/05(金) 01:09:43
羅列
メーリングリスト
[email protected]
その他
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/
上と一緒かな
日本語のもそのうち
8ごろ:2010/03/05(金) 17:49:36
有名だと思いますが、
日本語のPDFでは秀逸。
基本はほぼ網羅されている!?
http://park1.wakwak.com/~mt_tosiyuki/stata-manual.pdf
9ごろ:2010/03/07(日) 16:04:57
保守
10ごろ:2010/03/08(月) 05:28:23
ブログ
ヒントはいろいろある
ttp://homepage.seesaa.net/category/386689-1.html
11ごろ:2010/03/09(火) 04:26:05
保守2
12132人目の素数さん:2010/03/09(火) 13:21:39
なんという悲しいスレ
13ごろ:2010/03/09(火) 14:54:30
>>12
書き込んでくれてありがとう。
そのうちStataユーザーが自由に集える場所となることを目指します。
時間ができたらもう少し有用な情報、まとめをUPします。
14132人目の素数さん:2010/03/10(水) 06:24:25
>>2
質問向き非過疎縁者スレを、紹介しておきますね。
統計学なんでもスレッド11
http://science6.2ch.net/test/read.cgi/math/1258355122/
統計・解析ソフトについて
http://pc11.2ch.net/test/read.cgi/bsoft/1012298063/
15ごろ:2010/03/10(水) 09:54:14
>>14
ありがとうございます。
なんでもスレは現在、積極参加中です。
二番目のは知らなかったんで参加します。

私はRも使いますが、
Rを使って分かるStataの良さも実感します。

今日は気分がいいので、私のグラフ描画コマンドテンプレート(Work in Progress)をハットきます。

twoway ///
(scatter var1 var2 if var3==1, mcolor(navy) msize(medium) msymbol(circle_hollow)) ///
(scatter var1 var2 if var3==0, mcolor(pink) msize(medium)) ///
(lowess var1 var2 if var3==1, lcolor(navy) msymbol(circle) ) ///
(lowess var1 var2 if var3==0, lcolor(pink) msymbol(circle) ) ///
, ///
xsc(r(0 10) titleg(10)) ///
ysc(r(0 10)) ///
ytitle(var1 (mg/dl), size(vlarge)) ///
xtitle(var2 (day), size(vlarge)) ///
/*title(graph title, size(vlarge)) */ ///
title(,size(vlarge)) ///
text(9 9 " adjusted p=0.001*", size(vlarge)) ///
legend( pos(5) ring(0) col(1) order(1 "lower var3" 2 "higher var3" ) ///
/*cutoff: median (10 ug/dL)*/ ///
/*legend( pos(6) ring(0) col(1) order(3 "var3 =< 10" 4 "var3 > 10" "10 is a median of this group") */ ///
region(fcolor(white))) ///
/*caption("* Model adjusted for var4, var5, and var6", size (large)) */ ///
graphregion(fcolor(white) lcolor(none) ifcolor(none) ilcolor(none)) ///
name(mygraph, replace)
16ごろ:2010/03/10(水) 15:44:36
http://www.kagitaku.com/
ここも有名ですよね
17ごろ:2010/03/11(木) 02:50:45
30まで生き延びれば安心していいんですよね。
18132人目の素数さん:2010/03/11(木) 12:01:15
どこまで伸ばそうが
人気がないスレはただひっそりと落ちて行くだけ
19ごろ:2010/03/12(金) 02:42:01
>>18
なんか寂しいですね。
でも書き込んでくれてありがとう。
20ごろ:2010/03/12(金) 11:02:38
doファイルで良く使う手
local i=1
while `i' <= 10{
gen newvar`i'=.
local i = `i' + 1
}
これでnewvar1からnewvar10まで作れる
ちなみにnewvar1…10を一度に表すのは
newvar*
当たり前すぎてつまらない!?

企画1:あなたのdoファイルテンプレートを教えて下さいというのは?
21ごろ:2010/03/13(土) 07:31:43
私のStataの使い方
私は完全にDoファイル命ですね。
logファイルも一応出力しますが、99%は見ていません。
理由はDoファイルとメイン画面でことたりることと、
Macの通常のエディタでlogファイルが開けないことですね。
結果はset more off にしているのでどんどん流れてしまいますが、
見たい結果の直後にstopと書くことでエラーが起きてとまります。
そこで結果をメインモニタで確認します。
結果を記録したいときには、Doファイルに結果をコピペしてコメントアウトしています。
22ごろ:2010/03/14(日) 08:45:39
gen newvar=mean(var)
は駄目
egen newvar=mean(var)
23ごろ:2010/03/14(日) 17:52:07
Stataのコメントアウト法
どこでも使えるのが
/*この中がコメントアウトされる*/
行頭で//これ以降
行頭で*これ以降
24132人目の素数さん:2010/03/14(日) 18:02:46
なあ、>>4>>6>>14以外は全部俺とお前の書き込みなんだよ
信じられるか?
しかも俺はSTATAなんて知らないときたもんだ
25ごろ:2010/03/14(日) 19:40:49
>>24
まぁなんだかんだ言って25ですよ。
Stataの社員も喜ぶでしょう。
26ごろ:2010/03/15(月) 09:56:46
今日のStata
about
と入力すると、シリアル番号と登録者の名前が出てくる。
27ごろ:2010/03/16(火) 11:08:30
http://rep2.moepla.net/wiki/index.php?Stata

いちおうwikiを作ってみました。
28ごろ:2010/03/19(金) 05:08:07
Stataでmixed modelしている方いますか?
29ごろ:2010/03/20(土) 06:50:48
明日で>>30かな
30ごろ:2010/03/21(日) 02:40:25
とりあえず目標の30達成
31ごろ:2010/03/23(火) 11:32:15
Stataのいいところ
変数名やコマンド名などを省略できる
変数名の一部+*で複数の変数名を指定できる。

Stataの嫌なところ
genとegenが区別されているところ、どうして一緒じゃ駄目なんだろう
またRと比べると柔軟性が弱い気がする
32ごろ:2010/03/26(金) 12:13:50
実はmixiにもSTATAコミュニティがある。
http://mixi.jp/view_community.pl?id=699582
33ごろ:2010/03/28(日) 17:10:52
Stata
34ごろ:2010/03/31(水) 08:31:31
Stataでデータ形式を変更するコマンド
例:WideからLong形式に
Wide形式
no vara1 vara2 vara3 varb1 varb2 varb3
01 12341 12342 12343 22341 22342 22343
02 ・・・

reshape long vara varb, i(no) j(day)

このコマンドで
no day _vara _varb
01 __1 12341 22341
01 __2 12342 22342
01 __3 12343 22343
02 __1 ・・・
というデータ形式に変更される。
35ごろ:2010/04/01(木) 10:23:03
今日勉強したこと
Stataで日付を扱う方法。
エクセルなどからそのまま日付を読み込むと
フォーマットがStringsになってしまいます。
以下の方法で解決!

例えば変数dateに2010/4/1と入っている場合
gen newdate=date(date,"YMD")
format newdate %td
変数名を変えたくなければ
drop date
rename newdate date

Happy April Fool!
36ごろ:2010/04/02(金) 07:59:49
あまり他の統計ソフトは知らないが、
一般的に製品版のいいところは、コマンドラインだけでなく、メニューなどからも
命令が出来るところかなと思っている。SPSSとかどうなんだろう。

で、Stataがいいのは、メニューなどから操作しても、メイン画面に
あたかもコマンドラインで操作したかのようにコマンドが出力される。

これが凄く良い。この出力されたコマンドをDoファイルに記録しておけば何度でも使えるし、
最初はメニューから操作しても、次はコマンドで操作できるようになるのでスキルアップする!

ただ、残念なのは、グラフの編集かな。
最近のバージョンからグラフをエクセルソフトみたいに後から色々いじれるようになったが、
いじった結果がメイン画面にコマンドとして出力されない。
一応、録画モードみたいなのがあって、操作そのものを保存できるみたいですが、
使いこなせていない。コマンドとして出てくれれば言うこと無いんだけどなぁ。
37ごろ:2010/04/10(土) 13:48:34
今学会中 日記上げ
38132人目の素数さん:2010/04/15(木) 15:23:21
期待あげ
39132人目の素数さん:2010/04/15(木) 15:31:37
SPSSのあこぎな商売のやり方に嫌気がさして手頃なStataに移りました。
いつのまにか随分GUIが充実してたんですね、使いやすくて驚きました。
SPSSはGUIがすごくよくできたソフトで入門に最適だけど、かゆいところに手が届き辛いソフトというのがこれまで使ってきた印象です。スクリプトに手をだしはじめるくらいに慣れたらstataに移っても違和感少ないかも。
40ごろ:2010/04/16(金) 10:10:26
>>39
いらっしゃいませ。
前にも書きましたが、最近特にStataが良いと思うのは、
入門者にも使い易いGUIを提供しつつ、GUIで実行しても、
CUI用のコマンドがちゃんと吐き出されるので、
初心者でも確実にスキルアップできるところですね。
41132人目の素数さん:2010/04/16(金) 16:44:22
>>40
レスどうもありがとうございます。
コマンドはき出すのはSPSSもそうですよ。
私はライセンス体系とfinditコマンドの便利さが
Stataでまず気に入っています。
42132人目の素数さん:2010/04/16(金) 17:20:55
もうひとつ、エイプリルフール楽しませていただきました。
ちょうど日付の変換必要でしたので助かりました。
デフォルトに日本でよくある日付形式も入れてくれたら
いいのですけど。
43ごろ:2010/04/16(金) 23:09:27
>>41
SPSSの情報ありがとうございます。
恥をかき続けなくて済みました。

Doファイルのテンプレートはどのように使っていますか?
まだやりたくてやっていないのは、
StataをEmacsから操作するようにすること。
DoファイルエディタをEmacsで操作できるようにすればほぼ目的は達成しそうなんですが。
44132人目の素数さん:2010/04/17(土) 11:22:19
>>43
doファイルエディタでコメント入れると日本語が化けてしまうので
使っていません。(日本語フォントセット指定しているのですが)
メモ帳でtxtファイルにちまちま残しておいて、使うときはコピペしています。

SPSSは入門にいいですよ。基本GUIなのにスクリプトも使えますし
基本画面がエクセル風でとっつきやすいですから。
ただ、何かと金を取ること、ライセンス移動が大変なこと、
時々不安定になること、重いこと、細かい設定がしにくいこと
から、慣れてくると使いにくさを感じるようになりました。
それでstataに移った次第です。
45132人目の素数さん:2010/04/17(土) 11:31:17
>>43
文字型変数を数字型に変換するのはencode使うと思いますが、
このとき順番を指定して変換するにはどうやっていますか?
(a,b,c>1,2,3でなく、a,b,c>2,1,3など)
基本的なことで恐縮ですが、ごろさんもしご存じなら教えてください。

ちまちまやればできるのですが、オプションで指定して
一発で変換できる方法はないものでしょうか。(cutみたいに)
sencodeでできるかと思いましたがどうも違うようで・・
46132人目の素数さん:2010/04/17(土) 22:45:46
とうとう自演まで始めたか
哀れだな
47ごろ:2010/04/18(日) 04:57:24
>>45
せっかく質問して頂いたのに、馴染みのない操作で
回答できずにスミマセン。
少し調て回答したいと思います(ずっと前に使ったことがあったかもです)。
>>46
あはは
とにかく、書き込みありがとうございます。
48ごろ:2010/04/18(日) 16:31:35
>>45
ちょっと頑張ってみました。
求めている回答になるか分かりませんが、以下の方法ではどうでしょうか?

最初にラベルの定義をします。
label define newlabelname 2 "a" 1 "b" 3 "c"
その後、今作ったラベル名を指定してencodeします。
encode textvariable, generate(numvariable) label(newlabelname)
49132人目の素数さん:2010/04/18(日) 17:10:52
>>48
おお、encodeにこのようなやり方もあるのですか。
ありがとうございます、とても参考になります。

単純にabc>123 or abc>321であればsencodeとgsortの
併用でいけたのですが、それ以外となると手間がかかって
いたので助かりました。

それにしてもstataはさくさく動いて小気味よいですね。
50ごろ:2010/04/19(月) 01:56:10
http://rep2.moepla.net/wiki/index.php?Stata
Wikiページにこれまでの内容をまとめました。
>>44
確かにdoファイルエディタは日本語が文字化けしてしまいますね。
Emacsファイルと連携できればきっと文字化けの問題もなくなり、
Emacsのキーバインドが使えて幸せになれると思うのでちょっと考えてみます。
51ごろ:2010/04/24(土) 03:46:52
そろそろ更新しないと。
52ごろ:2010/04/24(土) 08:32:35
そうだ、Stataのメーリングリストから面白い話題をピックアップしてみよう。
(独り言)
53ごろ:2010/04/24(土) 08:51:13
例えば、こんなの
なんでStata10は
>clear
を実行しても、グラフはClearされないの?

ー>
グラフをクリアするには、
>graph drop _all

上記実行前後で次のコマンドを実行して見ればよくわかる。
>graph display

ただ、実際は
グラフ作成時のオプションに
name(グラフの名前, replace)
としておけば問題なし。
54ごろ:2010/04/27(火) 15:10:08
RとStataの両方つかっている人います?
55ごろ:2010/05/02(日) 23:25:35
GW中保守
56ごろ:2010/05/04(火) 02:03:17
57ごろ:2010/05/04(火) 15:13:18
>>56
と思ってみてみたが、解説が少なくていまいち。このへんちゃんと勉強したいものなんだが。
58ごろ:2010/05/12(水) 15:32:34

白紙のデータから入力する場合(下記6行をdoファイルに記述し実行する)



clear /*念のためデータの初期化*/

input a b str5 c str10 d

11 12 c1 d1

21 22 "c cc" dd

31 32 ccccc dddddddddd

end


解説:
-inputの行で新しくa,b,c,dという4つの名前の変数を作成しデータを入力することを宣言。
-str数字で、次にくる変数は数字では無く、文字列データであることを宣言。数字はその文字列の最大長を表す。
文字列は""で囲まなくても大丈夫だが、間にスペースが入る場合は""が必須となる。
データは羅列していくだけで良いが、終了時にendが必要。

以上です。
59132人目の素数さん:2010/05/15(土) 22:56:40
いつの間にこんなスレが。
うんにゃ、よろしく。
60ごろ:2010/05/16(日) 10:12:06
>>59
おお。よろしくお願いします。
一緒に勉強しましょう。
61132人目の素数さん:2010/05/17(月) 18:40:02
>60
よろしくです。
62ごろ:2010/05/18(火) 11:33:27
誰か(ってここを見ている人は10人もいないと思うが)、
Stata10、11のGraph Editorについてもっと知りたいと思うので教えて下さい。

具体的に知りたいことは、Graph EditorでStart Recordingボタンを押すと、GUI操作で行った変更を
テキストコマンドファイル(.grec)として保存できるみたいですが、どうして、Stata本体の機能ではなく、Graph Editorとして別機能にしたのでしょうか?

つまり、これではDoファイルで大まかなグラフを作って、Graph Editorで修正となるため、ファイルが一元化できません。DoファイルにこのEditorでの操作結果も保存できると良いのになぁ
というのが本心です。

また、このGraph Editorで使われているコマンドの解説まとめなんかがあるといいかなぁと思ったりします。
63132人目の素数さん:2010/05/21(金) 08:51:11
>>62

ごろさん。

Stata 11を使ってるのに、ろくにGraph editorを使ったことが無いどころか
こんな機能があるなんて知りませんでした。なかなか便利ですね。
最近はどの分野もRに押されつつみたいのなので、初心者には敷居の高いRと差別化を図るために
GUIを沢山取り入れようという方向なんでしょうかね。
(私としては、とりあえずSで始まりSで終わるあのふざけた業者を
ぶっ潰して、とっとと覇権を握ってもらいたいですが。)

それはともかく、確かにこのコマンドをdoファイルに落とせれば楽ですね。
が、どうやらそうは問屋が卸さないようで。

http://www.stata.com/statalist/archive/2007-06/msg00104.html

ただ、ここで使う機能というのは、どれもdoファイルのシンタックスとして
有効なものなので、後はそのコマンドを知っているかどうかということになりますよね。
そこで、ちょっと面倒かもしれませんが、graph describeと併用すれば、
doファイルで一元化することができるんじゃないでしょうか?

1. テキトーにグラフを作る
2. メモリにグラフを記憶させる
3. Graph editorで修正する
4. . graph describeを入力して、"command"のところだけコピペする

てな感じで?
64132人目の素数さん:2010/05/21(金) 09:06:39
折角なんで、私も質問です。

あるコマンドのバージョンを確認するシンタックスって何でしたっけ?
調べれば多分分かるんですが、面倒なのでw
65132人目の素数さん:2010/05/21(金) 12:16:47
>>63
と自分で提案しておいて、念のためやってみたんだが、うまくいかないのう…
どうもGraph editorで変更した内容はメモリに蓄積されないらしい。
ソースコード空けてみても違う言語で書かれてるし。
うーむ、これは不便だ。。。グラフを1回1回開けつつ、少しずつシンタックスをいじってくしかないのかね。
今までそうやってきたんだけど、はっきり言ってこの作業が一番時間食われるんだが。。。
66ごろ:2010/05/24(月) 04:51:41
あ、パソコンが壊れて修理中にたくさんコメントありがとうございます。
また返事します。
67ごろ:2010/05/29(土) 18:24:02
ちょっとスゴいものを見つけたのでお知らせします。
別にStataを裏切る訳ではありませんが、StataユーザーのためのR本がまるまるありました。
私もRを勉強していて、これからこれで勉強したいと思います。
Rを学ぶことで、Stataの良さを再認識できますし、統計への理解も深まります。

http://uqu.edu.sa/files2/tiny_mce/plugins/filemanager/files/4281670/aakpro/algebra/alg1/alg2/alg3/alg4/R%20for%20Stata%20Users.pdf
68132人目の素数さん:2010/05/30(日) 00:33:28
おお、丁度STATAからRに乗り換えようかと思ってたところだ
これを機にSTATAとはお別れしますw
69ごろ:2010/05/30(日) 02:44:18
>>68
いや、(;^_^A アセアセ・・・
Rもいいところいっぱいありますよ。データベース(データフレーム)を同時にいくつも扱えるとか、
無料ソフトなのに、最先端のことができるとか、表現の自由度が高いとか・・・

でも、Stataとお別れしなくてもいいのかなぁなんて。。。
70132人目の素数さん:2010/06/01(火) 18:11:29
>>67-69
なんというオウンゴール…
71ごろ:2010/06/02(水) 05:34:14
まだちゃんと確認していないけどyosage。RとStata
http://www.stat.uchicago.edu/~collins/resources/handouts.html

今,RのデータをStataに取り込む方法を探し中。
72ごろ:2010/06/02(水) 05:42:19
>>70
いや、Stataいいですよ。
グラフも綺麗ですし、システマティックレビュー用のadoファイルを追加すると、
本当に出版レベルの図表がすぐに出来たのは驚きでした。

不満も書いておくと、
大きなデータをData Editorを開いて見ていると、突然重くなって、場合によってはクラッシュしてしまうところ。
何故か、矢印カーソルキーではなく、ウインドウのバーでデータを動かすと大丈夫なんだが。
73ごろ:2010/06/02(水) 06:21:54
>>71
見つけた。見つけた。
同じLibrary(foreign)に入っていた。

write.foreignもあるようだけど上手くいかなかった。

#write.dta(dataframe, file, version = 7L,
# convert.dates = TRUE, tz = "GMT",
# convert.factors = c("labels", "string", "numeric", "codes"))
#何故かconvert.factors=c("string")を追加しないと上手く動かなかった。

write.dta(ここにRのデータフレーム名,file="ここにstataのデータベース名.dta",convert.factors = c("string"))

なんでこんなことをしているかというと、
複数ファイルのエクセルシートからStataにデータを取り込むのはちょっと大変。
http://blog.livedoor.jp/gha10771/archives/891254.html

そこで、Rとエクセルの相性の良さを鑑みて
エクセル->R->Stataの道を模索中。
Stataを見捨ててRでやればいいじゃん!というのは無しで。
74ごろ:2010/06/02(水) 06:24:29
情報のソースも貼っておこう
http://tolstoy.newcastle.edu.au/R/e2/help/07/07/20952.html

From: Thomas Lumley <tlumley_at_u.washington.edu>
Date: Tue, 10 Jul 2007 12:57:56 -0700 (PDT)

On Tue, 10 Jul 2007, Stefan Grosse wrote:

> I am not sure what you are doing there but what you need is
> library(foreign)
> and
> write.dta()
write.foreign should also work, though.

My guess is that Kate used tempfile() to specify the filenames, and that the data file would then have been deleted on leaving R.
This is only a guess, of course.

The syntax for write.dta is

write.dta(the.data.set, file="dataset.dta")

and for write.foreign is

write.foreign(the.data.set,codefile="dataset.do", datafile="dataset.raw",

package="Stata")

-thomas
75ごろ:2010/06/06(日) 11:36:28
>>73
見事にできました!
library(gregmisc)
library(foreign)
setwd("~/Documents/Stata_data")
db <- lapply(1:8,function(i){read.xls("exceloneweek.xls", sheet=i)})
statadata <- db[[1]]
for(i in 2:8){statadata <- merge(statadata,db[[i]])}
#別法
#statadata <- data.frame(db)
write.dta(statadata,"Statanewdata.dta", version = 10)

Stataは変数名の扱いが楽でいいなぁと思う。
例えば、
day1 day2 day3という変数名は
day*と表現できる。
76ごろ:2010/06/11(金) 06:39:08
なかなか盛り上がらないな。
77132人目の素数さん:2010/06/13(日) 10:54:18
>>76
人がいないっていう…
78132人目の素数さん:2010/06/13(日) 22:12:42
>>76
お前が>>67で貴重な住人を追い出すから……
自業自得だな
79132人目の素数さん:2010/06/13(日) 22:46:13
>>78
いやまぁ、盛り上がらないのは>>1のせいじゃないと思うよ。
「出ていけ」って言ったわけじゃないし、役に立つ知識を共有することはいいことだと思うし。
もともと日本でStata使う人が少ない上に、Rに移行する人が多くなってる
昨今の現状からすると、仕方ないんじゃね?
80ごろ:2010/06/16(水) 05:11:07
>>62さんの質問に回答したいと思いつつ、実力がないのでほったらかしで済みません。
今日見つけたコマンドを書いておきます。
StataのDATA Editorで変数の並び順を変える方法
order 変数名
指定した変数が一番先頭に来る。

今、大きなデータベースのデータクリーニングをやっています。
ExcelからRを通してStata用のデータベースに取り込んだのですが、
途中でデータをいじったり、Stataでいじったりという感じです。

最終的な解析はStataでやろうと思っているんですけどね。
81ごろ:2010/06/16(水) 08:08:03
StataもRも大文字、小文字を区別する。
Stataで変数名を大文字から小文字に一括変換するには、
varcaseを使う。
インストールは簡単で、ネットワークのつながった環境で、
ssc install varcase, all
を一度実行すればOK
82ごろ:2010/06/16(水) 08:12:47
欠損値の扱いに関していくつか
Stataでは、複数の変数を名称を省略して扱えるものと扱えないものがある。
例えば、
var1, var2, ... var9に欠損値として999が入っている場合
replace var*=. if var*==999
は使えず、いちいちvar1,var2と繰り返す必要がある。
ところが
mvdecode var*, mv(999=.)
これはOK
mvdecode _all, mv(999=.)
これでもOK

最後に
StataはVersion8から欠損値にも区別をつけることが出来るようになった。
(例:未回答の欠損値には.a, 回答が汚くて読み取れなかった場合には.bなど)
この区別した欠損値を一括して"."に変更する方法
mvencode _all, mv(.a=999)
mvencode _all, mv(.b=999)
mvdecode _all, mv(999=.)
encodeとdecodeがあるのに注意。
しかし、この方法だと本当に999という値があったときが怖い。
何か他に良い方法あるのかなぁ。999でなく999999999にするとかでなくて。

mvencode _all, mv(.z=999999999)
83132人目の素数さん:2010/06/17(木) 23:35:12
seedについて質問。

. set seed #

で任意の整数#を指定すれば、Stataがアルゴリズムとして利用する乱数を指定できる訳ですが、
任意の整数#を入れても、

. display c(seed)

で表示しようとすると、X246f1...のような整数でないコード(文字列)で出てきてしまいます。
どなたか、Stataが使ってるseedを整数で表す方法(コマンド)を知っていますか?
84ごろ:2010/06/18(金) 04:08:32
>>83
色々調べてみましたが、良い方法は見つけきれませんでした。
ネット上でも情報は少ないです。
一番情報があったのは、
http://www.stata.com/statalist/archive/2008-10/msg00032.html
ですが、目的の内容とは異なります。
また何かわかれば書き込みます。
85132人目の素数さん:2010/06/18(金) 22:31:47
>>73

Rの知識がないので、あまり役に立たない情報だったらごめんなさい。

複数シートのExcelからStataにデータを取り込むのが大変だということですが、
複数シートのExcelを複数ファイルのCSVに変換して読み込むという方法はどうでしょうか?
http://www.vector.co.jp/soft/dl/win95/business/se259639.html
とかを使用して。
86ごろ:2010/06/19(土) 00:31:34
>>85
コメントありがとうございます。
私はMacユーザーなので、使えるか試していませんが良さそうですね。
CSVにしたときに、一つのCSVファイルになるならば便利そうです。
87132人目の素数さん:2010/06/21(月) 00:42:51
>>86
残念ながら一つのCSVファイルにはならないです。
ただstata上で結合させるのは、そんなに大変ではないかなと思ったので。
88ごろ:2010/06/22(火) 10:09:47
>>87
確かにそうですね。私はRに走ってしまいましたが、
Excel->複数CSVファイル->Stataで取り込み->Stataで結合
でサックリ出来そうですね。
時間があるときに、この方法も検討したいと思います。

一番気になるのが、keyデータの扱いですが、
調べたらmerge関数のuniqueオプションを使えば大丈夫そうですね。
実際に試してみたらまた報告します。
89132人目の素数さん:2010/06/23(水) 02:17:58
>>84

遅くなりましたが、わざわざ調べていただいてありがとうございます。
やはりseedはstringで記録されてるみたいですね。とは言え最初から
この文字列をどう配置すればいいか分からないので、一番安全な方法としては、

. set seed [適当な番号]
. display c(seed)
. set seed [出てきた文字列]

というふうに処理することでしょうか。

どうもありがとうございました。
90ごろ:2010/06/25(金) 12:43:03
>>88
十分検討はしていませんが、いちおう試してみました。

forvalues i=1/10 {
insheet using "test`i'.csv"
save test`i'.dta,replace
clear
}

use test1.dta
forvalues i=2/10 {
merge id using test`i'.dta, sort unique _merge(_merge`i')
}

このような形で一応できました。

>Excel->複数CSVファイル->Stataで取り込み->Stataで結合
私の使っているエクセルのバージョンでは複数シートのエクセルから保存時に複数のCSVファイルに一度に出力が出来ないので、
ここで先に紹介して頂いたアプリケーションなどを使う必要がありそうです。
MacやWinに左右されない方法としては、エクセルでマクロを組むのが良さそうです。

Stataは読み込みもとても早く上記問題が解決できれば、Stataで行うのが良さそうです。
まだ十分理解していませんが、mergeした際に_mergeという新しい変数名でmergeの結果を出力するようで、
複数ファイルを扱う場合には、上記コマンドのように_mergeオプションで変数名を指定する必要がありました。
後uniqueオプションはどう働いているかまだ十分に検討しきれていません。

エクセルからCSVファイルのところが面倒なので私はRを使ってしまいましたが、Stataのサクサク動く様には改めて感心しました。
91ごろ:2010/06/25(金) 13:21:23
我慢できなくなって、Excelのマクロも組んでやってみました。
Rで処理するよりも断然早かったです(16枚のシートで一枚に30x80くらいのデータ数)。
(まぁRでも2-3分で終わるんですが。エクセルでの処理分の時間はありますが、Stataなら一瞬でした。)

Application.DisplayAlerts = False
For i = 1 To 16
Sheets(Array(i)).Select
ActiveWorkbook.SaveAs Filename:= _
"HDD:Users:Username:Desktop:test" & i & ".csv" _
, FileFormat:=xlCSV, CreateBackup:=False
Next i
Application.DisplayAlerts = True
End Sub

エクセルのマクロでした。
92ごろ:2010/06/27(日) 08:18:06
たまたま見つけたブログ
知らないことも書いてあって面白い。
http://statamemo.jugem.jp/
93ごろ:2010/06/27(日) 08:27:10
94ごろ:2010/06/27(日) 08:42:34
外れ値の扱いについては、色々考えたほうが良いのかも。
この意見もまだしっかり読んでいないが大切そう。
http://www.stata.com/statalist/archive/2007-06/msg00272.html
95132人目の素数さん:2010/06/28(月) 21:56:51
>>90, 91
stataのコード、大変参考になりました。
Excelのマクロはまだ勉強を始めたばかりなので分からないのですが、
この場合はキーとなる変数はどのように扱っているのでしょうか?

stataの良い点として、二つのデータがマッチしたかどうかをmergeの値で知ることができますが、
Excelでも分かる様になっているのでしょうか?
Excelのマクロで全部完成できるなら良いですね。
96ごろ:2010/06/29(火) 00:57:54
>>95
コメントありがとうございます。
本当は、Excelマクロを使いたくなかった(※1)ので、私はRに走ってしまいました。
しかし、今回Excelマクロを試してみたところ、この方法が今のところ最善だという結論に至りました(※2)。
私もExcelマクロはまだ十分理解していませんが、このスクリプトのポイントは、
Sheets(Array(i))でArrayを使うことでシート名に依存しないということでしょうか。
後は、for だけで、たいしたひねりもありません。
本当は保存場所を対話的に処理できれば使いやすいと思います。


※1:理由はいろいろありますが、例えばMacだと最新のExcelではマクロが使えないなど。
※2:Rで処理すると変数名を大文字から小文字に変更が必要だったり、文字列データを勝手に
   カテゴリ変数に変更してしまうなどがあり、余計な処理が増えてしまった。
97ごろ:2010/07/02(金) 05:53:15
最近Perlの勉強にはまっています。
コンピュータ言語を勉強するとRとかStataへの理解も深まりますね。
98132人目の素数さん:2010/07/02(金) 21:45:42
この間からStata.comへのアクセスがもの凄く遅いだけど、これってオレだけ?
99ごろ:2010/07/07(水) 05:04:59
>>98
書き込み有難うございます。
いま試してみましたが、Stata.comへはスムーズにアクセスできました。
100ごろ:2010/07/14(水) 12:12:57
保守

Stataの`i'という変数名の指定法はどこから来たものなんだろう。
独自のものなのかな?
101ごろ:2010/07/16(金) 14:48:44
どうでもいいけど発見
Stataは例えばlist出力など自動で5項目毎に線が入る。
見やすくて良いがエクセルシートなどに貼り付けるとき邪魔。
,separator(0)
とオプション指定をしてやるとセパレーターがなくなる。
102ごろ:2010/07/20(火) 07:34:56
遠い記憶だが、Stataってグラフなどのアウトプット(色やスタイル)を簡単に変える方法ってありませんでしたっけ?
103ごろ:2010/07/20(火) 11:57:59
自己解決した。
オプションでscheme(s1mono)
だった。
104ごろ:2010/07/23(金) 23:29:31
保守
105ごろ:2010/07/28(水) 10:46:05
話題提供にStataメーリングリストから超訳して引用

質問:不均一なパネルデータ(heteroskedasticity in my panel data)をつかって解析したいんだけど。
FAQを見ると次のコマンドが推奨されていた。

xtgls..., igls panels (heteroskedastic)
estimates store hetero
xtgls...
local df=e (N_g)-1
lrtest hetero., df ('df')

結果は、"matsize too small - should be at least 621". こんなエラーメッセージが出てしまった。何が間違っているの?
ジン

マイケル これを試してご覧。
. set matsize 800  (800でなくてもいいかも).
解決するとイイね。
マイケル

106ごろ:2010/07/28(水) 10:55:53
続きジン ありがとうマイケル
"lrtest hetero ., df ('df')"ってコマンドだけどdfには何を入れたらいいの?
ジン

マイケル あなたの情報からすると
. xtgls..., igls panels (heteroskedastic)
. estimates store hetero
. xtgls...
. display e(N_g)-1
この最後のコマンドが示しているよ。
その番号は、グループの数−1だと思うね。
例えば自由度が157なら次のように入力すればいいと思うよ。
. lrtest hetero ., df (157)
間違っているかもしれないから別の人の意見も欲しいな。でも参考になれば嬉しいよ。
マイケル

ジン マイケル、丁寧にありがとう。
FAQと君のアドバイスにしたがってやったんだけど、まだ結果がちょっと変なんだ。
自由度は大きく620だったんだ。
Prob > chi2 = 1.0000.
この結果を信じると、私のデータは偏りがない(not exposed to heteroskedasticity)っていいのかな?
それともまだ間違っている?
ジン
107ごろ:2010/07/28(水) 11:04:06
マイケル
FAQ (at http://www.stata.com/support/faqs/stat/panel.html)を読んでみたよ。
君の結果を見ると、データに偏りがないと言わざる得ないよね。でもp値が1っていうのはおかしい気がするね。多分君が得た結果をそのまま
送ってくれたら何か分かるかもしれないよ。でもプライバシーとかコンフィデンシャリティは守ってね。
マイケル

ジン 次のがコマンドと結果だよ。
. xtgls アウトカム変数 予測因子1 予測因子2 予測因子3・・・予測因子6, igls panels (heteroskedastic)
. local df=e(N_g)-1
. display e(N_g)-1
620
. lrtest hetero ., df(620)
Likelihood-ratio test LR chi2(620)= -6436.22
(Assumption: hetero nested in .) Prob > chi2 = 1.0000
ありがとう
ジン

マイケル
とても参考になったよ。二つのことに気がついたよ。
1) 最初のモデルでは予測因子2と3と5とconstant (_cons)が無視(omit)されているね。
2) どの標準誤差もとても小さいね。そして係数(coefficents)もとても小さい。
もしかしたら、値が小さすぎるのが問題なのかも。
例えば
. generate 新予測因子1 = 予測因子1 / 1000
そして新予測因子1の方を使って再計算してみたら?
マイケル

パネルデータ解析に興味があったので読んでみましたが、2chの改行制限があるのと、
結果のまるまるコピペも良くないなと思いこのへんでやめておきます。
この後は、ジンが何度か変数のスケールを変えてやっていますが、やはり問題は解決していません。
108ごろ:2010/07/29(木) 06:16:01
今日の発見
name(`y=0',replace)
グラフに名前を付けるときに名前に=などが入っているとエラーになる。
ただの文字列とするためには`'の二つでくくると良いみたい。

グラフに線などを加えたい。
function y = f(x), ra(この値から この値まで) clpat(dash)
f(x)に好きな関数、ra=rangeにxの数値や変数でグラフを描く範囲を指定
109ごろ:2010/07/29(木) 09:39:24
name(`y=0',replace)
グラフに名前を付けるときに名前に=などが入っているとエラーになる。
ただの文字列とするためには`'の二つでくくると良いみたい。

これは嘘でした。
ただ単にエラーメッセージの出ないエラーで無視されているだけでした。
何か解決案があったらまた書き込みます。
110132人目の素数さん:2010/07/31(土) 01:30:53
誰も見ていないのでもう書き込まなくて宜しい
111ごろ:2010/07/31(土) 12:33:27
>>110
いやいや、ちゃんと見てくれているじゃないですか。
Stata普及のためにも続けさせてもらいますよ。
112132人目の素数さん:2010/08/01(日) 07:46:18
>>110
オレは見てるぜ。
嫌なら来なきゃいいだろ。
113ごろ:2010/08/01(日) 16:23:45
>>112
泣いて喜んでいます。もう少し精進してレベルの高い情報が発言できるようになりたいです。

ついでに、マニュアルレベルですが、
twowayでグラフを重ねて描くとき、( )( )で書き連ねるのも良いですが、
|| で描くと結構読みやすく書けるかも。
114ごろ:2010/08/05(木) 08:11:35
添字を操作する方法がないか悩み中。
例えばday1という変数は
local i=1
display day`i'
で表示できる。

ところがday2は
display day`i+1'
ではダメ

なんかいい方法ないかなぁ。
115ごろ:2010/08/07(土) 04:38:59
まだ悩んでいる
day``i'+1'
も駄目だった。

少し古いがまとまったStata日本語サイトを見つけたので紹介
http://d.hatena.ne.jp/sdmt/20061106/1162633144
116けろろ:2010/08/08(日) 17:28:47
local i=1
local j=`i'+1
display day`j'
これじゃだめかな?
117ごろ:2010/08/09(月) 09:32:07
>>116
コメントありがとう。
実はやるべきことをほったらかして、色々調べて(adoファイルを覗いてみたり)みたんですが、
やっぱり二つ変数を作ってやるしかないような感じですね。
ちょっとわからないのが、adoファイル内では下記のような変数の使い方があるところ。
どういう意味があるんだろう。

. local x "`i'"
意味としてはxに変数iの値を代入するだが、
. local x `i'
と同じ意味にしか思えないんだが。

あとこんなんもあった。
local plot `"`s(plot)' " '

もう意味分からん。
118ごろ:2010/08/09(月) 09:57:18
いま気分一新して更に検索してみたら"`i' "に関してはやっと分かった。


. local initials My initials are `myinitials'
. local myinitials GR
. display "`initials'"
これを実行すると
My initials are GR
となる。
ところが最後を
. display `initials'
こうすると、Myが変数名と勘違いされて次のエラーが出る。
My not found

ソースはこちら。
http://data.princeton.edu/stata/programming.aspx
119ごろ:2010/08/11(水) 09:39:41
奇妙な現象
多分、これで2回目だと思うんですが、保存したはずのDoファイルを開くと
真っ白でびっくりしました。
ファイルサイズを確認すると40KBあり中身はありそうです。
実際、別のテキストエディタで開くとちゃんと残っていました。

結局、別のテキストエディタで開いて出た内容をもう一度Stataで開いた白紙に見える
Doファイル上にコピー&ペーストして修正できましたが、焦りました。

もしかしたらバグなのかと思います。こんな経験ないですか?
120ごろ:2010/08/12(木) 05:01:03
http://keijisaito.info/arc/stata/japanese_stata.htm
Stataの日本語化の記事があったんで試してみたが、家のMac環境では上手くいかないなぁ。
というかギリシャ文字だけでも出力させたいんだけど。
どこかで方法を見た気がするがまたあとで。
121ごろ:2010/08/25(水) 15:07:13
光陰矢のごとしだな
保守
122132人目の素数さん:2010/09/02(木) 18:26:18
時系列解析にSTATAを使っています。
検定の結果の見方がわからないのですが、
ここで質問してもいいですか?
123ごろ
>>122
どれくらい力になれるか分かりませんが、一緒に考えましょう。