python 绘制KM曲线的代码
时间: 2024-07-17 15:00:28 浏览: 166
在Python中,绘制Kolmogorov-Smirnov (KS)曲线通常用于比较两个数据分布的相似性。以下是一个简单的例子,使用`scipy`库中的`kstwosamp`函数和`matplotlib`库来绘制KS检验结果的图形:
```python
import matplotlib.pyplot as plt
from scipy.stats import kstest
import numpy as np
# 假设我们有两个随机生成的数据集
data1 = np.random.normal(size=100)
data2 = np.random.normal(loc=1, scale=2, size=100)
# 进行KS检验
statistic, p_value = kstest(data1, 'norm', args=(data2.mean(), data2.std()))
# 计算理论分布的KS值(假设正态分布)
critical_values = [0.975, 0.95, 0.90] # 不同显著水平下的临界值
# 绘制KS曲线
ks_stat = np.linspace(0, 1, 1000) # x轴范围从0到1
ks_pdf = stats.kstwo_samples(ks_stat, data1, data2) # 理论分布的累积分布函数
plt.plot(ks_stat, ks_pdf, label='KS distribution')
plt.axhline(y=p_value, color='red', linestyle='--', label=f'p-value: {p_value:.3f}')
# 画出临界值
for cv in critical_values:
plt.vlines(cv, 0, 1, colors='black', linestyles=':', label=f'Critical value ({cv:.2f})')
# 添加图例和标签
plt.legend()
plt.xlabel('Kolmogorov-Smirnov Statistic')
plt.ylabel('Cumulative Distribution')
plt.title('Kolmogorov-Smirnov Test Results')
plt.show()
阅读全文