楼主: fd2008
776 2

[编程问题求助] 求帮忙校对下代码是否有问题 [推广有奖]

  • 2关注
  • 10粉丝

贵宾

教授

22%

还不是VIP/贵宾

-

威望
1
论坛币
95113 个
通用积分
184.4958
学术水平
22 点
热心指数
23 点
信用等级
21 点
经验
17540 点
帖子
403
精华
0
在线时间
1265 小时
注册时间
2005-12-9
最后登录
2024-9-16

1000论坛币
  1. local n1 = 100 // number of individuals
  2. local n2 = 10 // number of periods
  3. local n = `n1'*`n2'
  4. set obs `n'
  5. quietly gen N = 0
  6. *设定N个 个体
  7. forvalues i = 1(1)`n1'{
  8. local k = `n2'*(`i'-1)+1
  9. local s = `n2'*`i'
  10. quietly replace N = `i' in `k'/`s'
  11. }
  12. *设定panel data期数
  13. egen T = seq(), from(1)to(`n2')

  14. xtset N T



  15. * part II: to obtain unobserved individual-specific effect a

  16. gen a = 0

  17. forvalues j= 1(1)`n1'{
  18. local k = `n2'*(`j'-1)+1
  19. local s = `n2'*`j'
  20. local b = invnormal(uniform())
  21. quietly replace a = `b' in `k'/`s'
  22. }

  23. * part III: to obtain Xit.

  24. * correlation coefficient between X and a: T
  25. * 解释变量X与个体效应a相关
  26. local Tao = 0.5
  27. gen w = invnormal(uniform())
  28. local t = sqrt(1 - `Tao'^2)
  29. gen X = `Tao'*a + `t'*w

  30. * part IV: draw U

  31. *产生随机扰动项u
  32. gen u = invnormal(0.5*uniform()+0.5)

  33. * to generate exogenous variabe z

  34. gen z1 = rnormal(10,100)
  35. gen z2 = rnormal(5,60)
  36. label var z1 "exogenous regressors"
  37. label var z2 "exogenous regressors"

  38. * to generate x with measurement e
  39. gen e = invnormal(uniform())
  40. gen x = X + e


  41. * part V: to generate y, X有测量偏误e

  42. gen y = a + X + z1 + z2 + u







  43. * ancillary matrix

  44. matrix one1 = J(`n2',1,1) // to generate a vector whose elements are 1.
  45. mat one1_t = one1'
  46. mat A`n2' = I(`n2') - (1/`n2')*one1*one1_t
  47. mat MR_1 = vec(A`n2')
  48. mat MR = I(`n2'^2) - (1/(`n2'-1))*MR_1*MR_1'


  49. mat define M = J(`n2'^2 + 2,`n2'^2 + 2,0)
  50. mat M[1,1] = MR
  51. mat M[`n2'^2 + 1,`n2'^2 + 1] = I(2)

  52. * krocker product of a part of B

  53. forvalues i = 1(1)`n1'{
  54. mkmat x if N==`i',matrix(x`i')
  55. mat x`i'I = x`i'#I(`n2')
  56. }


  57. *Zi

  58. forvalues j = 1(1)`n1'{
  59. mkmat z1 z2 if N == `j', matrix(Z_`j')
  60. mat Z_`j'trans =Z_`j''
  61. }

  62. * construction of Bi

  63. forvalues i = 1(1)`n1' {

  64. mat define B`i' = J(`n2'^2 + 2,`n2',0)
  65. mat B`i'[1,1] = x`i'I
  66. mat B`i'[`n2'^2 + 1,1] = Z_`i'trans
  67. }


  68. * within transformation
  69. egen y_meanw = mean(y), by(N)
  70. egen x_meanw = mean(x), by(N)

  71. egen z1_meanw = mean(z1), by(N)
  72. egen z2_meanw = mean(z2), by(N)
  73. gen dy = y - y_meanw
  74. gen dx = x - x_meanw
  75. gen dz1 = z1 - z1_meanw
  76. gen dz2 = z2 - z2_meanw


  77. *krocker product of a part of C

  78. forvalues j = 1(1)`n1'{
  79. mkmat dx if N == `j' ,matrix(dx`j')

  80. mkmat dz1 if N == `j', matrix(dz1`j')
  81. mkmat dz2 if N == `j', matrix(dz2`j')

  82. mat_capp xz`j'_ : dx`j' dz1`j'
  83. mat_capp xz`j' : xz`j'_ dz2`j'
  84. }

  85. forvalues i = 1(1)`n1'{
  86. mat C`i'=B`i'*xz`i'
  87. }

  88. * construction of dn

  89. forvalues j = 1(1)`n1'{

  90. mkmat dy if N == `j', matrix(dy`j')
  91. mat d`j' = B`j'*dy`j'
  92. }
  93. ***************************

  94. * mean of C and d


  95. local m = 1
  96. mat dddd = J(`n2'^2 + 2, 1, 0)
  97. while `m' <= `n1'{
  98. mat dddd = d`m' + dddd
  99. local m = `m' + 1
  100. }

  101. mat d_mean = (1/`n1')*dddd
  102. quietly mat list d_mean


  103. mat b1 = J(`n2'^2 + 2 , 3 ,0)

  104. local n = 1
  105. while `n' <= `n1'{

  106. mat b1 = C`n' + b1

  107. local n = `n' + 1

  108. }

  109. mat C_mean = (1/`n1')*b1



  110. * computation of a first step consistent GMM estimator

  111. * matrix C_mean_trans = C_mean'



  112. matrix lamda1 = inv(C_mean'*M*C_mean)*C_mean'*M*d_mean

  113. mat list lamda1

  114. * its weighting matrix

  115. matrix dc = J(`n2'^2 + 2,1,0)

  116. forvalues i = 1(1)`n1'{
  117. matrix dc`i' = J(`n2'^2 + 2,1,0)
  118. matrix dc`i' = d`i' - C`i'*lamda1
  119. }

  120. mat W1 = J(`n2'^2 + 2, `n2'^2 + 2 , 0)

  121. local j = 1

  122. while `j' <= `n1'{

  123. mat W1 = dc`j'*dc`j'' + W1

  124. local j = `j' + 1
  125. }

  126. mat W_hat = (1/`n1')*W1




  127. mat lamda2 = inv(C_mean'*M*inv(W_hat)*M*C_mean)*C_mean'*M*inv(W_hat)*M*d_mean

  128. mat list lamda2
复制代码
附件在另一个帖子中:https://bbs.pinggu.org/forum.php?mod=viewthread&tid=3670626&page=1&extra=#pid29624369

不知为何,附件不可以重复上传!

如上面附件,毕业设计老师让根据这篇文献的内容做一个蒙特卡罗模拟。我的主要内容 是根据文献第三部门的模型做的,即 面板数据的一个解释变量存在测量偏误的情况下,如何通过GMM方法得到有测量偏误解释变量的一致估计量(consistent estimator)。但是,我按照文献中的两步法得到的估计量只有外生变量的系数是一致的,有测量偏误的系数差距比较大。后来我用STATA验证了文献中推导用到的假设,都基本没问题。所以想请STATA高手帮我看看是不是代码存在问题?

谢谢!


关键词:求帮忙 Construction Individuals coefficient correlation
沙发
ywh19860616 发表于 2015-4-19 09:46:29 |只看作者 |坛友微信交流群
* part V: to generate y, X有测量偏误e

gen y = a + X + z1 + z2 + u

这里是大X还是小x?

使用道具

藤椅
fd2008 发表于 2015-4-19 10:32:37 |只看作者 |坛友微信交流群
ywh19860616 发表于 2015-4-19 09:46
* part V: to generate y, X有测量偏误e

gen y = a + X + z1 + z2 + u
谢谢回复!

是大X,因为大X是可以观测到的,小x是不可观测的真实值,e是他们之间的测量偏误。附件的文献就是处理怎么得到有测量偏误系数的一致估计。结果应该是在1附近,但是我编写的程序结果都在0.4左右。

使用道具

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

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

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

GMT+8, 2024-9-19 02:38