请选择 进入手机版 | 继续访问电脑版
楼主: rictan
10082 22

[编程问题求助] 请教大家,山大陈强老师在教材中编写的程序,我运行错误。 [推广有奖]

教授

27%

还不是VIP/贵宾

-

威望
0
论坛币
1809 个
通用积分
4.6118
学术水平
2 点
热心指数
9 点
信用等级
1 点
经验
22940 点
帖子
592
精华
0
在线时间
1603 小时
注册时间
2007-4-19
最后登录
2022-5-20

rictan 发表于 2013-9-5 14:58:27 |显示全部楼层 |坛友微信交流群
10论坛币
请教大家,山大陈强老师在教材中编写了下面的一个程序利用聚类稳健的标准差来进行hausman检验,我尝试了一下老是提示错误,敬请指点!非常感谢!!

quietly xtreg rca3 pro_adj human investment2 journal3 lnwage_2005 lnresourcesrent institution2 train2_10000 roads2_10000 phone2_10000 internet mobile power banking2,re
scalar theta=e(theta)

global yandxforhausman rca3 pro_adj human investment2 journal3 lnwage_2005 lnresourcesrent institution2 train2_10000 roads2_10000 phone2_10000 internet mobile power banking2
sort reporter
源程序:
foreach x of varlist $yandxforhausman{
by reporter: egen mean`x' =mean(`x')
              gen md`x'=`x`-mean`x'
              gen red`x'=`x'-theta*mean`x'
   }

quietly xtreg redrca3 redpro_adj redhuman redinvestment2 redjournal3 redlnwage_2005 redlnresourcesrent redinstitution2 redtrain2_10000 redroads2_10000 redphone2_10000 redinternet redmobile redpower redbanking2 mdpro_adj mdhuman mdinvestment2 mdjournal3 mdlnwage_2005 mdlnresourcesrent mdinstitution2 mdtrain2_10000 mdroads2_10000 mdphone2_10000 mdinternet mdmobile mdpower mdbanking2, vce (cluster reporter)

test mdpro_adj mdhuman mdinvestment2 mdjournal3 mdlnwage_2005 mdlnresourcesrent mdinstitution2 mdtrain2_10000 mdroads2_10000 mdphone2_10000 mdinternet mdmobile mdpower mdbanking2


错误提醒:

. quietly xtreg rca3 pro_adj human investment2 journal3 lnwage_2005 lnresourcesrent institution2
>  train2_10000 roads2_10000 phone2_10000 internet mobile power banking2,re

.
. scalar theta=e(theta)
type mismatch
r(109);

.
.
.
. global yandxforhausman rca3 pro_adj human investment2 journal3 lnwage_2005 lnresourcesrent ins
> titution2 train2_10000 roads2_10000 phone2_10000 internet mobile power banking2

.
. sort reporter

.
.  
. foreach x of varlist $yandxforhausman{
  2.
.  by reporter: egen mean`x' =mean(`x')
  3.
.               gen md`x'=`x`-mean`x'
  4.
.               gen red`x'=`x'-theta*mean`x'
  5.
.    }
`x` invalid name
r(198);

.
.  
. quietly xtreg redrca3 redpro_adj redhuman redinvestment2 redjournal3 redlnwage_2005 redlnresou
> rcesrent redinstitution2 redtrain2_10000 redroads2_10000 redphone2_10000 redinternet redmobile
>  redpower redbanking2
variable redrca3 not found
r(111);

.
.                         mdpro_adj mdhuman mdinvestment2 mdjournal3 mdlnwage_2005 mdlnresources
> rent mdinstitution2 mdtrain2_10000 mdroads2_10000 mdphone2_10000 mdinternet mdmobile mdpower m
> dbanking2, vce (cluster reporter)
unrecognized command:  mdpro_adj
r(199);

. .   
.
. test mdpro_adj mdhuman mdinvestment2 mdjournal3 mdlnwage_2005 mdlnresourcesrent mdinstitution2
>  mdtrain2_10000 mdroads2_10000 mdphone2_10000 mdinternet mdmobile mdpower mdbanking2
mdpro_adj not found
r(111);


最佳答案

蓝色 查看完整内容

由于你的数据是非平衡面板,导致theta不是一个单一的值,而是一个分布函数 e(theta)不在是一个scalar了,而是matrix 矩阵,存储了几个关键的theta的值。 因此,你用原来的命令无法赋值。 . xtreg rca3 pro_adj human investment2 journal3 lnwage_2005 lnresourcesrent institution2 train2_10000 roads2 > _10000 phone2_10000 internet mobile power banking2,re theta Random-effects GLS regression ...
关键词:运行错误 unrecognized Institution Investment recognized internet mobile 标准差 源程序 power
蓝色 发表于 2013-9-5 14:58:28 |显示全部楼层 |坛友微信交流群
由于你的数据是非平衡面板,导致theta不是一个单一的值,而是一个分布函数
e(theta)不在是一个scalar了,而是matrix 矩阵,存储了几个关键的theta的值。
因此,你用原来的命令无法赋值。



