楼主: ipony
4540 29

一道非常有意思的stata编程模拟题~求模拟程序 [推广有奖]

11
ipony 发表于 2012-8-22 13:37:17 |只看作者 |坛友微信交流群
voodoo 发表于 2012-8-22 11:53
的Stata实现:
clear
local nGG 30
请高手帮我看看,我的理解对不对,还有我的一些疑问帮忙给解答一下,万分感谢!
clear
local nGG 30//生成local macro,定义名称为nGG,内容为30
// P(k)公式计算如下:
set obs `=`nGG'-1'//这个我不太懂,之前都是set obs 30(数字),这里是从30倒叙循环的意思吗?
gen k = _n//生成变量k,k=1,2,…,n
gen s = 1/k//生成变量s=1/k,就是公式中的1/(i-1)
gsort –k//这个是对k按照降序排列吗?为什么加个符号啊?
gen sums = sum(s)//产生一个变量sums,为变量s的求和函数
gen pk = k/`nGG' * sums//k/`nGG’就是公式中的k/n,sums是求和公式

// 列出最大pk及其所对应的k(这里为什么是最大的pk呢?)
sort pk//对pk按照从小到大排序
list k pk in L//列示出k pk,请问那个in L是啥意思啊?
经常帮助众生,你的福报不求自来!

使用道具

12
voodoo 发表于 2012-8-22 13:42:04 |只看作者 |坛友微信交流群
clear
local nGG 30  //  生成local macro,定义名称为nGG,内容为30
// P(k)公式计算如下:
set obs `=`nGG'-1'  //  事实上是set obs 29,但允许修改local nGG 30,从而使得程序更具通用性
gen k = _n  //  生成变量k,k=1,2,…,n
gen s = 1/k //  生成变量s=1/k,就是公式中的1/(i-1)
gsort –k  // 只有加个-号才能降序排序啊

gen sums = sum(s) //  产生一个变量sums,为变量s的求和函数
gen pk = k/`nGG' * sums  //  k/`nGG’就是公式中的k/n, sums是求和之后的变量

// 列出最大pk及其所对应的k
sort pk  // 对pk按照从小到大排序
list k pk in L  // in L代表最后一个观测,sort后就是pk取最大值的观测

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
ipony + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

巫毒上传,必属佳品!
坛友下载,三思后行!

使用道具

13
ipony 发表于 2012-8-22 13:47:33 |只看作者 |坛友微信交流群
voodoo 发表于 2012-8-21 23:57
不知我模拟程序中存在什么问题(我没有太细看题目,那个字体看起来很难受,)。
我计算出来的 ...
为啥我把你的程序复制下来,计算出来的k=0呢?pk=0?两个都是0,怎么
经常帮助众生,你的福报不求自来!

使用道具

14
voodoo 发表于 2012-8-22 13:48:57 |只看作者 |坛友微信交流群
ipony 发表于 2012-8-22 13:47
为啥我把你的程序复制下来,计算出来的k=0呢?pk=0?两个都是0,怎么
doedit
// copy & paste
// ctrl+A -> ctrl+d

// 或直接下载附件 sim.zip (671 Bytes) 本附件包括:
  • sim.do
-> 解压缩 -> 打开执行

巫毒上传,必属佳品!
坛友下载,三思后行!

使用道具

15
ipony 发表于 2012-8-22 13:50:04 |只看作者 |坛友微信交流群
voodoo 发表于 2012-8-22 13:42
clear
local nGG 30  //  生成local macro,定义名称为nGG,内容为30
// P(k)公式计算如下:
原来如此,真是多谢了,又学到了好多知识,给你好评,你的程序我跑出来了,k=12,pk=0.1294
经常帮助众生,你的福报不求自来!

使用道具

16
voodoo 发表于 2012-8-22 13:52:48 |只看作者 |坛友微信交流群
ipony 发表于 2012-8-22 13:50
原来如此,真是多谢了,又学到了好多知识,给你好评,你的程序我跑出来了,k=12,pk=0.1294

见9楼修改后的程序。
巫毒上传,必属佳品!
坛友下载,三思后行!

使用道具

17
ipony 发表于 2012-8-22 13:54:26 |只看作者 |坛友微信交流群
voodoo 发表于 2012-8-22 13:52
见9楼修改后的程序。
嗯,好的,强人啊!
经常帮助众生,你的福报不求自来!

使用道具

18
ipony 发表于 2012-8-22 13:57:00 |只看作者 |坛友微信交流群
voodoo 发表于 2012-8-21 23:53
set more off
set seed 123456
请问现在的模拟结果接近37%吗?
经常帮助众生,你的福报不求自来!

使用道具

19
ipony 发表于 2012-8-22 14:00:15 |只看作者 |坛友微信交流群
voodoo 发表于 2012-8-22 13:48
doedit
// copy & paste
// ctrl+A -> ctrl+d
出来了,谢谢,不过这次k=10,pk=0.3821,为什么k每次都不一样呢,你算11,我一会是12,一会又是10呢?
经常帮助众生,你的福报不求自来!

使用道具

20
voodoo 发表于 2012-8-22 14:12:05 |只看作者 |坛友微信交流群
ipony 发表于 2012-8-22 14:00
出来了,谢谢,不过这次k=10,pk=0.3821,为什么k每次都不一样呢,你算11,我一会是12,一会又是10呢?
发现模拟竟然和所用Stata版本有关。
我的是用Stata 12.1,你的应该是Stata 12.0。
假如do文档最开始加上一句version 12,由于本来就有set seed 123456,我电脑运行的结果和你一样:k=10,pk=0.3821
巫毒上传,必属佳品!
坛友下载,三思后行!

使用道具

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

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

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

GMT+8, 2024-4-27 23:05