Set-up and background

The assignment is worth 100 points. You should have the following packages installed:

library(tidyverse)
library(patchwork)
library(kableExtra)
library(margins)

In this problem set you will summarize the paper “Imperfect Public Monitoring with Costly Punishment: An Experimental Study” (Ambrus and Greiner, AER 2012) and recreate some of its findings.

1 Big Picture

[Q1] What is the main question asked in this paper?

The main question asked in this paper is whether or not increasing the costs of punishment in a public good contribution game affects cooperation, contributions, and social welfare. They also ask if the presence of noise affects these games as well.

[Q2] Summarize the experiment design.

The authors set up an experiment that follows a 3x2 matrix setup. The 3 punishment options are no punishment, regular punishment, and strong punishment. The 2 noise options are no noise and small noise. Once the game started, the participants played 50 rounds and were randomly assorted into groups of three. The setup of the game is that every participant was given 20 tokens and were asked to either contribute all or none of the tokens to a group account each round. In the no noise simulation, after each member simultaneously made their decisions, everyone was informed of the outcome. In the simulation that had limited noise, a public record informed the group members of the decisions. If a group member did not contribute, the public record would always indicate so. However, if a member did contribute, there was a 10% chance that the record would make an error and say they didn’t. The participants were informed of the structure.

As for the punishments, if there was no punishment the round ended after the group members were informed of the contributions. In the punishment simulations, a second-stage commenced where members were asked if they wanted to assign up to five deduction points to the other members of the group. In the regular punishment setup, each assigned deduction equaled a 3 point reduction of the group member’s income. There was a cap in place equal to the rounds’ earnings. The strong punishment simulation had a 6 point reduction with no cap, so there could be a round with negative earnings.

[Q3] Summarize the main results of the experiment.

There were a few takeaways from this experiment. First, the presence of noise lead to lower average contributions in all three punishment conditions. Second, contributions and severity of punishments had a positive correlation; the more severe the punishment the higher the average contribution. As for average net payoffs, in a perfect monitoring environment, an increase in the severity of the punishment lead to an increase in the average net payoff. However, in an imperfect monitoring environment, the pattern was more of a U-shape; the regular punishment condition had the lowest average net payoff. This also holds up in the long-run.

[Q4] Why are these results valuable? What have we learned? Motivate your discussion with a real-world example. In particular discuss the tradeoffs to transparency in groups and how these tradeoffs might be navigated in a firm, or more broadly, a society.

This paper found that no noise had higher average contributions. This means the more transparency the better. Logically this makes sense because it would show the players trying to free ride. Socially, that would be frowned upon, so people would want to contribute something in order to not be shamed. If you think about this in the context of a sales team, a manager could set up a system that publicly documents how many calls a representative initiated and/or the length of time on that call. The manager could also take it one step further and publicly show the average sale per call made by each representative. If everyone on the team knows how much everyone is contributing to the success of the firm, whoever is near the bottom will have to pick up the slack. This paper also showed that in a perfect no noise world, the presence of punishments had a positive correlation with contributions. This would be harder to pull off in a firm I think because how can you really punish a sales representative without also hurting profits of the entire firm. The punishment would have to be some sort of public shame, which is also hard for a firm to do beyond just posting a leaderboard somewhere.

[Q5] If punishment is ineffective under imperfect monitoring, what else can you lean on to ensure people cooperate (at least a little) in a public goods problem?

In this course we have learned about the benefits of positive incentives, which is the natural opposite of punishments. In this type of game, either instead of or alongside the punishment conditions, there could also be some kind of positive incentive. If the member contributes, they receive an additional 3 tokens for the next round (or something like that).

2 Theory

Payoffs to agent \(i\) are

\[ \pi_i = (e_i - x_i) + \alpha \sum_{i=1}^n x_i \]

where \(e_i\) is the agent’s endowment, \(x_i\) is her contribution to the public good, \(\alpha\) is the marginal per capita return, and \(n\) is the group size.

[Q6] Explain \(\alpha\) and why in public goods game requires \(\frac{1}{n} < \alpha < 1\).

This formula represents the classic social dilemma in a public goods game of the tension between individual earnings and public/group earnings. With any public goods game there is always going to be the opportunity to free ride. If enough players contribute, you will still make some earnings without having to contribute anything yourself. Alpha represents the marginal per capita return, which is going to be less than 1 because it is assumed that every player is not going to contribute all that they have. It also has to be greater than the inverse of the number of players because it is also assumed that at least one player will contribute something. Alpha represents the decision of how much each player is willing to contribute to the game in a battle between self gain and public good.

[Q7] Suppose \(e_i = e = 20\) (i.e. everyone has 20), \(\alpha = 0.4\) and \(n=4\). Show that \(x_i = 0\) is a symmetric Nash equilibrium, but \(x_i=20\) is the social optimum. (Recall that in a Nash equilibrium \(i\) cannot increase her payoff by changing her contribution.) Hint: you can use code to answer this problem by calcuting payoffs to a representative agent and plotting them. You might the curve() function useful.

pi <- function(x, e=20, alpha=0.4, X=0*20){
  pi = (e-x) + alpha*(X+x)
  return(pi)
}

curve(expr = pi, from = 0, to = 20)

3 Replication

punnoise = read_csv("punnoise_data.csv")

3.1 Description

Use theme_classic() for all plots.

[Q8] Recreate Table 1 and usekable() to make a publication-quality table (in HTML).

table1.df <- data.frame(punnoise$treat, punnoise$contribution, punnoise$received_punishment, punnoise$income)

colnames(table1.df) <- c("treat", "contribution", "received_punishment", "income")

