統計ソフトSTATAの部屋
■ このスレッドは過去ログ倉庫に格納されています
0001ごろ
2010/03/03(水) 21:25:01統計ソフト STATAを使って統計解析をするスレです。
日本語の良いソースが少ないので盛り上げましょう。
立てたは良いが、落ちてしまったので再開です。
0002ごろ
2010/03/03(水) 21:26:03今度は消えないように保守します。
ちょっと質問したいこともありましたし。
0003ごろ
2010/03/04(木) 04:29:59ここにはとりあえず羅列して、どこかpukiwikiにでもまとめたいと思います。
0004132人目の素数さん
2010/03/04(木) 04:54:590005ごろ
2010/03/04(木) 09:46:26取り敢えず、沈まないように
有名所のリンクをコピペします。
外国語ですが。
http://www.ats.ucla.edu/stat/stata/
0006132人目の素数さん
2010/03/04(木) 15:28:350007ごろ
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/
上と一緒かな
日本語のもそのうち
0008ごろ
2010/03/05(金) 17:49:36日本語のPDFでは秀逸。
基本はほぼ網羅されている!?
http://park1.wakwak.com/~mt_tosiyuki/stata-manual.pdf
0009ごろ
2010/03/07(日) 16:04:570010ごろ
2010/03/08(月) 05:28:23ヒントはいろいろある
ttp://homepage.seesaa.net/category/386689-1.html
0011ごろ
2010/03/09(火) 04:26:050012132人目の素数さん
2010/03/09(火) 13:21:390013ごろ
2010/03/09(火) 14:54:30書き込んでくれてありがとう。
そのうちStataユーザーが自由に集える場所となることを目指します。
時間ができたらもう少し有用な情報、まとめをUPします。
0014132人目の素数さん
2010/03/10(水) 06:24:25質問向き非過疎縁者スレを、紹介しておきますね。
統計学なんでもスレッド11
http://science6.2ch.net/test/read.cgi/math/1258355122/
統計・解析ソフトについて
http://pc11.2ch.net/test/read.cgi/bsoft/1012298063/
0015ごろ
2010/03/10(水) 09:54: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)
0016ごろ
2010/03/10(水) 15:44:36ここも有名ですよね
0017ごろ
2010/03/11(木) 02:50:450018132人目の素数さん
2010/03/11(木) 12:01:15人気がないスレはただひっそりと落ちて行くだけ
0020ごろ
2010/03/12(金) 11:02:38local i=1
while `i' <= 10{
gen newvar`i'=.
local i = `i' + 1
}
これでnewvar1からnewvar10まで作れる
ちなみにnewvar1…10を一度に表すのは
newvar*
当たり前すぎてつまらない!?
企画1:あなたのdoファイルテンプレートを教えて下さいというのは?
0021ごろ
2010/03/13(土) 07:31:43私は完全にDoファイル命ですね。
logファイルも一応出力しますが、99%は見ていません。
理由はDoファイルとメイン画面でことたりることと、
Macの通常のエディタでlogファイルが開けないことですね。
結果はset more off にしているのでどんどん流れてしまいますが、
見たい結果の直後にstopと書くことでエラーが起きてとまります。
そこで結果をメインモニタで確認します。
結果を記録したいときには、Doファイルに結果をコピペしてコメントアウトしています。
0022ごろ
2010/03/14(日) 08:45:39は駄目
egen newvar=mean(var)
0023ごろ
2010/03/14(日) 17:52:07どこでも使えるのが
/*この中がコメントアウトされる*/
行頭で//これ以降
行頭で*これ以降
0024132人目の素数さん
2010/03/14(日) 18:02:46信じられるか?
しかも俺はSTATAなんて知らないときたもんだ
0026ごろ
2010/03/15(月) 09:56:46about
と入力すると、シリアル番号と登録者の名前が出てくる。
0027ごろ
2010/03/16(火) 11:08:30いちおうwikiを作ってみました。
0028ごろ
2010/03/19(金) 05:08:070030ごろ
2010/03/21(日) 02:40:250031ごろ
2010/03/23(火) 11:32:15変数名やコマンド名などを省略できる
変数名の一部+*で複数の変数名を指定できる。
Stataの嫌なところ
genとegenが区別されているところ、どうして一緒じゃ駄目なんだろう
またRと比べると柔軟性が弱い気がする
0032ごろ
2010/03/26(金) 12:13:50http://mixi.jp/view_community.pl?id=699582
0033ごろ
2010/03/28(日) 17:10:520034ごろ
2010/03/31(水) 08:31:31例: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 ・・・
というデータ形式に変更される。
0035ごろ
2010/04/01(木) 10:23:03Stataで日付を扱う方法。
エクセルなどからそのまま日付を読み込むと
フォーマットがStringsになってしまいます。
以下の方法で解決!
例えば変数dateに2010/4/1と入っている場合
gen newdate=date(date,"YMD")
format newdate %td
変数名を変えたくなければ
drop date
rename newdate date
Happy April Fool!
0036ごろ
2010/04/02(金) 07:59:49一般的に製品版のいいところは、コマンドラインだけでなく、メニューなどからも
命令が出来るところかなと思っている。SPSSとかどうなんだろう。
で、Stataがいいのは、メニューなどから操作しても、メイン画面に
あたかもコマンドラインで操作したかのようにコマンドが出力される。
これが凄く良い。この出力されたコマンドをDoファイルに記録しておけば何度でも使えるし、
最初はメニューから操作しても、次はコマンドで操作できるようになるのでスキルアップする!
ただ、残念なのは、グラフの編集かな。
最近のバージョンからグラフをエクセルソフトみたいに後から色々いじれるようになったが、
いじった結果がメイン画面にコマンドとして出力されない。
一応、録画モードみたいなのがあって、操作そのものを保存できるみたいですが、
使いこなせていない。コマンドとして出てくれれば言うこと無いんだけどなぁ。
0037ごろ
2010/04/10(土) 13:48:340038132人目の素数さん
2010/04/15(木) 15:23:210039132人目の素数さん
2010/04/15(木) 15:31:37いつのまにか随分GUIが充実してたんですね、使いやすくて驚きました。
SPSSはGUIがすごくよくできたソフトで入門に最適だけど、かゆいところに手が届き辛いソフトというのがこれまで使ってきた印象です。スクリプトに手をだしはじめるくらいに慣れたらstataに移っても違和感少ないかも。
0040ごろ
2010/04/16(金) 10:10:26いらっしゃいませ。
前にも書きましたが、最近特にStataが良いと思うのは、
入門者にも使い易いGUIを提供しつつ、GUIで実行しても、
CUI用のコマンドがちゃんと吐き出されるので、
初心者でも確実にスキルアップできるところですね。
0041132人目の素数さん
2010/04/16(金) 16:44:22レスどうもありがとうございます。
コマンドはき出すのはSPSSもそうですよ。
私はライセンス体系とfinditコマンドの便利さが
Stataでまず気に入っています。
0042132人目の素数さん
2010/04/16(金) 17:20:55ちょうど日付の変換必要でしたので助かりました。
デフォルトに日本でよくある日付形式も入れてくれたら
いいのですけど。
0043ごろ
2010/04/16(金) 23:09:27SPSSの情報ありがとうございます。
恥をかき続けなくて済みました。
Doファイルのテンプレートはどのように使っていますか?
まだやりたくてやっていないのは、
StataをEmacsから操作するようにすること。
DoファイルエディタをEmacsで操作できるようにすればほぼ目的は達成しそうなんですが。
0044132人目の素数さん
2010/04/17(土) 11:22:19doファイルエディタでコメント入れると日本語が化けてしまうので
使っていません。(日本語フォントセット指定しているのですが)
メモ帳でtxtファイルにちまちま残しておいて、使うときはコピペしています。
SPSSは入門にいいですよ。基本GUIなのにスクリプトも使えますし
基本画面がエクセル風でとっつきやすいですから。
ただ、何かと金を取ること、ライセンス移動が大変なこと、
時々不安定になること、重いこと、細かい設定がしにくいこと
から、慣れてくると使いにくさを感じるようになりました。
それでstataに移った次第です。
0045132人目の素数さん
2010/04/17(土) 11:31:17文字型変数を数字型に変換するのはencode使うと思いますが、
このとき順番を指定して変換するにはどうやっていますか?
(a,b,c>1,2,3でなく、a,b,c>2,1,3など)
基本的なことで恐縮ですが、ごろさんもしご存じなら教えてください。
ちまちまやればできるのですが、オプションで指定して
一発で変換できる方法はないものでしょうか。(cutみたいに)
sencodeでできるかと思いましたがどうも違うようで・・
0046132人目の素数さん
2010/04/17(土) 22:45:46哀れだな
0047ごろ
2010/04/18(日) 04:57:24せっかく質問して頂いたのに、馴染みのない操作で
回答できずにスミマセン。
少し調て回答したいと思います(ずっと前に使ったことがあったかもです)。
>>46
あはは
とにかく、書き込みありがとうございます。
0048ごろ
2010/04/18(日) 16:31:35ちょっと頑張ってみました。
求めている回答になるか分かりませんが、以下の方法ではどうでしょうか?
最初にラベルの定義をします。
label define newlabelname 2 "a" 1 "b" 3 "c"
その後、今作ったラベル名を指定してencodeします。
encode textvariable, generate(numvariable) label(newlabelname)
0049132人目の素数さん
2010/04/18(日) 17:10:52おお、encodeにこのようなやり方もあるのですか。
ありがとうございます、とても参考になります。
単純にabc>123 or abc>321であればsencodeとgsortの
併用でいけたのですが、それ以外となると手間がかかって
いたので助かりました。
それにしてもstataはさくさく動いて小気味よいですね。
0050ごろ
2010/04/19(月) 01:56:10Wikiページにこれまでの内容をまとめました。
>>44
確かにdoファイルエディタは日本語が文字化けしてしまいますね。
Emacsファイルと連携できればきっと文字化けの問題もなくなり、
Emacsのキーバインドが使えて幸せになれると思うのでちょっと考えてみます。
0051ごろ
2010/04/24(土) 03:46:520052ごろ
2010/04/24(土) 08:32:35(独り言)
0053ごろ
2010/04/24(土) 08:51:13なんでStata10は
>clear
を実行しても、グラフはClearされないの?
ー>
グラフをクリアするには、
>graph drop _all
上記実行前後で次のコマンドを実行して見ればよくわかる。
>graph display
ただ、実際は
グラフ作成時のオプションに
name(グラフの名前, replace)
としておけば問題なし。
0054ごろ
2010/04/27(火) 15:10:080055ごろ
2010/05/02(日) 23:25:350056ごろ
2010/05/04(火) 02:03:17これ面白そう
0058ごろ
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が必要。
以上です。
0059132人目の素数さん
2010/05/15(土) 22:56:40うんにゃ、よろしく。
0061132人目の素数さん
2010/05/17(月) 18:40:02よろしくです。
0062ごろ
2010/05/18(火) 11:33:27Stata10、11のGraph Editorについてもっと知りたいと思うので教えて下さい。
具体的に知りたいことは、Graph EditorでStart Recordingボタンを押すと、GUI操作で行った変更を
テキストコマンドファイル(.grec)として保存できるみたいですが、どうして、Stata本体の機能ではなく、Graph Editorとして別機能にしたのでしょうか?
つまり、これではDoファイルで大まかなグラフを作って、Graph Editorで修正となるため、ファイルが一元化できません。DoファイルにこのEditorでの操作結果も保存できると良いのになぁ
というのが本心です。
また、このGraph Editorで使われているコマンドの解説まとめなんかがあるといいかなぁと思ったりします。
0063132人目の素数さん
2010/05/21(金) 08:51:11ごろさん。
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"のところだけコピペする
てな感じで?
0064132人目の素数さん
2010/05/21(金) 09:06:39あるコマンドのバージョンを確認するシンタックスって何でしたっけ?
調べれば多分分かるんですが、面倒なのでw
0065132人目の素数さん
2010/05/21(金) 12:16:47と自分で提案しておいて、念のためやってみたんだが、うまくいかないのう…
どうもGraph editorで変更した内容はメモリに蓄積されないらしい。
ソースコード空けてみても違う言語で書かれてるし。
うーむ、これは不便だ。。。グラフを1回1回開けつつ、少しずつシンタックスをいじってくしかないのかね。
今までそうやってきたんだけど、はっきり言ってこの作業が一番時間食われるんだが。。。
0066ごろ
2010/05/24(月) 04:51:41また返事します。
0067ごろ
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
0068132人目の素数さん
2010/05/30(日) 00:33:28これを機にSTATAとはお別れしますw
0069ごろ
2010/05/30(日) 02:44:18いや、(;^_^A アセアセ・・・
Rもいいところいっぱいありますよ。データベース(データフレーム)を同時にいくつも扱えるとか、
無料ソフトなのに、最先端のことができるとか、表現の自由度が高いとか・・・
でも、Stataとお別れしなくてもいいのかなぁなんて。。。
0070132人目の素数さん
2010/06/01(火) 18:11:29なんというオウンゴール…
0071ごろ
2010/06/02(水) 05:34:14http://www.stat.uchicago.edu/~collins/resources/handouts.html
今,RのデータをStataに取り込む方法を探し中。
0072ごろ
2010/06/02(水) 05:42:19いや、Stataいいですよ。
グラフも綺麗ですし、システマティックレビュー用のadoファイルを追加すると、
本当に出版レベルの図表がすぐに出来たのは驚きでした。
不満も書いておくと、
大きなデータをData Editorを開いて見ていると、突然重くなって、場合によってはクラッシュしてしまうところ。
何故か、矢印カーソルキーではなく、ウインドウのバーでデータを動かすと大丈夫なんだが。
0073ごろ
2010/06/02(水) 06:21:54見つけた。見つけた。
同じ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でやればいいじゃん!というのは無しで。
0074ごろ
2010/06/02(水) 06:24:29http://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
0075ごろ
2010/06/06(日) 11:36:28見事にできました!
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*と表現できる。
0076ごろ
2010/06/11(金) 06:39:080077132人目の素数さん
2010/06/13(日) 10:54:18人がいないっていう…
0078132人目の素数さん
2010/06/13(日) 22:12:42お前が>>67で貴重な住人を追い出すから……
自業自得だな
0079132人目の素数さん
2010/06/13(日) 22:46:13いやまぁ、盛り上がらないのは>>1のせいじゃないと思うよ。
「出ていけ」って言ったわけじゃないし、役に立つ知識を共有することはいいことだと思うし。
もともと日本でStata使う人が少ない上に、Rに移行する人が多くなってる
昨今の現状からすると、仕方ないんじゃね?
0080ごろ
2010/06/16(水) 05:11:07今日見つけたコマンドを書いておきます。
StataのDATA Editorで変数の並び順を変える方法
order 変数名
指定した変数が一番先頭に来る。
今、大きなデータベースのデータクリーニングをやっています。
ExcelからRを通してStata用のデータベースに取り込んだのですが、
途中でデータをいじったり、Stataでいじったりという感じです。
最終的な解析はStataでやろうと思っているんですけどね。
0081ごろ
2010/06/16(水) 08:08:03Stataで変数名を大文字から小文字に一括変換するには、
varcaseを使う。
インストールは簡単で、ネットワークのつながった環境で、
ssc install varcase, all
を一度実行すればOK
0082ごろ
2010/06/16(水) 08:12:47Stataでは、複数の変数を名称を省略して扱えるものと扱えないものがある。
例えば、
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)
0083132人目の素数さん
2010/06/17(木) 23:35:12. set seed #
で任意の整数#を指定すれば、Stataがアルゴリズムとして利用する乱数を指定できる訳ですが、
任意の整数#を入れても、
. display c(seed)
で表示しようとすると、X246f1...のような整数でないコード(文字列)で出てきてしまいます。
どなたか、Stataが使ってるseedを整数で表す方法(コマンド)を知っていますか?
0084ごろ
2010/06/18(金) 04:08:32色々調べてみましたが、良い方法は見つけきれませんでした。
ネット上でも情報は少ないです。
一番情報があったのは、
http://www.stata.com/statalist/archive/2008-10/msg00032.html
ですが、目的の内容とは異なります。
また何かわかれば書き込みます。
0085132人目の素数さん
2010/06/18(金) 22:31:47Rの知識がないので、あまり役に立たない情報だったらごめんなさい。
複数シートのExcelからStataにデータを取り込むのが大変だということですが、
複数シートのExcelを複数ファイルのCSVに変換して読み込むという方法はどうでしょうか?
http://www.vector.co.jp/soft/dl/win95/business/se259639.html
とかを使用して。
0086ごろ
2010/06/19(土) 00:31:34コメントありがとうございます。
私はMacユーザーなので、使えるか試していませんが良さそうですね。
CSVにしたときに、一つのCSVファイルになるならば便利そうです。
0087132人目の素数さん
2010/06/21(月) 00:42:51残念ながら一つのCSVファイルにはならないです。
ただstata上で結合させるのは、そんなに大変ではないかなと思ったので。
0088ごろ
2010/06/22(火) 10:09:47確かにそうですね。私はRに走ってしまいましたが、
Excel->複数CSVファイル->Stataで取り込み->Stataで結合
でサックリ出来そうですね。
時間があるときに、この方法も検討したいと思います。
一番気になるのが、keyデータの扱いですが、
調べたらmerge関数のuniqueオプションを使えば大丈夫そうですね。
実際に試してみたらまた報告します。
0089132人目の素数さん
2010/06/23(水) 02:17:58遅くなりましたが、わざわざ調べていただいてありがとうございます。
やはりseedはstringで記録されてるみたいですね。とは言え最初から
この文字列をどう配置すればいいか分からないので、一番安全な方法としては、
. set seed [適当な番号]
. display c(seed)
. set seed [出てきた文字列]
というふうに処理することでしょうか。
どうもありがとうございました。
0090ごろ
2010/06/25(金) 12:43:03十分検討はしていませんが、いちおう試してみました。
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のサクサク動く様には改めて感心しました。
0091ごろ
2010/06/25(金) 13:21:23Rで処理するよりも断然早かったです(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
エクセルのマクロでした。
0092ごろ
2010/06/27(日) 08:18:06知らないことも書いてあって面白い。
http://statamemo.jugem.jp/
0093ごろ
2010/06/27(日) 08:27:10stataで外れ値の扱い
0094ごろ
2010/06/27(日) 08:42:34この意見もまだしっかり読んでいないが大切そう。
http://www.stata.com/statalist/archive/2007-06/msg00272.html
0095132人目の素数さん
2010/06/28(月) 21:56:51stataのコード、大変参考になりました。
Excelのマクロはまだ勉強を始めたばかりなので分からないのですが、
この場合はキーとなる変数はどのように扱っているのでしょうか?
stataの良い点として、二つのデータがマッチしたかどうかをmergeの値で知ることができますが、
Excelでも分かる様になっているのでしょうか?
Excelのマクロで全部完成できるなら良いですね。
0096ごろ
2010/06/29(火) 00:57:54コメントありがとうございます。
本当は、Excelマクロを使いたくなかった(※1)ので、私はRに走ってしまいました。
しかし、今回Excelマクロを試してみたところ、この方法が今のところ最善だという結論に至りました(※2)。
私もExcelマクロはまだ十分理解していませんが、このスクリプトのポイントは、
Sheets(Array(i))でArrayを使うことでシート名に依存しないということでしょうか。
後は、for だけで、たいしたひねりもありません。
本当は保存場所を対話的に処理できれば使いやすいと思います。
※1:理由はいろいろありますが、例えばMacだと最新のExcelではマクロが使えないなど。
※2:Rで処理すると変数名を大文字から小文字に変更が必要だったり、文字列データを勝手に
カテゴリ変数に変更してしまうなどがあり、余計な処理が増えてしまった。
0097ごろ
2010/07/02(金) 05:53:15コンピュータ言語を勉強するとRとかStataへの理解も深まりますね。
0098132人目の素数さん
2010/07/02(金) 21:45:420100ごろ
2010/07/14(水) 12:12:57Stataの`i'という変数名の指定法はどこから来たものなんだろう。
独自のものなのかな?
0101ごろ
2010/07/16(金) 14:48:44Stataは例えばlist出力など自動で5項目毎に線が入る。
見やすくて良いがエクセルシートなどに貼り付けるとき邪魔。
,separator(0)
とオプション指定をしてやるとセパレーターがなくなる。
0102ごろ
2010/07/20(火) 07:34:560103ごろ
2010/07/20(火) 11:57:59オプションでscheme(s1mono)
だった。
0104ごろ
2010/07/23(金) 23:29:310105ごろ
2010/07/28(水) 10:46:05質問:不均一なパネルデータ(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でなくてもいいかも).
解決するとイイね。
マイケル
0106ごろ
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)っていいのかな?
それともまだ間違っている?
ジン
0107ごろ
2010/07/28(水) 11:04:06FAQ (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の改行制限があるのと、
結果のまるまるコピペも良くないなと思いこのへんでやめておきます。
この後は、ジンが何度か変数のスケールを変えてやっていますが、やはり問題は解決していません。
0108ごろ
2010/07/29(木) 06:16:01name(`y=0',replace)
グラフに名前を付けるときに名前に=などが入っているとエラーになる。
ただの文字列とするためには`'の二つでくくると良いみたい。
グラフに線などを加えたい。
function y = f(x), ra(この値から この値まで) clpat(dash)
f(x)に好きな関数、ra=rangeにxの数値や変数でグラフを描く範囲を指定
0109ごろ
2010/07/29(木) 09:39:24グラフに名前を付けるときに名前に=などが入っているとエラーになる。
ただの文字列とするためには`'の二つでくくると良いみたい。
これは嘘でした。
ただ単にエラーメッセージの出ないエラーで無視されているだけでした。
何か解決案があったらまた書き込みます。
0110132人目の素数さん
2010/07/31(土) 01:30:530112132人目の素数さん
2010/08/01(日) 07:46:18オレは見てるぜ。
嫌なら来なきゃいいだろ。
0113ごろ
2010/08/01(日) 16:23:45泣いて喜んでいます。もう少し精進してレベルの高い情報が発言できるようになりたいです。
ついでに、マニュアルレベルですが、
twowayでグラフを重ねて描くとき、( )( )で書き連ねるのも良いですが、
|| で描くと結構読みやすく書けるかも。
■ このスレッドは過去ログ倉庫に格納されています