Summary

This notebook simulates the effect of the new (as of July 7th 2022) evaluation design on payments. I produced this pretty quickly and thus there isn’t much explanation for the formulas / calculations. See the earlier notebooks with standard error calculations and simulations for more background.

Evaluation Design

Simulation Approach

With this evaluation design, each annual impact estimate is independent (assuming we don’t use the grade 3 assessment in year 4 for payment calculations). Thus, to simulate the effect of uncertainty on payments, I simulate draw random from the impact estimates rather than each data collection rounds.

In the code below, I assume that the actual 2 year effect and the target for each cohort is .2 but this is easily changed by changing the parameters in the code.

Standard Error Formula

Since we are resampling 50% of schools in both the treatment and control groups the standard error will be the same as if we are resampling schools in treatment but tracking the same schools for control. The variance for the estimator would (see scenario 2 from the earlier notebook):

\[ V(\hat{\tau}) = 2A(1-R_J^2)+2B(1-R_K^2) + 2*(A+B)*(1-R^2_L)\]

Simulations

library(tidyverse)

# sampling inputs
J <- 50 # Number of schools per arm
K <- 25 # Number of students per school
rho <- 0.1 # ICC
rsj <- .2
rsk <- .2
rsl <- .63

# variance calculations
A <- rho/J
B <- (1-rho)/(J*K)
var <- 2*A*(1-rsj)+2*B*(1-rsk)+2*(A+B)*(1-rsl)
se = var^.5

sims <- 100000
true_impact = .2 # true impact for 2 years of exposure
target = .2 # target for each cohort

est_effect_y1 <- rnorm(sims, mean = true_impact, sd = se)
est_effect_y2 <- rnorm(sims, mean = true_impact, sd = se)
est_effect_y3 <- rnorm(sims, mean = true_impact, sd = se)
est_effect_y4 <- rnorm(sims, mean = true_impact, sd = se)

payment_y1 <- pmax(0, est_effect_y1/(4*target))
payment_y2 <- pmax(0, est_effect_y2/(4*target))
payment_y3 <- pmax(0, est_effect_y3/(4*target))
payment_y4 <- pmax(0, est_effect_y4/(4*target))

total_payment = payment_y1+payment_y2+payment_y3+payment_y4

mean(total_payment)
[1] 0.9994181
print("90% confidence interval for return")
[1] "90% confidence interval for return"
quantile(total_payment-1, c(.05,.95))
        5%        95% 
-0.3259126  0.3266359 
print("75% confidence interval for return")
[1] "75% confidence interval for return"
quantile(total_payment-1, c(.125,.875))
     12.5%      87.5% 
-0.2288104  0.2280068 
ggplot(tibble(p = total_payment-1), aes(x = p)) + 
  geom_histogram(binwidth = .02) +
  labs(x = "Return", y = "Frequency", caption = "Red line indicates what the investors should be paid", title = "Expected Return w/ Current Evaluation Design")  

