楼主: auv
1516 1

[编程问题求助] 人大陈波stata模拟分析的一个例子 如何写出来代码? [推广有奖]

  • 15关注
  • 1粉丝

副教授

29%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0.7223
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
8668 点
帖子
273
精华
0
在线时间
1211 小时
注册时间
2009-5-7
最后登录
2024-8-14

楼主
auv 发表于 2015-11-23 17:33:20 |只看作者 |坛友微信交流群|倒序 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
请各位大神看看,哪个代码是对的?谢谢!


生日问题:只要一间屋里有23个人,则至少有两人同一天生日的概率会超过1/2。试模拟两个班60名学生同一天过生日的概率。


1.陈波的代码:
  1. captu prog drop birth
  2. prog birth
  3. drop _all
  4. set obs 60
  5. tempvar y
  6. gen `y'= int(365* uniform())
  7. sort `y'
  8. scalar z=0
  9. forvalues i=1/59 {
  10. if `y'[`i']==`y'[`i'+1] {
  11. scalar z=1
  12. continue, break
  13. }
  14. }
  15. end
  16. simulate "birth" z,reps(100)
  17. sum
复制代码
2.感觉陈波的不太对,我觉得问题在continue,break那里。改进后的代码:
  1. captu prog drop birth
  2. prog birth
  3. drop _all
  4. set obs 60
  5. tempvar y
  6. gen `y'= int(365* uniform())
  7. sort `y'
  8. scalar z=1
  9.         forvalues i=1/59 {
  10.                                 if `y'[`i']!=`y'[`i'+1] {
  11.                                                         scalar z=0
  12.                                                         continue, break
  13.                                          }
  14. }
  15. end
  16. simulate "birth" z,reps(100)
  17. sum
复制代码
3.使用mata编写的代码:
  1. mata
  2. mata clear
  3. A=round(365*uniform(100,60))  
  4. B=J(100,1,1)
  5. for (j=1;j<=rows(A);j++) {   
  6.         for (i=1;i<cols(A);i++) {
  7.                 if (A[j,i]!=A[j,i+1]){
  8.                 B[j,1]=0
  9.                 break
  10.                 }
  11.         }
  12. }
  13. mean(B)
  14. end
复制代码












二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Stata 模拟分析 tata 如何写 forvalues 如何

沙发
auv 发表于 2015-11-24 11:16:28 |只看作者 |坛友微信交流群
没有人回答么。。。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-9-19 16:39