python 基于医学临床特征,用卡方检验筛选临床特征,请给出完整代码
时间: 2024-09-12 13:02:44 浏览: 36
基于卡方分布的 pearson 卡方检验附matlab代码 上传.zip
5星 · 资源好评率100%
卡方检验是一种统计学方法,用于研究两个分类变量之间是否独立。在Python中,我们可以使用`scipy`库中的`chi2_contingency`函数来进行卡方检验。以下是一个基于医学临床特征使用卡方检验筛选临床特征的示例代码:
```python
import numpy as np
from scipy.stats import chi2_contingency
# 假设我们有一组临床数据,其中包含两个特征:'Feature1' 和 'Feature2',以及目标变量 'Target'
# 这里我们用随机数来模拟这些数据
np.random.seed(0)
data = {
'Feature1': np.random.choice(['Yes', 'No'], size=100),
'Feature2': np.random.choice(['High', 'Low'], size=100),
'Target': np.random.choice(['Disease', 'Healthy'], size=100)
}
# 计算每个特征与目标变量的交叉表(contingency table)
def calculate_contingency_table(feature, target):
cross_tab = np.array([np.array(list(x)) for x in zip(feature, target)]).T
return np.array([cross_tab[0], cross_tab[1]]).T
# 进行卡方检验并输出结果
def chi_squared_test(cross_tab):
chi2, p, dof, expected = chi2_contingency(cross_tab)
print(f"Chi2: {chi2}")
print(f"P-value: {p}")
print(f"Degrees of Freedom: {dof}")
print("Expected Table:\n", expected)
# 例如,我们可以对Feature1和Target进行卡方检验
feature1_cross_tab = calculate_contingency_table(data['Feature1'], data['Target'])
chi_squared_test(feature1_cross_tab)
# 同理,也可以对Feature2和Target进行卡方检验
feature2_cross_tab = calculate_contingency_table(data['Feature2'], data['Target'])
chi_squared_test(feature2_cross_tab)
# 根据p值来判断特征是否与目标变量独立,通常p值小于0.05则认为两个变量不是独立的
```
在实际应用中,你会需要替换模拟数据部分,使用真实医学数据中的临床特征。卡方检验的`p`值可以帮助我们判断两个分类变量之间是否有统计学上的关联性。如果`p`值小于某个阈值(例如0.05),则我们拒绝原假设(两个变量独立),认为这两个变量是有关联的。
在使用卡方检验时需要注意,它只适用于足够大的样本量,且数据中的期望频数不应太小。如果频数太小,可能需要使用其他统计方法。
阅读全文