楼主: 夏目贵志
6006 16

[编程问题求助] 关于fvvarlist的问题 [推广有奖]

贵宾

已卖:483份资源

学科带头人

96%

还不是VIP/贵宾

-

威望
1
论坛币
238675 个
通用积分
17659.3894
学术水平
851 点
热心指数
971 点
信用等级
711 点
经验
759469 点
帖子
4028
精华
1
在线时间
793 小时
注册时间
2012-7-15
最后登录
2017-9-16

楼主
夏目贵志 发表于 2017-2-16 09:26:19 |AI写论文
200论坛币
问题需要的数据用如下命令生成
  1. clear
  2. set obs 15
  3. gen g = mod(_n,4)+1
  4. gen x1 = rnormal()
  5. gen x2 = rnormal()
  6. gen y = rnormal()+0.1*x1+0.1*x2
复制代码
我要估计的模型是
  1. reg y x1 i.g 2.g#c.x2
复制代码
但是这个命令输出的结果是
  1.       Source |       SS           df       MS      Number of obs   =        15
  2. -------------+----------------------------------   F(3, 11)        =      1.17
  3.        Model |  4.24932692         3  1.41644231   Prob > F        =    0.3655
  4.     Residual |  13.3267007        11  1.21151825   R-squared       =    0.2418
  5. -------------+----------------------------------   Adj R-squared   =    0.0350
  6.        Total |  17.5760276        14  1.25543055   Root MSE        =    1.1007

  7. ------------------------------------------------------------------------------
  8.            y |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
  9. -------------+----------------------------------------------------------------
  10.           x1 |   .0177673   .4204068     0.04   0.967    -.9075419    .9430765
  11.          2.g |   1.516739   .8566444     1.77   0.104    -.3687223    3.402201
  12.              |
  13.       g#c.x2 |
  14.           2  |   1.573115   2.037524     0.77   0.456    -2.911444    6.057675
  15.              |
  16.        _cons |  -.7132035   .3319455    -2.15   0.055    -1.443811    .0174036
  17. ------------------------------------------------------------------------------
复制代码
问题是结果里由i.g生成的变量只剩下了2.g。另外三个都不见了。

如果我去掉上面模型里的最后那一项
  1. . reg y x1 i.g

  2.       Source |       SS           df       MS      Number of obs   =        15
  3. -------------+----------------------------------   F(4, 10)        =      3.83
  4.        Model |  10.6372209         4  2.65930522   Prob > F        =    0.0386
  5.     Residual |  6.93880676        10  .693880676   R-squared       =    0.6052
  6. -------------+----------------------------------   Adj R-squared   =    0.4473
  7.        Total |  17.5760276        14  1.25543055   Root MSE        =      .833

  8. ------------------------------------------------------------------------------
  9.            y |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
  10. -------------+----------------------------------------------------------------
  11.           x1 |  -.2097415   .3376247    -0.62   0.548    -.9620162    .5425333
  12.              |
  13.            g |
  14.           2  |   .7720366    .678917     1.14   0.282    -.7406848    2.284758
  15.           3  |   .5551185   .6653441     0.83   0.424    -.9273606    2.037598
  16.           4  |  -1.314822   .6844013    -1.92   0.084    -2.839763    .2101191
  17.              |
  18.        _cons |  -.4407666   .5058699    -0.87   0.404    -1.567915    .6863819
  19. ------------------------------------------------------------------------------
复制代码
结果并没有任何问题。

如果我手动生成这个交互项然后放入回归
  1. . gen z = 2.g#c.x2
  2. . reg y x1 i.g z

  3.       Source |       SS           df       MS      Number of obs   =        15
  4. -------------+----------------------------------   F(5, 9)         =      3.18
  5.        Model |  11.2265684         5  2.24531369   Prob > F        =    0.0628
  6.     Residual |  6.34945919         9  .705495466   R-squared       =    0.6387
  7. -------------+----------------------------------   Adj R-squared   =    0.4380
  8.        Total |  17.5760276        14  1.25543055   Root MSE        =    .83994

  9. ------------------------------------------------------------------------------
  10.            y |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
  11. -------------+----------------------------------------------------------------
  12.           x1 |  -.1457978   .3475531    -0.42   0.685    -.9320174    .6404219
  13.              |
  14.            g |
  15.           2  |    1.19592   .8268804     1.45   0.182    -.6746137    3.066453
  16.           3  |   .5919986   .6721019     0.88   0.401    -.9284016    2.112399
  17.           4  |  -1.267043   .6920826    -1.83   0.100    -2.832643    .2985563
  18.              |
  19.            z |   1.425375   1.559519     0.91   0.385    -2.102501    4.953252
  20.        _cons |  -.4704782    .511121    -0.92   0.381    -1.626714    .6857579
  21. ------------------------------------------------------------------------------
复制代码
结果也没有任何问题!

我需要用fvvarlist因为实际的模型很复杂,而且估计完之后需要计算边际效应。只有用了fvvarlist来表示最后那个交互项,margins命令才能正确计算出边际效应。不然margins算出来的结果就是错的。

请问这个问题要怎么解决呢?还是说这个其实是Stata的bug?如果是的话也太不应该了,这样的模型应该很常见啊。当然也可能是我忽视了什么很明显的东西。总之请大家帮忙。有点着急。谢谢!

最佳答案

蓝色 查看完整内容

看看这个结果
关键词:varlist list IST ARL VaR 模型

本帖被以下文库推荐

沙发
蓝色 发表于 2017-2-16 09:26:20
夏目贵志 发表于 2017-2-16 09:33
补充一下,如果我这样做的话,结果也是不对的。我明明要求了i(2 3 4).g,但是结果里只有i(3 4).g。2.g不见了 ...
看看这个结果
  1. . sort g

  2. . list g i(  2 3 4).g ,sepby(g)

  3.      +-------------------+
  4.      |      2b.   3.   4.|
  5.      | g     g    g    g |
  6.      |-------------------|
  7.   1. | 1     0    0    0 |
  8.   2. | 1     0    0    0 |
  9.   3. | 1     0    0    0 |
  10.      |-------------------|
  11.   4. | 2     0    0    0 |
  12.   5. | 2     0    0    0 |
  13.   6. | 2     0    0    0 |
  14.   7. | 2     0    0    0 |
  15.      |-------------------|
  16.   8. | 3     0    1    0 |
  17.   9. | 3     0    1    0 |
  18. 10. | 3     0    1    0 |
  19. 11. | 3     0    1    0 |
  20.      |-------------------|
  21. 12. | 4     0    0    1 |
  22. 13. | 4     0    0    1 |
  23. 14. | 4     0    0    1 |
  24. 15. | 4     0    0    1 |
  25.      +-------------------+

  26. . list g i(1 2 3 4).g ,sepby(g)

  27.      +------------------------+
  28.      |      1b.   2.   3.   4.|
  29.      | g     g    g    g    g |
  30.      |------------------------|
  31.   1. | 1     0    0    0    0 |
  32.   2. | 1     0    0    0    0 |
  33.   3. | 1     0    0    0    0 |
  34.      |------------------------|
  35.   4. | 2     0    1    0    0 |
  36.   5. | 2     0    1    0    0 |
  37.   6. | 2     0    1    0    0 |
  38.   7. | 2     0    1    0    0 |
  39.      |------------------------|
  40.   8. | 3     0    0    1    0 |
  41.   9. | 3     0    0    1    0 |
  42. 10. | 3     0    0    1    0 |
  43. 11. | 3     0    0    1    0 |
  44.      |------------------------|
  45. 12. | 4     0    0    0    1 |
  46. 13. | 4     0    0    0    1 |
  47. 14. | 4     0    0    0    1 |
  48. 15. | 4     0    0    0    1 |
  49.      +------------------------+
复制代码

藤椅
夏目贵志 发表于 2017-2-16 09:33:48
补充一下,如果我这样做的话,结果也是不对的。我明明要求了i(2 3 4).g,但是结果里只有i(3 4).g。2.g不见了。
  1. . reg y x1 i(2 3 4).g 2.g#c.x2

  2.       Source |       SS           df       MS      Number of obs   =        15
  3. -------------+----------------------------------   F(6, 8)         =      1.68
  4.        Model |  9.79964062         6  1.63327344   Prob > F        =    0.2429
  5.     Residual |  7.77638701         8  .972048377   R-squared       =    0.5576
  6. -------------+----------------------------------   Adj R-squared   =    0.2257
  7.        Total |  17.5760276        14  1.25543055   Root MSE        =    .98593

  8. ------------------------------------------------------------------------------
  9.            y |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
  10. -------------+----------------------------------------------------------------
  11.           x1 |  -.3319691   .4611587    -0.72   0.492    -1.395403    .7314648
  12.              |
  13.            g |
  14.           3  |   .0701232   .6640987     0.11   0.919    -1.461291    1.601538
  15.           4  |  -1.973756   .9756439    -2.02   0.078    -4.223595    .2760825
  16.              |
  17.       g#c.x2 |
  18.           2  |   .1588793   1.515828     0.10   0.919    -3.336626    3.654385
  19.           3  |   .0352256   .5371882     0.07   0.949    -1.203533    1.273984
  20.           4  |  -.2074012   1.049086    -0.20   0.848    -2.626598    2.211796
  21.              |
  22.        _cons |   .0323045   .4395703     0.07   0.943    -.9813463    1.045955
  23. ------------------------------------------------------------------------------
复制代码

