This is a SKAI website examining the impact of nudging farmers to take up Payments for Environmental Services.
Payments for Environmental Services (PES) are contracts between a service provider (a farmer or a landowner) and a service buyer (the government, an NGO or a private entity), in which providers receive a monetary compensation in exchange for the adoption of practices more favorable to the environment. PES sometimes face low subscription rates which jeopardize their environmental effectiveness. This page synthetizes the results of three large randomized experiments conducted in both the US and the EU to test whether nudges sent by mail can increase the subscription rate of PES:
The main results of this literature are as follows:
Below is how we obtained these results.
Let us plot the impact of the standard letter on the number of applications as a function of precision, excluding the sample of farmers that never enrolled in the program for a long time:
The plot for treatment effects suggests a positive correlation between effect and standard error, which is suggestive of publication bias. As a consequence, we conduct a meta-analytic regression correcting for publication bias using the PEESE estimator.
# generating weights
NudgesPES <- NudgesPES %>%
mutate(weightsTE = 1/SeTE)
# sum of weights
sum.weights.TE <- sum(filter(NudgesPES,Treatment=="1",Group=="Expiring")$weightsTE)
NudgesPES <- NudgesPES %>%
mutate(
weightsTE= weightsTE/sum.weights.TE,
varTE = SeTE^2
)
# Meta
Meta.nudge.PES <- lm(TE ~ 1,weights=weightsTE, data=filter(NudgesPES,Treatment=="1",Group=="Expiring"))
nudge.TE.Meta <- Meta.nudge.PES$coefficients[[1]]
nudge.SeTE.Meta <- sqrt(diag(vcov((Meta.nudge.PES))))[[1]]
# PEESE
PEESE.nudge.PES <- lm(TE ~ varTE,weights=weightsTE, data=filter(NudgesPES,Treatment=="1",Group=="Expiring"))
nudge.TE.PEESE <- PEESE.nudge.PES$coefficients[[1]]
nudge.SeTE.PEESE<- sqrt(diag(vcov((PEESE.nudge.PES))))[[1]]
# cost effectiveness
nudge.CE.Meta <- (0.60*10000)/nudge.TE.Meta
nudge.SeCE.Meta <- (0.60*10000)*nudge.SeTE.Meta/(nudge.TE.Meta^2)
nudge.CE.PEESE <- (0.60*10000)/nudge.TE.PEESE
nudge.SeCE.PEESE <- (0.60*10000)*nudge.SeTE.PEESE/(nudge.TE.PEESE^2)
# Sending results to original table
Meta.Nudges.1 <- NudgesPES %>%
filter(Treatment=="1",Group=="Expiring")%>%
select(TE,SeTE,Paper) %>%
mutate(SeTE2 = SeTE)
Meta.Nudges.1[nrow(Meta.Nudges.1)+1,] <- c(nudge.TE.PEESE,nudge.SeTE.PEESE,"PEESE",0)
Meta.Nudges.1[nrow(Meta.Nudges.1)+1,] <- c(nudge.TE.Meta,nudge.SeTE.Meta,"Meta-analysis",0)
Meta.Nudges.1 <- Meta.Nudges.1 %>%
mutate(
TE=as.numeric(TE),
SeTE=as.numeric(SeTE),
SeTE2=as.numeric(SeTE2),
Paper=factor(Paper,levels=c("Chabe-Ferret et al (2022)","Czap et al (2019)","Wallander et al (2017)","Meta-analysis","PEESE"))
)
# PEESE function
PEESE.fun <- function(se,alpha,beta){
return(alpha+beta*se^2)
}
Here is the result of this analysis:
The results suggest an estimated impact of the simple letter of 109 \(\pm\) 61 contracts per 10000 letters when using the simple meta-analysis and 46 \(\pm\) 14 additional contracts per 10000 letters when using PEESE. For a cost per letter of around 60 cents (in Euros or USD, since the exchange rate was close to one over the period and inflation was fairly low), we find, using the formula \(\hat\sigma_{CE}=\frac{c}{\hat\beta^2}\hat\sigma_{\beta}\), that cost-effectiveness is equal to 55 \(\pm\) 31 USD per additional contract with the simple meta-analysis and 131 \(\pm\) 40 USD per additional contract.
There are two types of nudges: simple nudges mostly referencing otger participants, and more complex nudges such as pre-stamped reply forms, regional peer comparisons or adding a handwritten note.
Let us now examine the effect of simple nudges. Treatment 2 in all three studies is a nudge added on top of the plain letter. In all three studies, the nudge focuses on a comparison with farmers already enrolled from the program. In Wallander et al (2017), Treatment 2 is a side box that told farmers how other stewards in their state had provided ecosystem services for their neighbors through participation in CRP, suggesting the popularity of CRP. In Czap et al (2019), Treatment 2 is an empathy nudge going along the same lines, focusing on other participants in the program: ‘’In the last two years, over 1600 of your fellow Nebraska farmers joined the common cause and enrolled/re-enrolled into the Conservation Stewardship Program.’’ Finally, in Chabe-Ferret et al (2022), Treatment 2 includes testimonies by farmers already benefiting from the program. Let’s examine how these treatments fare when compared with the simple letter.
Let us now estimate the meta-anaytic effect (there does not seem to be indications of publication bias here):
# sum of weights
sum.weights.TE.2 <- sum(filter(NudgesPES,Treatment=="2vs1",Group=="Expiring")$weightsTE)
NudgesPES <- NudgesPES %>%
mutate(
weightsTE2= weightsTE/sum.weights.TE.2
)
# Meta
Meta.nudge.PES.2 <- lm(TE ~ 1,weights=weightsTE2, data=filter(NudgesPES,Treatment=="2vs1",Group=="Expiring"))
nudge.TE.Meta.2 <- Meta.nudge.PES.2$coefficients[[1]]
nudge.SeTE.Meta.2<- sqrt(diag(vcov((Meta.nudge.PES.2))))[[1]]
# PEESE
PEESE.nudge.PES.2 <- lm(TE ~ varTE,weights=weightsTE2, data=filter(NudgesPES,Treatment=="2vs1",Group=="Expiring"))
nudge.TE.PEESE.2 <- PEESE.nudge.PES.2$coefficients[[1]]
nudge.SeTE.PEESE.2<- sqrt(diag(vcov((PEESE.nudge.PES.2))))[[1]]
# Sending results to original table
Meta.Nudges.2 <- NudgesPES %>%
filter(Treatment=="2vs1",Group=="Expiring")%>%
select(TE,SeTE,Paper) %>%
mutate(SeTE2 = SeTE)
Meta.Nudges.2[nrow(Meta.Nudges.2)+1,] <- c(nudge.TE.PEESE.2,nudge.SeTE.PEESE.2,"PEESE",0)
Meta.Nudges.2[nrow(Meta.Nudges.2)+1,] <- c(nudge.TE.Meta.2,nudge.SeTE.Meta.2,"Meta-analysis",0)
Meta.Nudges.2 <- Meta.Nudges.2 %>%
mutate(
TE=as.numeric(TE),
SeTE=as.numeric(SeTE),
SeTE2=as.numeric(SeTE2),
Paper=factor(Paper,levels=c("Chabe-Ferret et al (2022)","Czap et al (2019)","Wallander et al (2017)","Meta-analysis","PEESE"))
)
Here is the result of this analysis:
The impact of adding a nudge referencing other participants is -35 \(\pm\) 11 contracts per 10000 letters when using the simple meta-analysis and -25 \(\pm\) 4 contracts per 10000 letters when using PEESE. Adding a nudge referencing other participants decreases participation in the program.
Let us now examine the effect of more elaborate nudges. Treatment 3 in all three studies is a nudge added on top of the plain letter and the basic nudge of Treatment 2. In all three studies, the additional nudges differ a bit. In Wallander et al (2017), Treatment 3 consists in two boxes, one emphasizing the stability of CRP payments and the other using peer comparison to signal the regional popularity of CRP. In Czap et al (2019), Treatment 3 contains the handwritten the mention ‘’Join your fellow Nebraska farmers and ranchers in protecting our land!’’ In Treatment 2, this mention was photocopied instead. Finally, in Chabe-Ferret et al (2022), Treatment 3 consists in a pre-stamped reply form decreasing the cost of contacting the caseworker in charge of the program. These treatments are more heterogeneous than Treatment 2. Let’s examine how these treatments fare when compared with the simple letter.
Let us now estimate the meta-analytic effect (there does not seem to be indications of publication bias here):
# sum of weights
sum.weights.TE.3 <- sum(filter(NudgesPES,Treatment=="3vs1",Group=="Expiring")$weightsTE)
NudgesPES <- NudgesPES %>%
mutate(
weightsTE3= weightsTE/sum.weights.TE.3
)
# Meta
Meta.nudge.PES.3 <- lm(TE ~ 1,weights=weightsTE3, data=filter(NudgesPES,Treatment=="3vs1",Group=="Expiring"))
nudge.TE.Meta.3 <- Meta.nudge.PES.3$coefficients[[1]]
nudge.SeTE.Meta.3 <- sqrt(diag(vcov((Meta.nudge.PES.3))))[[1]]
# PEESE
PEESE.nudge.PES.3 <- lm(TE ~ varTE,weights=weightsTE3, data=filter(NudgesPES,Treatment=="3vs1",Group=="Expiring"))
nudge.TE.PEESE.3 <- PEESE.nudge.PES.3$coefficients[[1]]
nudge.SeTE.PEESE.3 <- sqrt(diag(vcov((PEESE.nudge.PES.3))))[[1]]
# Sending results to original table
Meta.Nudges.3 <- NudgesPES %>%
filter(Treatment=="3vs1",Group=="Expiring")%>%
select(TE,SeTE,Paper) %>%
mutate(SeTE2 = SeTE)
Meta.Nudges.3[nrow(Meta.Nudges.3)+1,] <- c(nudge.TE.PEESE.3,nudge.SeTE.PEESE.3,"PEESE",0)
Meta.Nudges.3[nrow(Meta.Nudges.3)+1,] <- c(nudge.TE.Meta.3,nudge.SeTE.Meta.3,"Meta-analysis",0)
Meta.Nudges.3 <- Meta.Nudges.3 %>%
mutate(
TE=as.numeric(TE),
SeTE=as.numeric(SeTE),
SeTE2=as.numeric(SeTE2),
Paper=factor(Paper,levels=c("Chabe-Ferret et al (2022)","Czap et al (2019)","Wallander et al (2017)","Meta-analysis","PEESE"))
)
Here is the result of this analysis:
The impact of adding a nudge referencing other participants is 8 \(\pm\) 34 contracts per 10000 letters when using the simple meta-analysis and 38 \(\pm\) 42 contracts per 10000 letters when using PEESE. It is unclear whether these more elaborate nudges help or not. The handwritten note seems to be the most promising one.
We are now ready to send the main results from our meta-analysis to SKAI. We first need to build a table containing the meta-analytical results.
# Treatment Effects
Effects <- c(nudge.TE.Meta,nudge.TE.PEESE,nudge.TE.Meta.2,nudge.TE.PEESE.2,nudge.TE.Meta.3,nudge.TE.PEESE.3,nudge.CE.Meta,nudge.CE.PEESE)
SeEffects <- c(nudge.SeTE.Meta,nudge.SeTE.PEESE,nudge.SeTE.Meta.2,nudge.SeTE.PEESE.2,nudge.SeTE.Meta.3,nudge.SeTE.PEESE.3,nudge.SeCE.Meta,nudge.SeCE.PEESE)
ResultsMetaPES <- as.data.frame(cbind(Effects,SeEffects))
# Table
ResultsMetaPES$Type <- c(rep("Treatment Effect",6),rep("Cost-Effectiveness",2))
ResultsMetaPES$Treatment <- c(rep("Simple Letter",2),rep("Simple Nudge vs Simple Letter",2),rep("Elaborate Nudge vs Simple Letter",2),rep("Simple Letter",2))
ResultsMetaPES$Method <- rep(c("Meta-analysis","PEESE"),4)
Let’s send the results to SKAI:
# reading connection informations
source(here::here("idSQL.R"))
# connecting to SQL server
HdF <- dbConnect(MySQL(), dbname="HdF",
user=myid, password=mypass, host=myhost)
# sending Results table
dbWriteTable(HdF,"MetaPES",ResultsMetaPES,overwrite=TRUE)
# commenting the table
dbSendQuery(HdF,"ALTER TABLE `HdF`.`MetaPES`
CHANGE COLUMN `Effects` `Effects` DOUBLE NULL DEFAULT NULL COMMENT 'The effect of the treatment measured as an increase in contract applications per 10000 farmers or as a cost per additional contract in USD.' ,
CHANGE COLUMN `SeEffects` `SeEffects` DOUBLE NULL DEFAULT NULL COMMENT 'The standard error of the estimated treatment effect or cost-effectiveness.' ,
CHANGE COLUMN `Treatment` `Treatment` TEXT NULL DEFAULT NULL COMMENT 'The treatment analysed.\nSimple letter, Simple nudge vs simple letter and elaborate nudge vs simple letter.' ,
CHANGE COLUMN `Type` `Type` TEXT NULL DEFAULT NULL COMMENT 'The tyope of outcome (treatment effect or cost-effectiveness).' ,
CHANGE COLUMN `Method` `Method` TEXT NULL DEFAULT NULL COMMENT 'The method used for the meta-analysis: simple WLS (Meta) or PEESE.' ,
COMMENT = 'Table containing the results of a meta-analysis of the effect of nudges sent to farmers to subscribe Payments for Environmental Services regrouping results in Wallander et al (2017), Czap et al (2019) and Chabe-Ferret et al (2022).' ;
")
# disconnecting the connection to the SQL server
dbDisconnect(HdF)