[程式] stata產生隨機變數by group

看板Statistics作者 (我要什麼?)時間9年前 (2014/09/29 14:59), 9年前編輯推噓3(308)
留言11則, 3人參與, 最新討論串1/1
[軟體程式類別]: stata [程式問題]: generate random number at group level [軟體熟悉度]: 新手(不到1個月) [問題敘述]: 我有一個panel data set 現在需要產生一個新變數是random number 但是只隨著group level改變 比方說 我有一欄叫group 其值為1,2,3,.... 前一百筆資料group=1, 101~200筆資料group=2,....依此類推 我要給每一筆資料多加一個欄位是random number 但是每一個group 給予相同的random number [程式範例]: 我試著寫: by group: gen v=rnormal(0,1) 但是這樣產生的新變數v 在同一個group下也都不一樣 為什麼會這樣? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 209.6.159.42 ※ 文章網址: http://www.ptt.cc/bbs/Statistics/M.1411973977.A.691.html ※ 編輯: Linethan (209.6.159.42), 09/29/2014 15:00:15

09/30 01:08, , 1F
by的指令是用在每一個group之下重複一樣的command
09/30 01:08, 1F

09/30 01:08, , 2F
所以就變成每一群之下都產生一組random number
09/30 01:08, 2F

09/30 09:08, , 3F
是的 所以我沒辦法用by 給每一個group "一個"隨機亂數
09/30 09:08, 3F

09/30 09:08, , 4F
應該怎麼改才可以呢?
09/30 09:08, 4F

09/30 11:09, , 5F
你可以先產生前100筆random number
09/30 11:09, 5F

09/30 11:10, , 6F
gen v = rnormal(0,1) in 1/100
09/30 11:10, 6F

09/30 11:11, , 7F
之後的第101筆跟第1筆一樣, 102跟2一樣, ...
09/30 11:11, 7F

09/30 11:11, , 8F
replace v = v[_n-100] if missing(v)
09/30 11:11, 8F

09/30 11:12, , 9F
這是我能想到的方法XD 感覺應該有高級一點的做法
09/30 11:12, 9F

09/30 19:16, , 10F
by group, sort: generate v = rnormal(0,1) if _n == 1
09/30 19:16, 10F

09/30 19:16, , 11F
by group: replace v = v[1]
09/30 19:16, 11F
文章代碼(AID): #1KAGDPQH (Statistics)