【问题标题】:How to create means in panel data for specific years?如何在特定年份的面板数据中创建均值?
【发布时间】:2020-04-23 13:18:02
【问题描述】:

我在 Stata 的某个特定问题上需要帮助。我有一个id year 从 1996 年到 2018 年的面板数据集。 面板数据是世界国家和地区、年度观察、7 种不同作物、种植面积的组合。

我想在 2000 年、2010 年和 2018 年左右创建一个平均值,因此 mean(year2000)= (1999+2000+2001) 的平均值,mean(year2010)=(2009+2010+2011) 的平均值和mean(year2018)= mean from (2016+2017+2018) 对于我选择的 7 种作物中的每种作物。

那么当我需要合并一些国家形成子区域时,问题就更加复杂了:比如说我需要子区域RUS1 =俄罗斯+乌克兰。如何创建另一个变量来显示每年在俄罗斯种植的crop1 面积与在乌克兰种植的crop1 面积之间的crop1 总数。意味着使用上述方法显示每年这些总和的另一个变量。 我试过by id year: egen area_rus1=total(area) if area=="Russia" & area=="Ukraine" 但没有任何效果。

区域名称是我使用encode (area), gen (area2) 的字符串,Stata 会自动生成一个数字。 为了创建面板数据集,我使用了gen id=area2+itemcode

sort year之后的面板数据是这样的

请注意,期间为 1996-2018。上面的例子只显示了 1996 年。

【问题讨论】:

    标签: panel stata


    【解决方案1】:

    这并没有得到太多回应,原因有几个:

    1. 您没有显示太多代码。

    2. 您没有以特别有用的形式显示数据。无法将图像轻松复制并粘贴到某人的 Stata 中以进行实验。实际上,您的图像显示了不相关的变量和彼此不同版本的变量,因此比我们需要的要复杂得多。

    3. 您将问题升级为询问您想知道的最复杂的版本。

    4. 您应该更好地解释一个问题。 area 是字符串,因此根本无法计算总计,area2 只是任意整数,因此可以计算总计但没有意义。 “没有任何效果”作为问题报告没有提供信息。对我来说唯一有意义的总数是value

    您需要先简化您的问题,然后再进行构建。

    本质似乎是这样的:

    * Example generated by -dataex-. To install: ssc install dataex
    clear
    input str2 country str6 item float year str1 region float value
    "A" "barley" 1999 "X" 1
    "B" "barley" 1999 "X" 2
    "C" "barley" 1999 "Y" 3
    "A" "barley" 2000 "X" 4
    "B" "barley" 2000 "X" 5
    "C" "barley" 2000 "Y" 6
    "A" "barley" 2001 "X" 7 
    "B" "barley" 2001 "X" 8
    "C" "barley" 2001 "Y" 9 
    end
    
    * means by countries: similar variables for other periods 
    egen mean_9901_c = mean(cond(inrange(year, 1999, 2001), value, .)), by(country item)
    
    * aggregation to regions, but ensure that you don't double count 
    egen value_region = total(value), by(region item year)
    egen tag = tag(region item year)
    
    * means by regions: similar variables for other periods 
    egen mean_9901_r = mean(cond(tag == 1 & inrange(year, 1999, 2001), value_region, .)), by(region item)
    
    list, sepby(year)
    
         +---------------------------------------------------------------------------------+
         | country     item   year   region   value   mean_9~c   value_~n   tag   mean_9~r |
         |---------------------------------------------------------------------------------|
      1. |       A   barley   1999        X       1          4          3     1          9 |
      2. |       B   barley   1999        X       2          5          3     0          9 |
      3. |       C   barley   1999        Y       3          6          3     1          6 |
         |---------------------------------------------------------------------------------|
      4. |       A   barley   2000        X       4          4          9     1          9 |
      5. |       B   barley   2000        X       5          5          9     0          9 |
      6. |       C   barley   2000        Y       6          6          6     1          6 |
         |---------------------------------------------------------------------------------|
      7. |       A   barley   2001        X       7          4         15     1          9 |
      8. |       B   barley   2001        X       8          5         15     0          9 |
      9. |       C   barley   2001        Y       9          6          9     1          6 |
         +---------------------------------------------------------------------------------+
    

    该示例仅显示一项,但代码应该适用于多项。

    该示例仅显示了三年的虚假数据,但可以类似地构建其他时期的平均值。

    结果会针对它们适用的所有观察结果重复。要仅查看或使用一次结果,请使用 if。例如,1999 年至 2001 年的平均值显示为这些年份(以及其他年份),但if year == 1999 将是一种只查看一次结果的方法。

    另请参阅help collapsehelp egen 以了解其tag() 功能和this paper

    你的代码出了什么问题

    你的问题始于

    if area=="Russia" & area=="Ukraine"
    

    它选择在同一观察中area 既是“俄罗斯”又是“乌克兰”的观察,这是不可能的。您需要|(或)运算符,而不是& 运算符,或者以其他方式解决问题。

    前缀id 也是错误的。使用by id: 会强制对id 的不同值进行单独计算,这将使标识符的组合变得不可能。

    【讨论】:

      猜你喜欢
      • 2022-12-29
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      • 2023-04-10
      • 2015-06-20
      • 1970-01-01
      相关资源
      最近更新 更多