. xtreg rca3 pro_adj human investment2 journal3 lnwage_2005 lnresourcesrent institution2 train2_10000 roads2
> _10000 phone2_10000 internet mobile power banking2,re theta

Random-effects GLS regression                   Number of obs      =       321
Group variable: reporter                        Number of groups   =        36

R-sq:  within  = 0.2719                         Obs per group: min =         7
       between = 0.2733                                        avg =       8.9
       overall = 0.2717                                        max =         9

                                                Wald chi2(14)      =    114.26
corr(u_i, X)   = 0 (assumed)                    Prob > chi2        =    0.0000

------------------- theta --------------------
  min      5%       median        95%      max
0.9100   0.9158     0.9206     0.9206   0.9206

---------------------------------------------------------------------------------
           rca3 |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
----------------+----------------------------------------------------------------
        pro_adj |  -.0056251   .0035549    -1.58   0.114    -.0125925    .0013424
          human |  -18.87636   9.411122    -2.01   0.045    -37.32182   -.4308994
    investment2 |    10.0031   14.26139     0.70   0.483    -17.94872    37.95492
       journal3 |    .019662     .01352     1.45   0.146    -.0068368    .0461608
    lnwage_2005 |   -306.689   252.0772    -1.22   0.224    -800.7513    187.3732
lnresourcesrent |  -284.8157   118.1214    -2.41   0.016    -516.3294     -53.302
   institution2 |   1215.538   166.6293     7.29   0.000     888.9508    1542.126
   train2_10000 |   .5679309   1.818069     0.31   0.755    -2.995419    4.131281
   roads2_10000 |   .0932056   .0417015     2.24   0.025     .0114722    .1749389
   phone2_10000 |   -.000161   .0007364    -0.22   0.827    -.0016043    .0012824
       internet |   .1264485   .0730626     1.73   0.084    -.0167516    .2696486
         mobile |   .0117274    .034493     0.34   0.734    -.0558776    .0793325
          power |  -.0743867   .0639151    -1.16   0.244     -.199658    .0508845
       banking2 |   2.010544   4.237543     0.47   0.635    -6.294887    10.31598
          _cons |    4837.56   2267.667     2.13   0.033     393.0143    9282.105
----------------+----------------------------------------------------------------
        sigma_u |  2915.2261
        sigma_e |  696.61165
            rho |  .94598419   (fraction of variance due to u_i)
---------------------------------------------------------------------------------


*回归结束,用下面的命令可以看到一些保留的值。
*下面蓝色标出的部分就是theta的值
. ereturn list

scalars:
               e(rank) =  15
               e(df_m) =  14
               e(chi2) =  114.2622510945879
                  e(p) =  8.30623399432e-18
            e(sigma_u) =  2915.226080767561
            e(sigma_e) =  696.6116478137005
              e(sigma) =  2997.300600516591
                e(rho) =  .9459841938104913
               e(rmse) =  710.567035530356
                  e(N) =  321
               e(Tbar) =  8.898479646885729
               e(Tcon) =  0
                e(N_g) =  36
              e(g_min) =  7
              e(g_avg) =  8.916666666666666
              e(g_max) =  9
           e(thta_min) =  .9100491333671547
             e(thta_5) =  .9158160864982854
            e(thta_50) =  .9205993775518484
            e(thta_95) =  .9205993775518484

               e(r2_w) =  .2718741999732975
               e(r2_b) =  .2732543752521467
               e(r2_o) =  .2716755391342357
           e(thta_max) =  .9205993775518484

macros:
            e(cmdline) : "xtreg rca3 pro_adj human investment2 journal3 lnwage_2005 lnresourcesrent inst.."
                e(cmd) : "xtreg"
       e(marginsnotok) : "E U UE SCore STDP XBU"
            e(predict) : "xtrere_p"
              e(model) : "re"
               e(ivar) : "reporter"
                e(vce) : "conventional"
             e(depvar) : "rca3"
           e(chi2type) : "Wald"
         e(properties) : "b V"

matrices:
                  e(b) :  1 x 15
                  e(V) :  15 x 15
              e(theta) :  1 x 5
               e(VCEf) :  15 x 15
                 e(bf) :  1 x 15

functions:
             e(sample)   






*对样本进行描述统计
*    internet |       323  
*    banking2 |       322  
*这两个变量有问题,如果剔除这两个变量,就是平衡面板了,原先的命令就可以用了





. sum rca3 pro_adj human investment2 journal3 lnwage_2005 lnresourcesrent institution2 train2_10000 roads2_1
> 0000 phone2_10000 internet mobile power banking2

    Variable |       Obs        Mean    Std. Dev.       Min        Max
-------------+--------------------------------------------------------
        rca3 |       324    8566.545    3699.121     237.69   15848.18
     pro_adj |       324    26822.86     18793.2    6251.42   141935.8
       human |       324    48.13435    23.61037       2.06      95.07