table1 <- table1.df %>%
  group_by(treat) %>%
  summarise(mean(contribution),
            mean(received_punishment),
            mean(income))

table1 = table1 %>% 
  mutate_if(is.numeric, round, digits = 2)

colnames(table1) <- c("Treat", "Average_Contribution", "Average_Punishment", "Average_Net_Profits")

table1 %>%
  kbl(caption = "Table 1 - Average Contributions, Punishment, and Net Profits") %>%
  kable_classic(full_width = F, html_font = "Cambria") 
Table 1 - Average Contributions, Punishment, and Net Profits
Treat Average_Contribution Average_Punishment Average_Net_Profits
nopun_noise 4.04 NA 22.02
nopun_nonoise 5.59 NA 22.80
pun_noise 9.60 1.45 19.10
pun_nonoise 12.40 0.64 23.66
strongpun_noise 16.04 0.65 23.48
strongpun_nonoise 17.61 0.48 25.45

3.2 Inference

Consider the linear model

\[ y = \alpha + \beta_1 x_1 + \beta_2 x_2 + \varepsilon \]

[Q9] Write down the marginal effect of \(x_1\) (in math).

The marginal effect of X1 is a partial derivative of X1 with respect to y, which is essentially beta1

dy/dx1 = beta1

In non math terms, it means that an increase in one unit of X1 will effect y by beta1.

Now suppose you have a non-linear model

\[ y = F(\alpha + \beta_1 x_1 + \beta_2 x_2 + \varepsilon) \]

where \(F(\cdot)\) is a “link function” that compresses the inputs so that the output \(\hat{y} \in [0,1]\).

[Q10] Write down the marginal effect of \(x_1\). How does this compare to the marginal effect in the linear model?

It’s more difficult to interpret marginal effects in a link function as opposed to a linear function. A link function is essentially a linear model nested into a non-linear model, so a one-unit increase in a given predictor is dependent not only on the values of the other predictors, but also the starting value of those predictors. However, we are still able to give a broad interpretation based on the sign of the coefficient.

[Q11] A probit model uses the Normal CDF \(\Phi\) as the link function, where \(\Phi' = \phi\) is the Normal PDF. Use glm() to estimate Model 1 in Table 2. Assign the model to the object m1. Cluster the standard errors at the group level.

m1 <- glm(contr_dummy ~ round + p_reg + p_strong + noise + noise__p_reg + noise__p_strong, family = binomial(link = 'probit'), data = punnoise)

summary(m1, cluster = "group")
## 
## Call:
## glm(formula = contr_dummy ~ round + p_reg + p_strong + noise + 
##     noise__p_reg + noise__p_strong, family = binomial(link = "probit"), 
##     data = punnoise)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.0741  -0.8125   0.5018   0.9714   1.8030  
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     -0.5660869  0.0311397 -18.179  < 2e-16 ***
## round           -0.0007022  0.0007303  -0.961   0.3363    
## p_reg            0.8894465  0.0345661  25.732  < 2e-16 ***
## p_strong         1.7600634  0.0400362  43.962  < 2e-16 ***
## noise           -0.2518140  0.0365821  -6.884 5.84e-12 ***
## noise__p_reg    -0.1038117  0.0493212  -2.105   0.0353 *  
## noise__p_strong -0.0761898  0.0554592  -1.374   0.1695    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 23399  on 16949  degrees of freedom
## Residual deviance: 18848  on 16943  degrees of freedom
## AIC: 18862
## 
## Number of Fisher Scoring iterations: 4

[Q12] Interpret the coefficients. (For more on the probit model, see the appendix.)

In this model, an increase in p_reg and p_strong increases the predicted probability of contribution in the game. This is because those predictors have positive coefficients. Round, noise, noise__p_ref and noise__p_strong are all negative, which means an increase in any of those predictors decreases the probability of contribution.

3.2.1 Average marginal effects

[Q13] Table 2 reports the average marginal effects (AMEs) of the variables on \(P(\text{contribute})\). Calculate the AME to the variable round as follows:

  1. Use predict()to create an object predictions that contains the predicted z-scores. (i.e. \(\hat{\mathbf{X}\beta}\). Hint: use the option type="link" in predict().)
predictions <- predict(m1, type = "link")
  1. Use dnorm() to calculate the probabilities of the predicted z-scores and store the output in an object called index.
index <- dnorm(predictions)
  1. Now calculate the marginal effects by multiplying the predicted probabilities times the estimated coefficient for round and store the output in dydxround.
dydxround <- -0.0007022 * index
  1. Use mean() to calculate the AME.
mean(dydxround)
## [1] -0.0002208953

[Q14] Verify your calculations with margins(), the plot the AMEs. (Note: these will not be exactly the same as those in the paper, since the paper uses an outdated method in Stata.

ame <- margins(m1, data = punnoise)

ame
##       round  p_reg p_strong    noise noise__p_reg noise__p_strong
##  -0.0002209 0.2798   0.5537 -0.07921     -0.03266        -0.02397
plot(ame, main = "Average Marginal Effects")

[Q15] Interpret the AMEs.

AME coefficients gives you probability effects. In this model, a one unit increase in the round predictor decreases the chance someone contributes by 0.02%. A one unit increase in the p_reg predictor increases the chance of contribution by about 28% and a one unit increase in p_strong increases it by 55%. A one unit increase in the noise predictor decreases the chance of contribution by 8%. The noise and punishment interaction variables also have negative values with noise__p_reg decreasing the chance of contribution by 3% and the noise__p_strong decreasing the chance by 2%.