LS0tDQp0aXRsZTogIkIyU09GIFNhbXBsZSBTaW11bGF0aW9ucyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMgU3VtbWFyeQ0KDQpUaGlzIG5vdGVib29rIHNpbXVsYXRlcyB0aGUgZWZmZWN0IG9mIHRoZSBuZXcgKGFzIG9mIEp1bHkgN3RoIDIwMjIpIGV2YWx1YXRpb24gZGVzaWduIG9uIHBheW1lbnRzLiBJIHByb2R1Y2VkIHRoaXMgcHJldHR5IHF1aWNrbHkgYW5kIHRodXMgdGhlcmUgaXNuJ3QgbXVjaCBleHBsYW5hdGlvbiBmb3IgdGhlIGZvcm11bGFzIC8gY2FsY3VsYXRpb25zLiBTZWUgdGhlIGVhcmxpZXIgbm90ZWJvb2tzIHdpdGggc3RhbmRhcmQgZXJyb3IgY2FsY3VsYXRpb25zIGFuZCBzaW11bGF0aW9ucyBmb3IgbW9yZSBiYWNrZ3JvdW5kLg0KDQojIEV2YWx1YXRpb24gRGVzaWduDQoNCiFbXShpbWFnZXMvcGFzdGUtQ0NFQjQyREYucG5nKQ0KDQojIFNpbXVsYXRpb24gQXBwcm9hY2gNCg0KV2l0aCB0aGlzIGV2YWx1YXRpb24gZGVzaWduLCBlYWNoIGFubnVhbCBpbXBhY3QgZXN0aW1hdGUgaXMgaW5kZXBlbmRlbnQgKGFzc3VtaW5nIHdlIGRvbid0IHVzZSB0aGUgZ3JhZGUgMyBhc3Nlc3NtZW50IGluIHllYXIgNCBmb3IgcGF5bWVudCBjYWxjdWxhdGlvbnMpLiBUaHVzLCB0byBzaW11bGF0ZSB0aGUgZWZmZWN0IG9mIHVuY2VydGFpbnR5IG9uIHBheW1lbnRzLCBJIHNpbXVsYXRlIGRyYXcgcmFuZG9tIGZyb20gdGhlIGltcGFjdCBlc3RpbWF0ZXMgcmF0aGVyIHRoYW4gZWFjaCBkYXRhIGNvbGxlY3Rpb24gcm91bmRzLg0KDQpJbiB0aGUgY29kZSBiZWxvdywgSSBhc3N1bWUgdGhhdCB0aGUgYWN0dWFsIDIgeWVhciBlZmZlY3QgYW5kIHRoZSB0YXJnZXQgZm9yIGVhY2ggY29ob3J0IGlzIC4yIGJ1dCB0aGlzIGlzIGVhc2lseSBjaGFuZ2VkIGJ5IGNoYW5naW5nIHRoZSBwYXJhbWV0ZXJzIGluIHRoZSBjb2RlLg0KDQojIFN0YW5kYXJkIEVycm9yIEZvcm11bGENCg0KU2luY2Ugd2UgYXJlIHJlc2FtcGxpbmcgNTAlIG9mIHNjaG9vbHMgaW4gYm90aCB0aGUgdHJlYXRtZW50IGFuZCBjb250cm9sIGdyb3VwcyB0aGUgc3RhbmRhcmQgZXJyb3Igd2lsbCBiZSB0aGUgc2FtZSBhcyBpZiB3ZSBhcmUgcmVzYW1wbGluZyBzY2hvb2xzIGluIHRyZWF0bWVudCBidXQgdHJhY2tpbmcgdGhlIHNhbWUgc2Nob29scyBmb3IgY29udHJvbC4gVGhlIHZhcmlhbmNlIGZvciB0aGUgZXN0aW1hdG9yIHdvdWxkIChzZWUgc2NlbmFyaW8gMiBmcm9tIHRoZSBlYXJsaWVyIG5vdGVib29rKToNCg0KJCQgVihcaGF0e1x0YXV9KSA9IDJBKDEtUl9KXjIpKzJCKDEtUl9LXjIpICsgMiooQStCKSooMS1SXjJfTCkkJA0KDQojIFNpbXVsYXRpb25zDQoNCmBgYHtyfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQoNCiMgc2FtcGxpbmcgaW5wdXRzDQpKIDwtIDUwICMgTnVtYmVyIG9mIHNjaG9vbHMgcGVyIGFybQ0KSyA8LSAyNSAjIE51bWJlciBvZiBzdHVkZW50cyBwZXIgc2Nob29sDQpyaG8gPC0gMC4xICMgSUNDDQpyc2ogPC0gLjINCnJzayA8LSAuMg0KcnNsIDwtIC42Mw0KDQojIHZhcmlhbmNlIGNhbGN1bGF0aW9ucw0KQSA8LSByaG8vSg0KQiA8LSAoMS1yaG8pLyhKKkspDQp2YXIgPC0gMipBKigxLXJzaikrMipCKigxLXJzaykrMiooQStCKSooMS1yc2wpDQpzZSA9IHZhcl4uNQ0KDQpzaW1zIDwtIDEwMDAwMA0KdHJ1ZV9pbXBhY3QgPSAuMiAjIHRydWUgaW1wYWN0IGZvciAyIHllYXJzIG9mIGV4cG9zdXJlDQp0YXJnZXQgPSAuMiAjIHRhcmdldCBmb3IgZWFjaCBjb2hvcnQNCg0KZXN0X2VmZmVjdF95MSA8LSBybm9ybShzaW1zLCBtZWFuID0gdHJ1ZV9pbXBhY3QsIHNkID0gc2UpDQplc3RfZWZmZWN0X3kyIDwtIHJub3JtKHNpbXMsIG1lYW4gPSB0cnVlX2ltcGFjdCwgc2QgPSBzZSkNCmVzdF9lZmZlY3RfeTMgPC0gcm5vcm0oc2ltcywgbWVhbiA9IHRydWVfaW1wYWN0LCBzZCA9IHNlKQ0KZXN0X2VmZmVjdF95NCA8LSBybm9ybShzaW1zLCBtZWFuID0gdHJ1ZV9pbXBhY3QsIHNkID0gc2UpDQoNCnBheW1lbnRfeTEgPC0gcG1heCgwLCBlc3RfZWZmZWN0X3kxLyg0KnRhcmdldCkpDQpwYXltZW50X3kyIDwtIHBtYXgoMCwgZXN0X2VmZmVjdF95Mi8oNCp0YXJnZXQpKQ0KcGF5bWVudF95MyA8LSBwbWF4KDAsIGVzdF9lZmZlY3RfeTMvKDQqdGFyZ2V0KSkNCnBheW1lbnRfeTQgPC0gcG1heCgwLCBlc3RfZWZmZWN0X3k0Lyg0KnRhcmdldCkpDQoNCnRvdGFsX3BheW1lbnQgPSBwYXltZW50X3kxK3BheW1lbnRfeTIrcGF5bWVudF95MytwYXltZW50X3k0DQoNCm1lYW4odG90YWxfcGF5bWVudCkNCg0KcHJpbnQoIjkwJSBjb25maWRlbmNlIGludGVydmFsIGZvciByZXR1cm4iKQ0KcXVhbnRpbGUodG90YWxfcGF5bWVudC0xLCBjKC4wNSwuOTUpKQ0KDQpwcmludCgiNzUlIGNvbmZpZGVuY2UgaW50ZXJ2YWwgZm9yIHJldHVybiIpDQpxdWFudGlsZSh0b3RhbF9wYXltZW50LTEsIGMoLjEyNSwuODc1KSkNCg0KDQpnZ3Bsb3QodGliYmxlKHAgPSB0b3RhbF9wYXltZW50LTEpLCBhZXMoeCA9IHApKSArIA0KICBnZW9tX2hpc3RvZ3JhbShiaW53aWR0aCA9IC4wMikgKw0KICBsYWJzKHggPSAiUmV0dXJuIiwgeSA9ICJGcmVxdWVuY3kiLCBjYXB0aW9uID0gIlJlZCBsaW5lIGluZGljYXRlcyB3aGF0IHRoZSBpbnZlc3RvcnMgc2hvdWxkIGJlIHBhaWQiLCB0aXRsZSA9ICJFeHBlY3RlZCBSZXR1cm4gdy8gQ3VycmVudCBFdmFsdWF0aW9uIERlc2lnbiIpICANCmBgYA0K