investment2 |       324    22.68725    5.753438      11.69      57.71
    journal3 |       324    31791.23    37283.21        179     123437
-------------+--------------------------------------------------------
lnwage_2005 |       324    8.798781    1.422244   5.687755    11.4656
lnresource~t |       324    9.466232    1.595493   6.499922   13.70592
institution2 |       324    6.872222    .9987763        4.2        8.7
train2_10000 |       324     276.642    267.1823          4        905
roads2_10000 |       324    7512.855    7803.087        437      40324
-------------+--------------------------------------------------------
phone2_10000 |       324    320807.6    470207.2       4716    2936070
    internet |       323    3052.133    2736.139       14.8       9060
      mobile |       324    5997.938    3822.962       21.2      13900
       power |       324    5545.171    5655.268     342.78    31848.6
    banking2 |       322    63.50857    48.34157       4.12     208.14


*如果不剔除那两个变量
*加入用 e(thta_max) 代替原来的e(theta),则后面就可以运行

. scalar theta= e(thta_max)

.
. global yandxforhausman rca3 pro_adj human investment2 journal3 lnwage_2005 lnresourcesrent institution2 tr
> ain2_10000 roads2_10000 phone2_10000 internet mobile power banking2

. sort reporter


*这里的错误时引号的问题,
.
. foreach x of varlist $yandxforhausman{
  2. by reporter: egen mean`x' =mean(`x')
  3.               gen md`x'=`x'-mean`x'
  4.               gen red`x'=`x'-theta*mean`x'
  5.    }
(1 missing value generated)
(1 missing value generated)
(2 missing values generated)
(2 missing values generated)

.
. quietly xtreg redrca3 redpro_adj redhuman redinvestment2 redjournal3 redlnwage_2005 redlnresourcesrent red
> institution2 redtrain2_10000 redroads2_10000 redphone2_10000 redinternet redmobile redpower redbanking2 md
> pro_adj mdhuman mdinvestment2 mdjournal3 mdlnwage_2005 mdlnresourcesrent mdinstitution2 mdtrain2_10000 mdr
> oads2_10000 mdphone2_10000 mdinternet mdmobile mdpower mdbanking2, vce (cluster reporter)

.
. test mdpro_adj mdhuman mdinvestment2 mdjournal3 mdlnwage_2005 mdlnresourcesrent mdinstitution2 mdtrain2_10
> 000 mdroads2_10000 mdphone2_10000 mdinternet mdmobile mdpower mdbanking2

( 1)  mdpro_adj = 0
( 2)  mdhuman = 0
( 3)  mdinvestment2 = 0
( 4)  mdjournal3 = 0
( 5)  mdlnwage_2005 = 0
( 6)  mdlnresourcesrent = 0
( 7)  mdinstitution2 = 0
( 8)  mdtrain2_10000 = 0
( 9)  mdroads2_10000 = 0
(10)  mdphone2_10000 = 0
(11)  mdinternet = 0
(12)  mdmobile = 0
(13)  mdpower = 0
(14)  mdbanking2 = 0

           chi2( 14) =   97.31
         Prob > chi2 =    0.0000



使用道具

蓝色 发表于 2013-9-5 22:26:03 |显示全部楼层 |坛友微信交流群
提供陈强的数据啊

使用道具

蓝色 发表于 2013-9-5 22:26:37 |显示全部楼层 |坛友微信交流群
请提供数据

使用道具

rictan 发表于 2013-9-5 23:47:31 |显示全部楼层 |坛友微信交流群
蓝色 发表于 2013-9-5 22:26
请提供数据
版主能否提供邮箱,我发给您,谢谢了!

使用道具

rictan 发表于 2013-9-6 04:27:09 |显示全部楼层 |坛友微信交流群
蓝色 发表于 2013-9-5 22:26
请提供数据
数据已经提供在附件,烦请楼主看看到底是什么问题,非常感谢!

renda.rar

15.2 KB

使用道具

我也做到这,出现了这个问题
scalar theta=e(theta)
type mismatch
r(109);同求问怎么回事

不过楼主的第二个错误是输错了标点符号了
    gen md`x'=`x`-mean`x'
这个第二个符号错了

使用道具

玄一无相 在职认证  学生认证  发表于 2013-9-6 22:39:24 |显示全部楼层 |坛友微信交流群
前后符号是不一样的

使用道具

rictan 发表于 2013-9-6 22:47:53 |显示全部楼层 |坛友微信交流群
小猫咪517 发表于 2013-9-6 11:54
我也做到这,出现了这个问题
scalar theta=e(theta)
type mismatch
我也还是这个问题。

使用道具

rictan 发表于 2013-9-6 23:53:33 |显示全部楼层 |坛友微信交流群
蓝色 发表于 2013-9-6 23:49
由于你的数据是非平衡面板,导致theta不是一个单一的值,而是一个分布函数
e(theta)不在是一个scalar了, ...
是什么原因造成的呢?请不吝指点啊!

使用道具

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

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

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

GMT+8, 2024-3-28 20:13