This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| for i, rate in enumerate(simulated_diffs_in_rates[:10]): | |
| print(f"simulated diff in rates {i+1}: {rate:.1%}") | |
| #> simulated diff in rates 1: -50.0% | |
| #> simulated diff in rates 2: -16.7% | |
| #> simulated diff in rates 3: 16.7% | |
| #> simulated diff in rates 4: 16.7% | |
| #> simulated diff in rates 5: 50.0% | |
| #> simulated diff in rates 6: 50.0% | |
| #> simulated diff in rates 7: -16.7% |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| NUM_SIMULATIONS = 10_000 | |
| simulated_diffs_in_rates = [] | |
| for _ in range(NUM_SIMULATIONS): | |
| rng.shuffle(all_users) | |
| control_conversion_rate = all_users[:NUM_CONTROL_USERS].mean() | |
| variant_conversion_rate = all_users[NUM_CONTROL_USERS:].mean() | |
| simulated_diffs_in_rates.append(variant_conversion_rate - control_conversion_rate) | |
| simulated_diffs_in_rates = np.array(simulated_diffs_in_rates) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| print(f"simulated control conversion rate: {simulated_control_group.mean():.1%}") | |
| print(f"simulated variant conversion rate: {simulated_variant_group.mean():.1%}") | |
| #> simulated control conversion rate: 66.7% | |
| #> simulated variant conversion rate: 50.0% | |
| simulated_diff_in_rates = simulated_variant_group.mean() - simulated_control_group.mean() | |
| print(f"simulated difference in conversion rates: {simulated_diff_in_rates:.1%}") |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| simulated_control_group = all_users[:NUM_CONTROL_USERS] | |
| simulated_variant_group = all_users[NUM_CONTROL_USERS:] | |
| simulated_control_group, simulated_variant_group | |
| #> (array([0., 1., 1., 0., 1., 1.]), array([1., 0., 0., 0., 1., 1.])) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| rng.shuffle(all_users) | |
| #> array([0., 1., 1., 0., 1., 1., 1., 0., 0., 0., 1., 1.]) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| all_users = np.hstack([control_users, variant_users]) | |
| #> array([1., 1., 1., 0., 0., 0., 1., 1., 1., 1., 0., 0.]) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| observed_diff_in_rates = variant_conversion_rate - control_conversion_rate | |
| print(f"observed difference in conversion rates: {observed_diff_in_rates:.1%}") | |
| #> observed difference in conversion rates: 16.7% |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| NUM_VARIANT_USERS = 6 | |
| NUM_CONVERTING_VARIANT_USERS = 4 | |
| variant_users = np.zeros(NUM_VARIANT_USERS) | |
| variant_users[:NUM_CONVERTING_VARIANT_USERS] = 1.0 | |
| variant_conversion_rate = variant_users.mean() | |
| print(f"variant conversion rate: {variant_conversion_rate:.1%}") | |
| #> variant conversion rate: 66.7% |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| control_conversion_rate = control_users.mean() | |
| print(f"control conversion rate: {control_conversion_rate:.1%}") | |
| #> control conversion rate: 50.0% |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| NUM_CONVERTING_CONTROL_USERS = 3 | |
| control_users[:NUM_CONVERTING_CONTROL_USERS] = 1.0 | |
| #> array([1., 1., 1., 0., 0., 0.]) |