Case 1

A company wants to calculate the value of testing. They have a margin of 25, a marketing cost of 1, and a total customer base of 100.000. Their sample is 5.000 customers. In the past, campaigns have either been a success, with a response rate of 0.05, or a failure, with a response rate of 0.03. Historically, 60% of past mailings have been a failure.

1. What is the expected profit if the company launches the marketing campaign without doing a test?

Our Parameters:

N = 100000 # Customer base
n = 5000 # number in test sample
c = 1 # cost
m = 25 # margin

# Success (Prob=0.4)
p_s = 0.05
# Failure (Prob=0.6)
p_f = 0.03

We can use the following formula:

\[ \Pr(\text{success})\times[N(p_sm-c)] + \Pr(\text{failure})\times[N(p_fm-c)] \]

profit_notest = N*((0.4)*((p_s*m-c))+(0.6)*((p_f*m-c)))
## Expected Profit without doing the test: -$ 5000

2. What is the value of doing the test?

\[ \Pr(\text{success})\times[N(p_sm-c)] + \Pr(\text{failure})\times[n(p_fm-c)] - 0 \]

profit_test <- (0.4)*((N)*(p_s*m-c))+(0.6)*((n)*(p_f*m-c))-0 
## Expected Profit if we run the test: $ 9250

Case 2

A company ran an A/B test and got conversion rates of 30.7% and 32.4% for versions A and B. Assume flat priors and 1000 people in each group; use 10000 draws and set seed at 19312.

set.seed(19312)

n <- 1000 # obs for A
n <- 1000 # obs for B

# Conversion Rates
ybar_A <- 30.7*0.01
ybar_B <- 32.4*0.01

From the prior, \(a_{A,B}=1\) and \(b_{A,B}=1\).

prior_a = 1
prior_b = 1

xx <- seq(0, 1,length=100)
plot(xx, y=dbeta(xx, shape1=prior_a, shape2 = prior_b), 
     type="l", col="black", xlab="response rate", ylab="prior density")
abline(v=prior_a/(prior_a+prior_b))

3. What’s the probability that the posterior mean response rate of B is larger than that of A?

Provide your answer with three decimals separated by a dot, not a comma (e.g. 0.123).

We start estimating the posterior mean response rate. Recall that:

\[ E[p]=\frac{a}{a+b} \]

#posterior distribution 
postA_a = prior_a + n*ybar_A
postA_b = prior_b + n - n*ybar_A
postB_a = prior_a + n*ybar_B
postB_b = prior_b + n - n*ybar_B
## Posterior Response Rate of A 0.31
## Posterior Response Rate of B 0.32

We now can get the probability that the response rate of B is larger than A, \(\Pr(p_A<p_B)\):

set.seed(19312)
B <- 10000
post_draws_A <- rbeta(B,postA_a,postA_b)
post_draws_B <- rbeta(B,postB_a,postB_b)
prob = sum(post_draws_B>post_draws_A)/B
## Probability that B>A is 0.795

The 95% Confidence Intervals:

ci95_A <- qbeta(c(0.025, 0.975), shape1=postA_a, shape2 = postA_b) # CI for A
ci95_B <- qbeta(c(0.025, 0.975), shape1=postB_a, shape2 = postB_b) # CI for B
## [ 0.28 0.34 ]
## [ 0.3 0.35 ]

Finally, we plot our results:

xx=seq(0.24,0.4,length=1000)

plot(xx, y=dbeta(xx, shape1=postA_a, shape2 = postA_b), 
     type="l", col="blue", xlab="response rate", ylab="posterior density")
lines(xx, y=dbeta(xx, shape1=postB_a, shape2 = postB_b), 
     type="l", col="red", xlab="response rate", ylab="posterior density")
lines(xx, y=dbeta(xx, shape1=prior_a, shape2 = prior_b), type="l", col="gray")
legend("topright", col=c("blue", "red", "grey"), legend=c("posterior A", "posterior B", "prior"), bty="n", lty=1)
text(x = .34,y= 58, paste("P(m_A < m_B) = ", round(prob,3)))
abline(v=ci95_A, col="blue", lty=2)
abline(v=ci95_B, col="red", lty=2)

Case 3

