Skip to content

Instantly share code, notes, and snippets.

View lylayang's full-sized avatar

Lyla Yang lylayang

View GitHub Profile
import scipy.stats as stats
CA=[364, 245, 284, 172, 198, 239, 259, 168, 188, 256, 400, 329, 198, 209, 412, 358, 593, 261, 209, 245, 329, 136, 358]
NY=[564, 345, 484, 172, 298, 259, 219, 198, 234, 356, 127, 427, 298, 229, 171, 600, 172, 280, 209, 245, 188, 256, 400]
TX=[364, 245, 284, 172, 198, 239, 259, 168, 188, 256, 400, 329, 198, 209, 412, 358, 593, 261, 239, 245, 329, 136, 358]
VA=[356, 127, 427, 298, 229, 171, 600, 172, 280, 364, 245, 284, 172, 198, 239, 259, 168, 188, 256, 400, 329]
IL=[364, 245, 284, 172, 198, 239, 259, 168, 188, 256, 400, 329, 198, 209, 412, 358, 284, 172, 198, 239, 259, 168]
stats.f_oneway(CA, NY, TX, VA, IL)
#Output:
#F_onewayResult(statistic=0.3838385795048716, pvalue=0.8197813592833273)
samplesize_list=[]
baseline=0.1
#set lift range: 5%~30% with 1% incrementality of baseline(0.1)
deltas=np.arange(0.005, 0.03, 0.001)
for delta in deltas:
prob2=baseline+delta
effect_size=sms.proportion_effectsize(baseline, prob2)
sample_size=sms.NormalIndPower().solve_power(effect_size=effect_size, power=0.8, alpha=0.05, ratio=1)
samplesize_list.append(sample_size)
plt.plot(deltas, samplesize_list)
import statsmodels.stats.api as sms
effect_size = 0.1
alpha = 0.05 # significance level
power = 0.8
sample_size = sms.TTestIndPower().solve_power(effect_size = effect_size, power = power, alpha = alpha)
print('Required sample size ~ {0:.1f}'.format(sample_size) + ' per group')
#Output:
#Required sample size ~ 1570.7 per group
import statsmodels.stats.api as sms
baseline_cvr=0.1
alpha=0.05
power=0.8
mini_diff=0.1*baseline_cvr
effect_size=sms.proportion_effectsize(baseline_cvr, baseline_cvr+mini_diff)
sample_size=sms.NormalIndPower().solve_power(effect_size=effect_size, power=power, alpha=alpha, ratio=1)
print('Required sample size ~ {0:.1f}'.format(sample_size) + ' per group')
#Output:
#Required sample size ~ 14744.1 per group
import numpy as np
from scipy.stats import mannwhitneyu
sample1=[32, 34, 29, 39, 38, 37, 38, 36, 30, 26]
sample2=[40, 34, 30, 39, 38, 37, 38, 36, 50, 49]
stat, pvalue=mannwhitneyu(sample1, sample2)
print('statistics=%.3f, p=%.5f'%(stat,pvalue))
alpha=0.05
if pvalue> alpha:
print('Two Groups are from the Same distribution(fail to reject H0) under alpha=0.05')
else:
import scipy.stats as stats
from scipy.stats import chi2
ob_table = np.array([[4514, 486], [4473, 527]])
result = stats.chi2_contingency(ob_table, correction = False) # correction = False due to df=1
chisq, pvalue = result[:2]
print('chisq = {}, pvalue = {}'.format(chisq, pvalue))
import statsmodels.stats.proportion as proportion
import numpy as np
converted = np.array([486, 527])
clicks = np.array([5000, 5000])
chisq, pvalue, table = proportion.proportions_chisquare(converted, clicks)
print('chisq =%.3f, pvalue = %.3f'%(chisq, pvalue))
print("Contingency Table:")
print(table)
from scipy.stats import ttest_ind
import numpy as np
order_value_control_group=[32, 34, 29, 22, 39, 38, 37, 38, 36, 30, 26, 22, 22]
order_value_experimental_group=[40, 39, 30, 22, 39, 38, 37, 38, 36, 50, 26, 22, 49]
AOV_control_group=int(np.mean(order_value_control_group))
AOV_experimental_group=int(np.mean(order_value_experimental_group))
print('Average Order Value of Control Group: $', AOV_control_group)
print('Average Order Value of Experiment Group: $', AOV_experimental_group)
tscore, pval=ttest_ind(order_value_control_group, order_value_experimental_group)
print('t-score:', round(tscore,3))
from statsmodels.stats.proportion import proportions_ztest
import pandas as pd
import numpy as np
conversions = np.array([486, 527])
clicks = np.array([5000, 5000])
zscore, pvalue = proportions_ztest(conversions, clicks, alternative = 'two-sided')
print('zscore = {:.4f}, pvalue = {:.4f}'.format(zscore, pvalue))
# [output]: zscore = -1.3589, pvalue = 0.1742
@lylayang
lylayang / Get_facebook_ads_accounts.py
Created May 28, 2019 20:20
Get_fb_campaign_stats
'''
Refrence https://github.com/lylayang/facebook-python-ads-sdk
'''
from facebook_business.api import FacebookAdsApi
from facebook_business.adobjects.adaccount import AdAccount
from facebook_business.adobjects.adaccountuser import AdAccountUser
# Initialize a new Session and instantiate an API object: