我最近开始使用Python库statsmodel(从R转换而来)。我希望使用一个简单的线性回归模型,并估计其统计能力,类似于R中的函数pwr.f2.test
(使用Cohen的f2作为效应大小)
我能够在不使用任何内置函数(如solve_power(在statsmodel.stats.power
)的情况下获得该功率,如下面的代码所示。然而,当使用statsmodels.stats.power.FTestPower()
(使用solve_power
)时,与模拟方法或R中的函数相比,我得到了非常不同的结果
我想知道在使用这些函数时是否遗漏了什么
def multipleRegressionPowerAnalysis (weight, N, num_variables, alpha=0.05, sims=2):
signif = np.zeros(sims)
for s in range(sims):
x, y = sim(weight, N, num_variables)
results = sm.OLS(y,x).fit()
signif[s] = (results.f_pvalue<=alpha)
empirical_power = np.mean(signif)
R2 = sum(weight**2)
solver = statsmodels.stats.power.FTestPower()
f2_power = solver.solve_power(effect_size=(R2/(1-R2)), df_num=num_variables,
df_denom=(N-num_variables), nobs=N, alpha=alpha,
power=None, ncc=1) # Similar to the pwr.f2.test function in R
f2_power = solver.solve_power(effect_size=np.sqrt(R2/(1-R2)), df_num=(N-num_variables), df_denom=(num_variables), nobs=N, alpha=alpha, power=None, ncc=1) # Updated function
return empirical_power, f2_power
empirical_power, f2_power = multipleRegressionPowerAnalysis(np.array([0.12, 0.4, 0.05, 0.02, 0.1]),
20, 5, sims=1000)
print(empirical_power, f2_power)
empirical_power, f2_power = multipleRegressionPowerAnalysis(np.array([0.15]), 343, 1, sims=1000)
print(empirical_power, f2_power)
例1:
例2:
注意:更新后的通话如上所示,并在下面的评论中进行了描述
目前没有回答
相关问题 更多 >
编程相关推荐