全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1776 3
2012-02-23
         刚入手mata , 有下面的算法
         mata
         : st_view(x=. , . , ("weight","foreign","cons"))
         : st_view(y=. , . , "mpg")
         : b=invsym(x'*x)*x' *y
         : e=y-x*b
         : k=cols(x)
         : s2=(e:^2)/[rows(x)-k]
         : n=rows(x)
         : s2=(e' * e)/(n-k)     这里有个问题,为什么我用s2=(e:^2)/[rows(x)-k] 或者是 : s2=(e'*e)/[rows(x)-k] 就要报错 QQ截图未命名.png
       如果想计算robust方差 输入
        xe=x:*e
        Vr=invsym(x'*x)*(xe'*xe)*invsym(x'*x)rows(x)/[rows(x)-k]
QQ截图未命名.png
   诚心 请教错误原因

二维码

扫码加我 拉你入群

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

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

全部回复
2012-2-23 16:02:13
  ps:我现在的版本是10.1
二维码

扫码加我 拉你入群

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

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

2012-2-23 18:13:43
您第一个可能的错误,s2=(e:^2)/[rows(x)-k]  其中(e:^2)分子,这算出来是一个matrix,分母按理因是一个元素的矩阵,或者可视为纯量scalar,但您却用了中括号,总之这是矩阵维度阵列的不一致,mata看不懂您的表达。
您第二个可能的错误,s2=(e'*e)/[rows(x)-k] ,分子这算出来是一个元素的matrix,所以表达没问题,但您分子还是一样,犯地错误是用了中括号[],正确的方式是s2=(e'*e)/(rows(x)-k)

后面的我不想讲了! 要仔细阿! 您慢慢分子分母一个一个测,不要觉得电脑或软件很聪明,式子太复杂
建议您拆解,就能看出为什么罗!

以下是我帮您侦测的结果,
sysuse auto
mata: st_view(X=.,.,("price","mpg"))
mata: st_view(y=. , . , "turn")
mata: b=invsym(X'*X)*X'*y
mata: e=y-X*b
mata: k=cols(X)
mata: s2=(e' * e)/(n-k)
mata: s3=(e:^2)/[rows(X)-k]
mata: s3_1=(e:^2)
mata: s3_2=rows(X)-k
mata: s4=(e'*e)/[rows(X)-k]
mata: s4_1=(e'*e)
mata: s4_new=(e'*e)/(rows(X)-k)
mata: s4_new  

祝福您学习愉快!

最后,建议您学习Stata12的新mata指令,如putmata与getmata,调用上会方便许多!
二维码

扫码加我 拉你入群

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

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

2012-2-24 00:26:39
    老师一句话指点迷津,胜过自己瞎忙一个下午,真的要自己下功夫了
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群