Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的动态功耗计算_Python_Statistics - Fatal编程技术网

Python中的动态功耗计算

Python中的动态功耗计算,python,statistics,Python,Statistics,我已成功地在R中翻译了以下函数: p=pwr.2p2n.test( h=ES.h(conversion_rate_test, conversion_rate_control), n1=total_group_size*(1-holdout), n2=total_group_size*holdout, sig.level=0.1, alternative="two.sided") 进入Python: import statsmodels.stats.api as sms es

我已成功地在R中翻译了以下函数:

p=pwr.2p2n.test(
h=ES.h(conversion_rate_test, conversion_rate_control), 
n1=total_group_size*(1-holdout), 
n2=total_group_size*holdout, 
sig.level=0.1, 
alternative="two.sided")
进入Python:

import statsmodels.stats.api as sms     
es = sms.proportion_effectsize(conversion_rate_test, conversion_rate_control)
sms.NormalIndPower().solve_power(es, nobs1=n1, alpha=alpha, ratio=n2/n1, alternative='two-sided')
但是,Python中的所有计算输入现在都是硬编码的:

lift = 0.01
conversion_rate_control = 0.151169
conversion_rate_test = conversion_rate_control*(1+lift)
holdout = 0.01
n1 = 38820.0*(1-holdout)
n2 = 38820.0*holdout
cl = 0.9
alpha = 1-cl
计算是可行的,但需要根据以下数组(而不是编码值)动态完成:

# providing arrays of values for future heatmap
holdout=np.array([0.01, 0.02, 0.03, 0.04, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5])
lift=np.array([0.01, 0.02, 0.025, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.125, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4])
因此,我的目标是构建以下热图:

Python中的Current calculation在热图的左下角单元格中生成输出


请帮我脱掉这个,提前谢谢你

它与R非常相似,首先我们制作一个data.frame,用于捕获保持/提升的组合,以及一个用于测试的函数:

import pandas as pd
import itertools
import numpy as np
import statsmodels.stats.api as sms
import seaborn as sns

def expand_grid(data_dict):
    rows = itertools.product(*data_dict.values())
    return pd.DataFrame.from_records(rows, columns=data_dict.keys())

def test(holdout,lift):
    conversion_rate_control = 0.151169
    conversion_rate_test = conversion_rate_control*(1+lift)
    es = sms.proportion_effectsize(conversion_rate_test, conversion_rate_control)
    n1 = 38820.0*(1-holdout)
    n2 = 38820.0*holdout
    cl = 0.9
    alpha = 1-cl
    return sms.NormalIndPower().solve_power(es, nobs1=n1, alpha=alpha, ratio=n2/n1, alternative='two-sided')

holdout=np.array([0.01, 0.02, 0.03, 0.04, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5])
lift=np.array([0.01, 0.02, 0.025, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.125, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4])

df = expand_grid({'holdout':holdout,'lift':lift})
电源基本上是按行应用功能:

df['power'] = df.apply(lambda x:test(x[0],x[1]),axis=1)
然后,我们通过传递一个pivot_wide data.frame进行绘图:

fig, ax = plt.subplots(figsize = (13,6))
ax = sns.heatmap(data=df.pivot(index='lift',columns='holdout',values='power'),
            annot=True,cmap="inferno")
fig.axes[0].invert_yaxis()
plt

感谢您的回复!当转换率控制(0.151169)和总组大小(38820.0)来自数据帧时,您建议如何应用这些函数?所以有多个场景,需要构建多个热图?您从上面更改功能
test
,以获取更多输入?然后将绘图包装到另一个函数中。。而不是显示它,就像在R中,你做ggsave或pdf(“…”)