板凳
夏目贵志 发表于 2017-2-16 10:25:05
蓝色 发表于 2017-2-16 10:19
看看这个结果
好吧。这个我可以理解。但是如果我用reg y x1 i(1 2 3 4).g 2.g#c.x2的话,结果是
  1. .  reg y x1 i(1 2 3 4).g 2.g#c.x2

  2.       Source |       SS           df       MS      Number of obs   =        15
  3. -------------+----------------------------------   F(8, 6)         =      1.43
  4.        Model |  11.5161754         8  1.43952193   Prob > F        =    0.3424
  5.     Residual |  6.05985222         6  1.00997537   R-squared       =    0.6552
  6. -------------+----------------------------------   Adj R-squared   =    0.1955
  7.        Total |  17.5760276        14  1.25543055   Root MSE        =     1.005

  8. ------------------------------------------------------------------------------
  9.            y |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
  10. -------------+----------------------------------------------------------------
  11.           x1 |  -.0393288   .5791778    -0.07   0.948    -1.456526    1.377868
  12.              |
  13.            g |
  14.           2  |   1.357465   1.044314     1.30   0.241    -1.197878    3.912808
  15.           3  |   .7076766   .8406158     0.84   0.432    -1.349236    2.764589
  16.           4  |   -1.46131    1.08871    -1.34   0.228    -4.125287    1.202667
  17.              |
  18.       g#c.x2 |
  19.           1  |   .1891081   .8975966     0.21   0.840    -2.007232    2.385448
  20.           2  |   1.521543   1.901143     0.80   0.454    -3.130387    6.173473
  21.           3  |  -.1380634   .5830725    -0.24   0.821     -1.56479    1.288664
  22.           4  |   -.459213   1.108282    -0.41   0.693    -3.171082    2.252656
  23.              |
  24.        _cons |    -.58119   .6602166    -0.88   0.413    -2.196682    1.034302
  25. ------------------------------------------------------------------------------
复制代码
还是不对啊。我需要结果里g#c.x2下面只有一行。现在那里有四行了。。。

报纸
蓝色 发表于 2017-2-16 10:27:32
估计stata里面对因子变量的定义是统一的
既然前面已经是 i(1 2 3 4).g
那么后面的 2.g 这里也会出现4个
否则,前后冲突,软件都不知道怎么处理了

地板
夏目贵志 发表于 2017-2-16 10:31:28
蓝色 发表于 2017-2-16 10:27
估计stata里面对因子变量的定义是统一的
既然前面已经是 i(1 2 3 4).g
那么后面的 2.g 这里也会出现4个
...
那这就明显是bug了吧。。。想不出为什么这种做法是合理的。既然用户明确的指定了某个category,软件不该违背用户的明确的指示啊。

另,我试了一下指定base,fvset base 1 g,但是还是没能解决问题。不过至少list i(2 3 4).g是正确结果了
  1. . list g i2.g i3.g i4.g

  2.      +------------------------+
  3.      |      1b.   2.   3.   4.|
  4.      | g     g    g    g    g |
  5.      |------------------------|
  6.   1. | 1     0    0    0    0 |
  7.   2. | 1     0    0    0    0 |
  8.   3. | 1     0    0    0    0 |
  9.   4. | 2     0    1    0    0 |
  10.   5. | 2     0    1    0    0 |
  11.      |------------------------|
  12.   6. | 2     0    1    0    0 |
  13.   7. | 2     0    1    0    0 |
  14.   8. | 3     0    0    1    0 |
  15.   9. | 3     0    0    1    0 |
  16. 10. | 3     0    0    1    0 |
  17.      |------------------------|
  18. 11. | 3     0    0    1    0 |
  19. 12. | 4     0    0    0    1 |
  20. 13. | 4     0    0    0    1 |
  21. 14. | 4     0    0    0    1 |
  22. 15. | 4     0    0    0    1 |
  23.      +------------------------+
复制代码

7
夏目贵志 发表于 2017-2-16 10:36:19
蓝色 发表于 2017-2-16 10:27
估计stata里面对因子变量的定义是统一的
既然前面已经是 i(1 2 3 4).g
那么后面的 2.g 这里也会出现4个
...
我可以理解使用默认的base的情况下,list i(2/4).g出来2.g全是0。这个现象在明确指定1为base之后就不存在(见我上个回复)。但是在明确指定1为base的情况下2.g#c.x2应该没有任何歧义才对啊。

