Info
🌱 來自:medical_statistics
statistical_power
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import norm
# Set up variables for the power calculation
effect_size = 0.5 # Medium effect size
alpha = 0.05 # Significance level
sample_sizes = np.arange(10, 300, 10) # Sample sizes from 10 to 300
power_values = []
# Calculate power for each sample size
for n in sample_sizes:
# Calculate the critical z value at the desired alpha
z_alpha = norm.ppf(1 - alpha)
# Standard error of the mean for the given sample size
se = 1 / np.sqrt(n)
# Z score for the observed effect size
z_effect = effect_size / se
# Power is the probability that the Z score is beyond the critical value
power = 1 - norm.cdf(z_alpha - z_effect)
power_values.append(power)
# Plotting the power curve
plt.figure(figsize=(10, 6))
plt.plot(sample_sizes, power_values, label='Power Curve', color='blue', marker='o')
plt.title('Power Analysis')
plt.xlabel('Sample Size')
plt.ylabel('Power')
plt.grid(True)
plt.axhline(y=0.8, color='r', linestyle='--', label='80% Power Level')
plt.legend()
plt.show()