A company with 50.000 customers wants to run an A/B test of two different versions of a website. The outcome they want to test is time on site, rolling out whichever version leads to people spending more time there. The average amount of time spent is 5 minutes and the standard deviation of time spent is about 2. The mean across treatments varies with a standard deviation of 0.5.

4. How many people should there be in each test group?

\[ n_A^*=n_B^*=\sqrt{\frac{N}{4}\left(\frac{s}{\sigma}\right)^2+\left(\frac{3}{4}\left( \frac{s}{\sigma} \right)^2 \right)^2 }-\frac{3}{4}\left( \frac{s}{\sigma} \right)^2 \]

set.seed(19312)
N <- 50000 # available population
s <- 2  # how variable the profit is from one customer to another.
sigma <- 0.5 # range of expected conversation rates across previous treatments
mu <- 5  # NOT RELEVANT: average conversion rate across previous treatments
## Optimal Test Sample Size: 435
LS0tDQp0aXRsZTogIkFzc2lnbm1lbnQgMTogVGVzdCAmIFJvbGwiDQphdXRob3I6ICJEYW5pZWwgUmVkZWwiDQpkYXRlOiAiMjAyMi0xMC0zMSINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0Kcm0obGlzdCA9IGxzKCkpDQoNCiMgUEFDS0FHRVMNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShrbml0cikNCmxpYnJhcnkoa2FibGVFeHRyYSkNCmxpYnJhcnkocmVhZHIpDQpgYGANCg0KIyBDYXNlIDENCg0KQSBjb21wYW55IHdhbnRzIHRvIGNhbGN1bGF0ZSB0aGUgdmFsdWUgb2YgdGVzdGluZy4gVGhleSBoYXZlIGEgbWFyZ2luIG9mIDI1LCBhIG1hcmtldGluZyBjb3N0IG9mIDEsIGFuZCBhIHRvdGFsIGN1c3RvbWVyIGJhc2Ugb2YgMTAwLjAwMC4gVGhlaXIgc2FtcGxlIGlzIDUuMDAwIGN1c3RvbWVycy4gSW4gdGhlIHBhc3QsIGNhbXBhaWducyBoYXZlIGVpdGhlciBiZWVuIGEgc3VjY2Vzcywgd2l0aCBhIHJlc3BvbnNlIHJhdGUgb2YgMC4wNSwgb3IgYSBmYWlsdXJlLCB3aXRoIGEgcmVzcG9uc2UgcmF0ZSBvZiAwLjAzLiBIaXN0b3JpY2FsbHksIDYwJSBvZiBwYXN0IG1haWxpbmdzIGhhdmUgYmVlbiBhIGZhaWx1cmUuDQoNCiMjIyAxLiBXaGF0IGlzIHRoZSBleHBlY3RlZCBwcm9maXQgaWYgdGhlIGNvbXBhbnkgbGF1bmNoZXMgdGhlIG1hcmtldGluZyBjYW1wYWlnbiB3aXRob3V0IGRvaW5nIGEgdGVzdD8NCg0KT3VyIFBhcmFtZXRlcnM6DQoNCmBgYHtyfQ0KTiA9IDEwMDAwMCAjIEN1c3RvbWVyIGJhc2UNCm4gPSA1MDAwICMgbnVtYmVyIGluIHRlc3Qgc2FtcGxlDQpjID0gMSAjIGNvc3QNCm0gPSAyNSAjIG1hcmdpbg0KDQojIFN1Y2Nlc3MgKFByb2I9MC40KQ0KcF9zID0gMC4wNQ0KIyBGYWlsdXJlIChQcm9iPTAuNikNCnBfZiA9IDAuMDMNCmBgYA0KDQpXZSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgZm9ybXVsYToNCg0KJCQNClxQcihcdGV4dHtzdWNjZXNzfSlcdGltZXNbTihwX3NtLWMpXSArIFxQcihcdGV4dHtmYWlsdXJlfSlcdGltZXNbTihwX2ZtLWMpXQ0KJCQNCg0KYGBge3J9DQpwcm9maXRfbm90ZXN0ID0gTiooKDAuNCkqKChwX3MqbS1jKSkrKDAuNikqKChwX2YqbS1jKSkpDQpgYGANCg0KYGBge3IsIGVjaG89RkFMU0V9DQpjYXQoIkV4cGVjdGVkIFByb2ZpdCB3aXRob3V0IGRvaW5nIHRoZSB0ZXN0OiAtJCIsIGFicyhwcm9maXRfbm90ZXN0KSkNCmBgYA0KDQojIyMgMi4gV2hhdCBpcyB0aGUgdmFsdWUgb2YgZG9pbmcgdGhlIHRlc3Q/DQoNCiQkDQpcUHIoXHRleHR7c3VjY2Vzc30pXHRpbWVzW04ocF9zbS1jKV0gKyBcUHIoXHRleHR7ZmFpbHVyZX0pXHRpbWVzW24ocF9mbS1jKV0gLSAwDQokJA0KDQpgYGB7cn0NCnByb2ZpdF90ZXN0IDwtICgwLjQpKigoTikqKHBfcyptLWMpKSsoMC42KSooKG4pKihwX2YqbS1jKSktMCANCmBgYA0KDQpgYGB7ciwgZWNobz1GQUxTRX0NCmNhdCgiRXhwZWN0ZWQgUHJvZml0IGlmIHdlIHJ1biB0aGUgdGVzdDogJCIsIGFicyhwcm9maXRfdGVzdCkpDQpgYGANCg0KIyBDYXNlIDINCg0KQSBjb21wYW55IHJhbiBhbiBBL0IgdGVzdCBhbmQgZ290IGNvbnZlcnNpb24gcmF0ZXMgb2YgMzAuNyUgYW5kIDMyLjQlIGZvciB2ZXJzaW9ucyBBIGFuZCBCLiBBc3N1bWUgZmxhdCBwcmlvcnMgYW5kIDEwMDAgcGVvcGxlIGluIGVhY2ggZ3JvdXA7IHVzZSAxMDAwMCBkcmF3cyBhbmQgc2V0IHNlZWQgYXQgMTkzMTIuDQoNCmBgYHtyfQ0Kc2V0LnNlZWQoMTkzMTIpDQoNCm4gPC0gMTAwMCAjIG9icyBmb3IgQQ0KbiA8LSAxMDAwICMgb2JzIGZvciBCDQoNCiMgQ29udmVyc2lvbiBSYXRlcw0KeWJhcl9BIDwtIDMwLjcqMC4wMQ0KeWJhcl9CIDwtIDMyLjQqMC4wMQ0KYGBgDQoNCkZyb20gdGhlIHByaW9yLCAkYV97QSxCfT0xJCBhbmQgJGJfe0EsQn09MSQuDQoNCmBgYHtyfQ0KcHJpb3JfYSA9IDENCnByaW9yX2IgPSAxDQoNCnh4IDwtIHNlcSgwLCAxLGxlbmd0aD0xMDApDQpwbG90KHh4LCB5PWRiZXRhKHh4LCBzaGFwZTE9cHJpb3JfYSwgc2hhcGUyID0gcHJpb3JfYiksIA0KICAgICB0eXBlPSJsIiwgY29sPSJibGFjayIsIHhsYWI9InJlc3BvbnNlIHJhdGUiLCB5bGFiPSJwcmlvciBkZW5zaXR5IikNCmFibGluZSh2PXByaW9yX2EvKHByaW9yX2ErcHJpb3JfYikpDQpgYGANCg0KIyMjIDMuIFdoYXQncyB0aGUgcHJvYmFiaWxpdHkgdGhhdCB0aGUgcG9zdGVyaW9yIG1lYW4gcmVzcG9uc2UgcmF0ZSBvZiBCIGlzIGxhcmdlciB0aGFuIHRoYXQgb2YgQT8NCg0KKlByb3ZpZGUgeW91ciBhbnN3ZXIgd2l0aCB0aHJlZSBkZWNpbWFscyBzZXBhcmF0ZWQgYnkgYSBkb3QsIG5vdCBhIGNvbW1hIChlLmcuIDAuMTIzKS4qDQoNCldlIHN0YXJ0IGVzdGltYXRpbmcgdGhlIHBvc3RlcmlvciBtZWFuIHJlc3BvbnNlIHJhdGUuIFJlY2FsbCB0aGF0Og0KDQokJA0KRVtwXT1cZnJhY3thfXthK2J9DQokJA0KDQpgYGB7cn0NCiNwb3N0ZXJpb3IgZGlzdHJpYnV0aW9uIA0KcG9zdEFfYSA9IHByaW9yX2EgKyBuKnliYXJfQQ0KcG9zdEFfYiA9IHByaW9yX2IgKyBuIC0gbip5YmFyX0ENCnBvc3RCX2EgPSBwcmlvcl9hICsgbip5YmFyX0INCnBvc3RCX2IgPSBwcmlvcl9iICsgbiAtIG4qeWJhcl9CDQpgYGANCg0KYGBge3IsIGVjaG89RkFMU0V9DQpjYXQoIlBvc3RlcmlvciBSZXNwb25zZSBSYXRlIG9mIEEiLCByb3VuZChwb3N0QV9hLyhwb3N0QV9hK3Bvc3RBX2IpLDIpLCJcbiIpDQoNCmNhdCgiUG9zdGVyaW9yIFJlc3BvbnNlIFJhdGUgb2YgQiIsIHJvdW5kKHBvc3RCX2EvKHBvc3RCX2ErcG9zdEJfYiksMikpDQpgYGANCg0KV2Ugbm93IGNhbiBnZXQgdGhlIHByb2JhYmlsaXR5IHRoYXQgdGhlIHJlc3BvbnNlIHJhdGUgb2YgQiBpcyBsYXJnZXIgdGhhbiBBLCAkXFByKHBfQTxwX0IpJDoNCg0KYGBge3J9DQpzZXQuc2VlZCgxOTMxMikNCkIgPC0gMTAwMDANCnBvc3RfZHJhd3NfQSA8LSByYmV0YShCLHBvc3RBX2EscG9zdEFfYikNCnBvc3RfZHJhd3NfQiA8LSByYmV0YShCLHBvc3RCX2EscG9zdEJfYikNCnByb2IgPSBzdW0ocG9zdF9kcmF3c19CPnBvc3RfZHJhd3NfQSkvQg0KYGBgDQoNCmBgYHtyLCBlY2hvPUZBTFNFfQ0KY2F0KCJQcm9iYWJpbGl0eSB0aGF0IEI+QSBpcyIsIHJvdW5kKHByb2IsMykgKQ0KYGBgDQoNClRoZSA5NSUgQ29uZmlkZW5jZSBJbnRlcnZhbHM6DQoNCmBgYHtyfQ0KY2k5NV9BIDwtIHFiZXRhKGMoMC4wMjUsIDAuOTc1KSwgc2hhcGUxPXBvc3RBX2EsIHNoYXBlMiA9IHBvc3RBX2IpICMgQ0kgZm9yIEENCmNpOTVfQiA8LSBxYmV0YShjKDAuMDI1LCAwLjk3NSksIHNoYXBlMT1wb3N0Ql9hLCBzaGFwZTIgPSBwb3N0Ql9iKSAjIENJIGZvciBCDQpgYGANCg0KYGBge3IsIGVjaG89RkFMU0V9DQpjYXQoIlsiLCByb3VuZChjaTk1X0EsIDIpLCAiXSIsICJcbiIpDQpjYXQoIlsiLCByb3VuZChjaTk1X0IsIDIpLCAiXSIsICJcbiIpDQpgYGANCg0KRmluYWxseSwgd2UgcGxvdCBvdXIgcmVzdWx0czoNCg0KYGBge3J9DQp4eD1zZXEoMC4yNCwwLjQsbGVuZ3RoPTEwMDApDQoNCnBsb3QoeHgsIHk9ZGJldGEoeHgsIHNoYXBlMT1wb3N0QV9hLCBzaGFwZTIgPSBwb3N0QV9iKSwgDQogICAgIHR5cGU9ImwiLCBjb2w9ImJsdWUiLCB4bGFiPSJyZXNwb25zZSByYXRlIiwgeWxhYj0icG9zdGVyaW9yIGRlbnNpdHkiKQ0KbGluZXMoeHgsIHk9ZGJldGEoeHgsIHNoYXBlMT1wb3N0Ql9hLCBzaGFwZTIgPSBwb3N0Ql9iKSwgDQogICAgIHR5cGU9ImwiLCBjb2w9InJlZCIsIHhsYWI9InJlc3BvbnNlIHJhdGUiLCB5bGFiPSJwb3N0ZXJpb3IgZGVuc2l0eSIpDQpsaW5lcyh4eCwgeT1kYmV0YSh4eCwgc2hhcGUxPXByaW9yX2EsIHNoYXBlMiA9IHByaW9yX2IpLCB0eXBlPSJsIiwgY29sPSJncmF5IikNCmxlZ2VuZCgidG9wcmlnaHQiLCBjb2w9YygiYmx1ZSIsICJyZWQiLCAiZ3JleSIpLCBsZWdlbmQ9YygicG9zdGVyaW9yIEEiLCAicG9zdGVyaW9yIEIiLCAicHJpb3IiKSwgYnR5PSJuIiwgbHR5PTEpDQp0ZXh0KHggPSAuMzQseT0gNTgsIHBhc3RlKCJQKG1fQSA8IG1fQikgPSAiLCByb3VuZChwcm9iLDMpKSkNCmFibGluZSh2PWNpOTVfQSwgY29sPSJibHVlIiwgbHR5PTIpDQphYmxpbmUodj1jaTk1X0IsIGNvbD0icmVkIiwgbHR5PTIpDQpgYGANCg0KIyBDYXNlIDMNCg0KQSBjb21wYW55IHdpdGggNTAuMDAwIGN1c3RvbWVycyB3YW50cyB0byBydW4gYW4gQS9CIHRlc3Qgb2YgdHdvIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBhIHdlYnNpdGUuIFRoZSBvdXRjb21lIHRoZXkgd2FudCB0byB0ZXN0IGlzIHRpbWUgb24gc2l0ZSwgcm9sbGluZyBvdXQgd2hpY2hldmVyIHZlcnNpb24gbGVhZHMgdG8gcGVvcGxlIHNwZW5kaW5nIG1vcmUgdGltZSB0aGVyZS4gVGhlIGF2ZXJhZ2UgYW1vdW50IG9mIHRpbWUgc3BlbnQgaXMgNSBtaW51dGVzIGFuZCB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uIG9mIHRpbWUgc3BlbnQgaXMgYWJvdXQgMi4gVGhlIG1lYW4gYWNyb3NzIHRyZWF0bWVudHMgdmFyaWVzIHdpdGggYSBzdGFuZGFyZCBkZXZpYXRpb24gb2YgMC41Lg0KDQojIyMgNC4gSG93IG1hbnkgcGVvcGxlIHNob3VsZCB0aGVyZSBiZSBpbiBlYWNoIHRlc3QgZ3JvdXA/DQoNCiQkDQpuX0FeKj1uX0JeKj1cc3FydHtcZnJhY3tOfXs0fVxsZWZ0KFxmcmFje3N9e1xzaWdtYX1ccmlnaHQpXjIrXGxlZnQoXGZyYWN7M317NH1cbGVmdCggXGZyYWN7c317XHNpZ21hfSBccmlnaHQpXjIgXHJpZ2h0KV4yIH0tXGZyYWN7M317NH1cbGVmdCggXGZyYWN7c317XHNpZ21hfSBccmlnaHQpXjINCiQkDQoNCmBgYHtyfQ0Kc2V0LnNlZWQoMTkzMTIpDQpOIDwtIDUwMDAwICMgYXZhaWxhYmxlIHBvcHVsYXRpb24NCnMgPC0gMiAgIyBob3cgdmFyaWFibGUgdGhlIHByb2ZpdCBpcyBmcm9tIG9uZSBjdXN0b21lciB0byBhbm90aGVyLg0Kc2lnbWEgPC0gMC41ICMgcmFuZ2Ugb2YgZXhwZWN0ZWQgY29udmVyc2F0aW9uIHJhdGVzIGFjcm9zcyBwcmV2aW91cyB0cmVhdG1lbnRzDQptdSA8LSA1ICAjIE5PVCBSRUxFVkFOVDogYXZlcmFnZSBjb252ZXJzaW9uIHJhdGUgYWNyb3NzIHByZXZpb3VzIHRyZWF0bWVudHMNCg0KYGBgDQoNCmBgYHtyLCBlY2hvPUZBTFNFfQ0KY2F0KCJPcHRpbWFsIFRlc3QgU2FtcGxlIFNpemU6Iiwgcm91bmQoc3FydChOLzQqKHMvc2lnbWEpXjIgKyAoMy80KihzL3NpZ21hKV4yKV4yKSAtIDMvNCoocy9zaWdtYSleMiwwKSApDQpgYGANCg==