而且,好嘛,就算我能接受默认g#c.x2里会所有的组都出现,那么
reg y x1 ib1.g o(1 3 4).g#c.x2
总该可以了吧?我明确指定不要1 3 4组。但是还是不行:
  1.       Source |       SS           df       MS      Number of obs   =        15
  2. -------------+----------------------------------   F(8, 6)         =      1.43
  3.        Model |  11.5161754         8  1.43952193   Prob > F        =    0.3424
  4.     Residual |  6.05985222         6  1.00997537   R-squared       =    0.6552
  5. -------------+----------------------------------   Adj R-squared   =    0.1955
  6.        Total |  17.5760276        14  1.25543055   Root MSE        =     1.005

  7. ------------------------------------------------------------------------------
  8.            y |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
  9. -------------+----------------------------------------------------------------
  10.           x1 |  -.0393288   .5791778    -0.07   0.948    -1.456526    1.377868
  11.              |
  12.            g |
  13.           2  |   1.357465   1.044314     1.30   0.241    -1.197878    3.912808
  14.           3  |   .7076766   .8406158     0.84   0.432    -1.349236    2.764589
  15.           4  |   -1.46131    1.08871    -1.34   0.228    -4.125287    1.202667
  16.              |
  17.       g#c.x2 |
  18.           1  |   .1891081   .8975966     0.21   0.840    -2.007232    2.385448
  19.           2  |   1.521543   1.901143     0.80   0.454    -3.130387    6.173473
  20.           3  |  -.1380634   .5830725    -0.24   0.821     -1.56479    1.288664
  21.           4  |   -.459213   1.108282    -0.41   0.693    -3.171082    2.252656
  22.              |
  23.        _cons |    -.58119   .6602166    -0.88   0.413    -2.196682    1.034302
  24. ------------------------------------------------------------------------------
复制代码
让人鬼火直冒

8
蓝色 发表于 2017-2-16 10:38:55
你可以给stata公司写信询问

9
夏目贵志 发表于 2017-2-16 10:40:57
蓝色 发表于 2017-2-16 10:27
估计stata里面对因子变量的定义是统一的
既然前面已经是 i(1 2 3 4).g
那么后面的 2.g 这里也会出现4个
...
另外,就算不要前一个i.g项,就用o.varname这个,结果也有问题。看这两例子。第一个是好的。第二个就不对了。
  1. . reg y x1 o(3 4).g

  2.       Source |       SS           df       MS      Number of obs   =        15
  3. -------------+----------------------------------   F(2, 12)        =      1.51
  4.        Model |  3.52714654         2  1.76357327   Prob > F        =    0.2608
  5.     Residual |  14.0488811        12  1.17074009   R-squared       =    0.2007
  6. -------------+----------------------------------   Adj R-squared   =    0.0675
  7.        Total |  17.5760276        14  1.25543055   Root MSE        =     1.082

  8. ------------------------------------------------------------------------------
  9.            y |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
  10. -------------+----------------------------------------------------------------
  11.           x1 |  -.0427253   .4060305    -0.11   0.918    -.9273897    .8419391
  12.              |
  13.            g |
  14.           2  |   1.085119   .6380684     1.70   0.115    -.3051127     2.47535
  15.           3  |          0  (omitted)
  16.           4  |          0  (omitted)
  17.              |
  18.        _cons |  -.7142189   .3263087    -2.19   0.049    -1.425185   -.0032533
  19. ------------------------------------------------------------------------------
  20. r; t=0.03 21:40:17

  21. . reg y x1 o(3 4).g#c.x2

  22.       Source |       SS           df       MS      Number of obs   =        15
  23. -------------+----------------------------------   F(5, 9)         =      0.83
  24.        Model |  5.54857094         5  1.10971419   Prob > F        =    0.5590
  25.     Residual |  12.0274567         9  1.33638408   R-squared       =    0.3157
  26. -------------+----------------------------------   Adj R-squared   =   -0.0645
  27.        Total |  17.5760276        14  1.25543055   Root MSE        =     1.156

  28. ------------------------------------------------------------------------------
  29.            y |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
  30. -------------+----------------------------------------------------------------
  31.           x1 |   -.600715   .5888497    -1.02   0.334    -1.932786    .7313555
  32.              |
  33.       g#c.x2 |
  34.           1  |   .3933012   .9927366     0.40   0.701    -1.852425    2.639027
  35.           2  |  -.2952749   1.653722    -0.18   0.862    -4.036254    3.445704
  36.           3  |   .1813851   .6454295     0.28   0.785    -1.278678    1.641448
  37.           4  |   1.535079   .7965436     1.93   0.086    -.2668275    3.336986
  38.              |
  39.        _cons |  -.2123153   .3689048    -0.58   0.579    -1.046836    .6222053
  40. ------------------------------------------------------------------------------
复制代码
你觉得这个是bug么?要不我还是给stata公司发邮件?

10
夏目贵志 发表于 2017-2-16 10:42:44
蓝色 发表于 2017-2-16 10:38
你可以给stata公司写信询问
好。我今天问了个同事,也没任何结果。如果你也觉得这个设定没道理,我就给他们发邮件吧。
谢谢帮忙。

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-29 03:08