Set-up and background

The assignment is worth 100 points. There are 3 questions. You should have the following packages installed:

library(tidyverse)
library(fixest)

In this problem set you will replicate some results from the paper “Do Workers Work More if Wages Are High? Evidence from a Randomized Field Experiment” (Fehr and Goette, AER 2007).

1 Replication

[Q1] The authors calculate an elasticity of effort per shit of -0.24. Replicate this finding using data from tables1to4. See pages 309, 311 and the slideshow in Canvas notes_on_fg2007.pdf. You don’t have to replicate the regressions, but you should replicate the averages.

data <- read.csv("/Users/samuelsinger/Desktop/Behavioral Economics/Problem Set 4/tables1to4.csv")
StatsC <- data %>%
  filter(maxhigh == 1) %>% 
  filter(block > 1) %>% 
  group_by(block, odd) %>% 
  summarise(mean(totrev))

StatsC
## # A tibble: 4 × 3
## # Groups:   block [2]
##   block   odd `mean(totrev)`
##   <int> <int>          <dbl>
## 1     2     0          3006.
## 2     2     1          4131.
## 3     3     0          3676.
## 4     3     1          2734.
RevenuePer1 <- (3006+4131)/2

RevenuePer2 <- (3676+2734)/2

Treatment <- 1000

SalaryIncrease <- 0.25

ElasticityRevenue1 <- (Treatment/RevenuePer1)/SalaryIncrease
ElasticityRevenue2 <- (Treatment/RevenuePer2)/SalaryIncrease


StatsD <- data %>%
  filter(maxhigh == 1) %>% 
  filter(block > 1) %>% 
  group_by(block, odd) %>% 
  summarise(mean(shifts))

StatsD
## # A tibble: 4 × 3
## # Groups:   block [2]
##   block   odd `mean(shifts)`
##   <int> <int>          <dbl>
## 1     2     0           9.85
## 2     2     1          14   
## 3     3     0          12.6 
## 4     3     1           8.73
ShiftsPer1 <- (9.85+14)/2
ShiftsPer2 <- (12.6+8.73)/2

Treatment2 <- 4


ElasticityShifts1 <- (Treatment2/ShiftsPer1)/SalaryIncrease
ElasticityShifts2 <- (Treatment2/ShiftsPer2)/SalaryIncrease


ElasticityOfShifts <- (ElasticityShifts1+ElasticityShifts2)/2

ElasticityRevenue <- (ElasticityRevenue1+ElasticityRevenue2)/2

ElasticityOfEffortPerShift <- ElasticityRevenue - ElasticityOfShifts

ElasticityOfEffortPerShift
## [1] -0.2364922

[Q2] Use tables5to6 to replicate the same elasticity.

data2 <- read.csv("/Users/samuelsinger/Desktop/Behavioral Economics/Problem Set 4/tables5to6.csv")
m51 = data2 %>%
  filter(fixed == 1 & maxhigh == 1 & fahrer != 27 & tag != 0 & tag != 6) %>%
  feols(lnum ~ high + female + lnten|fahrer + datum, data =.) %>%
  coef()
  
m51
##        high       lnten 
## -0.06009999  0.01501328
slope_high <- m51["high"]
slope_high
##        high 
## -0.06009999
EffortPerShift <- slope_high/SalaryIncrease
EffortPerShift
##    high 
## -0.2404

[Q3] Replicate specifications (1) and (2) in Table 6. Use etable() in fixest to present the results. You will find the code for tables5to6.do instructive: https://www.openicpsr.org/openicpsr/project/116259/version/V1/view

##                          Table6_1          Table6_2
## Dependent Var.:              lnum              lnum
##                                                    
## high_not         -0.0273 (0.0308)  -0.0270 (0.0308)
## high_la         -0.1048* (0.0467)                  
## lnten             0.0015 (0.0239)   0.0074 (0.0305)
## high_la1                           -0.0853 (0.0701)
## high_la2                          -0.1199* (0.0553)
## Fixed-Effects:  ----------------- -----------------
## fahrer                        Yes               Yes
## datum                         Yes               Yes
## _______________ _________________ _________________
## S.E.: Clustered        by: fahrer        by: fahrer
## Observations                1,137             1,137
## R2                        0.25994           0.26009
## Within R2                 0.00700           0.00720
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1