【问题标题】:Loop and calculate average in Stata在Stata中循环并计算平均值
【发布时间】:2018-02-16 18:21:59
【问题描述】:

我试图将基尼系数计算为五次重复的平均值。我的代码不能正常工作,我找不到办法。

inequal7 是用户编写的命令。

gen gini=.
forval i=1/5 {
    mi xeq `i' : inequal7 income [aw=hw0010]
    gen gini_`i'=.
    scalar gini_`i'  = r(gini)
    replace gini_`i'= r(gini)
    if `i' ==5 {
        replace gini = sum(gini_1+gini_2+gini_3+gini_4+gini_5)/5
    }
}

有人可以帮我吗?

【问题讨论】:

  • 你能解释一下这是对是错吗?我们不知道您的目标/“基尼系数...”是什么意思。
  • 请参阅stackoverflow.com/help/mcve 了解如何提问。正如@Avery 巧妙地暗示“我的代码错误”本身并没有提供信息。
  • 一个毫无意义的编辑将“我的代码错误”更改为您现在可以阅读的内容。

标签: loops average stata


【解决方案1】:

您正在使用的数据集没有上下文或示例。这可能行不通,但它可能比您拥有的更接近合法和正确。

scalar gini = 0 
forval i=1/5 {
    mi xeq `i' : inequal7 income [aw=hw0010]
    scalar gini  = scalar(gini) + r(gini)
}
scalar gini = scalar(gini) / 5 

注意事项:

  1. 使用变量来保存常量是合法的,但不一定是好的风格。

  2. sum() 给出运行或累积总和;应用于一个常数的变量,它所做的工作远远超过你需要的工作,而正确的答案最多就是观察 1 中的那个。当你给它输入 5 个值的总和时,它无论如何都是多余的。

  3. 注意:标量和变量的名称占用相同的命名空间。

如果这与您想要的相差甚远,并且您没有得到更好的答案,您可能需要提供更多细节。

【讨论】:

  • 感谢您的回复。我有被多重估算的调查数据 - 五次。我在 Stata 中没有关于多重插补和加权数据下的基尼系数的官方解决方案。我可以使用 mi xeq: [aw=weight] 来解释加权数据,但对于多重插补数据则不行。所以,我的想法是,一旦我有了一个暗示的基尼系数,我就可以对其他 4 个暗示重复这个计算。通过平均它们,我将得到基尼系数的多重插补估计。我尝试了提供的代码,但出现错误:type mismatch r(109);
  • 我已经独立地测试了与标量有关的代码,所以我想问题是您调用inequal7 或您没有向我们展示的代码的其他部分。检查应该是数字的字符串变量。我从未使用过mi xeq。正如已经评论的那样,这个问题与 MCVE 相去甚远。
  • 是的,确实如此。问题在于不等式7。我尝试了一个不同的用户编写的命令,它可以工作。谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-12-22
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-02
相关资源
最近更新 更多