0

我有一个不同家庭回答每周民意调查的分组数据结构,我观察他们超过 52 周(在下面的示例中为 4 周)。现在我想使用基尼系数来量化给定一周内所有家庭的民意调查答案的(不)平等程度(其中 0 = 所有家庭都回答了相同数量的民意调查;1 = 一个家庭回答了所有民意调查) .

示例数据:

da_poll <- data.frame(household = c(1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4), week = c(1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4), participation = c(1,1,1,1,0,0,0,1,0,1,0,1,1,1,1,0))

da_poll
       household week participation
    1          1    1             1
    2          1    2             1
    3          1    3             1
    4          1    4             1
    5          2    1             0
    6          2    2             0
    7          2    3             0
    8          2    4             1
    9          3    1             0
    10         3    2             1
    11         3    3             0
    12         3    4             1
    13         4    1             1
    14         4    2             1
    15         4    3             1
    16         4    4             0

我现在开始计算每周的基尼系数:

library(DescTools)

da_poll = group_by(da_poll, household) %>%
   mutate(n_polls = cumsum(participation == 1)) %>%
   group_by(week) %>%
   mutate(gini_polls = Gini(n_polls))

da_poll
# A tibble: 16 x 5
# Groups:   week [4]
   household  week participation n_polls gini_polls
       <dbl> <dbl>         <dbl>   <int>      <dbl>
 1         1     1             1       1      0    
 2         1     2             1       2      0.143
 3         1     3             1       3      0.259
 4         1     4             1       4      0.167
 5         2     1             1       1      0    
 6         2     2             0       1      0.143
 7         2     3             0       1      0.259
 8         2     4             1       2      0.167
 9         3     1             1       1      0    
10         3     2             1       2      0.143
11         3     3             0       2      0.259
12         3     4             1       3      0.167
13         4     1             1       1      0    
14         4     2             1       2      0.143
15         4     3             1       3      0.259
16         4     4             0       3      0.167

现在我想添加第二个变量,通过一周内参与民意调查的家庭来表示基尼系数的变化(家庭 h 在 w 周填写民意调查后的基尼 - 家庭 w 在 w 填写民意调查之前的基尼)。我该如何解决这个问题?

4

1 回答 1

1

我无法重述你的工作;你使用了一个Gini函数,却没有告诉我们你正在使用什么包。但只是抓住你的结果。

da_poll2 <- read_table("C  household  week participation n_polls gini_polls
 1         1     1             1       1      0    
 2         1     2             1       2      0.143
 3         1     3             1       3      0.259
 4         1     4             1       4      0.167
 5         2     1             1       1      0    
 6         2     2             0       1      0.143
 7         2     3             0       1      0.259
 8         2     4             1       2      0.167
 9         3     1             1       1      0    
10         3     2             1       2      0.143
11         3     3             0       2      0.259
12         3     4             1       3      0.167
13         4     1             1       1      0    
14         4     2             1       2      0.143
15         4     3             1       3      0.259
16         4     4             0       3      0.167") %>% 
  select(- C)

da_poll2 %>% 
  group_by(household) %>% 
  mutate(prevGini = lag(gini_polls),
         deltaGini = gini_polls - prevGini ) %>%
  ungroup()

给我们

# A tibble: 16 x 7
   household  week participation n_polls gini_polls prevGini deltaGini
       <dbl> <dbl>         <dbl>   <dbl>      <dbl>    <dbl>     <dbl>
 1         1     1             1       1      0       NA        NA    
 2         1     2             1       2      0.143    0         0.143
 3         1     3             1       3      0.259    0.143     0.116
 4         1     4             1       4      0.167    0.259    -0.092
 5         2     1             1       1      0       NA        NA    
 6         2     2             0       1      0.143    0         0.143
 7         2     3             0       1      0.259    0.143     0.116
 8         2     4             1       2      0.167    0.259    -0.092
 9         3     1             1       1      0       NA        NA    
10         3     2             1       2      0.143    0         0.143
11         3     3             0       2      0.259    0.143     0.116
12         3     4             1       3      0.167    0.259    -0.092
13         4     1             1       1      0       NA        NA    
14         4     2             1       2      0.143    0         0.143
15         4     3             1       3      0.259    0.143     0.116
16         4     4             0       3      0.167    0.259    -0.092
于 2020-05-23T13:34:08.993 回答