医学统计学从入门到精通:基础概念与代码实例
医学统计学是医疗研究和公共卫生领域中不可或缺的分析工具,用于理解数据背后的规律和趋势,从而指导临床决策和政策制定。本篇文章将带您从基础入门逐步掌握医学统计学的核心概念,附带Python代码示例,帮助您将理论知识应用到实际数据分析中。
- 数据的基本描述与分布分析
描述性统计是医学统计的第一步,用于了解数据的中心趋势和分布情况。常用的描述性统计指标包括均值、中位数、标准差和四分位数。
示例:加载数据并进行基本描述
import pandas as pd
# 假设我们有一份患者的血压、年龄、和性别数据
data = {
'Age': [23, 35, 45, 50, 29, 65, 72, 53, 43, 60],
'BloodPressure': [120, 130, 110, 140, 135, 145, 150, 132, 125, 138],
'Gender': ['M', 'F', 'M', 'F', 'M', 'M', 'F', 'F', 'M', 'F']
}
df = pd.DataFrame(data)
# 计算基本描述性统计
desc_stats = df.describe()
print(desc_stats)
以上代码将输出Age
和BloodPressure
的平均值、标准差、最小值和最大值等信息。这些统计指标有助于初步了解数据的分布情况。
数据分布分析
数据分布分析帮助我们判断数据是否符合某种统计分布(如正态分布),这在后续的假设检验中尤为重要。常用方法包括绘制直方图、Q-Q图和Shapiro-Wilk正态性检验。
示例:正态性检验
import matplotlib.pyplot as plt
import scipy.stats as stats
# 绘制血压的直方图
plt.hist(df['BloodPressure'], bins=5, color='skyblue', edgecolor='black')
plt.title('Blood Pressure Distribution')
plt.xlabel('Blood Pressure')
plt.ylabel('Frequency')
plt.show()
# 正态性检验
stat, p = stats.shapiro(df['BloodPressure'])
print(f'Shapiro-Wilk Test: Statistic={
stat}, p-value={
p}')
在医学研究中,假设检验是分析数据分布的重要工具。Shapiro-Wilk检验的p
值用于判断数据是否符合正态分布。
- 假设检验:t检验和卡方检验
假设检验是统计推断的核心,在医学统计中主要用于验证研究假设是否成立。常用的假设检验包括t检验和卡方检验。
t检验用于比较两组数据的均值是否存在显著差异,常用于实验组和对照组的数据比较。
示例:双样本t检验
假设我们有两个样本组的血压数据,分别为实验组和对照组:
# 实验组和对照组的血压数据
group1 = [120, 132, 115, 130, 125]
group2 = [140, 135, 150, 145, 138]
# 进行独立样本t检验
t_stat, p_val = stats.ttest_ind(group1, group2)
print(f'T-test: t-statistic={
t_stat}, p-value={
p_val}')
根据t
值和p
值的结果,我们可以判断两组数据的均值是否存在显著性差异(通常以p < 0.05
为显著性标准)。
卡方检验主要用于分类数据,检查观察到的频率与期望频率是否有显著差异,常用于性别与疾病状态的关系分析。
示例:卡方检验
# 假设我们有一个列联表,表示性别与是否患病的频数
contingency_table = pd.DataFrame([[20, 30], [15, 35]], columns=['Disease', 'No Disease'], index=['Male', 'Female'])
# 进行卡方检验
chi2, p, dof, expected = stats.chi2_contingency(contingency_table)
print(f'Chi-square Test: chi2={
chi2}, p-value={
p}, dof={
dof}')
卡方检验的结果包括chi2
值和p
值,用于判断变量之间是否存在显著性关联。
- 回归分析:线性回归与逻辑回归
线性回归
线性回归用于预测因变量和自变量之间的关系,在医学统计中常用于分析连续变量之间的关联性,例如年龄与血压之间的关系。
示例:线性回归分析
import statsmodels.api as sm
# 自变量(年龄)和因变量(血压)
X = df['Age']
y = df['BloodPressure']
X = sm.add_constant(X) # 添加常数项
# 进行线性回归
model = sm.OLS(y, X).fit()
print(model.summary())
model.summary()
显示回归系数、显著性水平和拟合优度指标,用于判断自变量对因变量的影响强度。
逻辑回归
逻辑回归适用于二分类变量,如“是否患病”。在医学研究中,逻辑回归常用于分析患者特征与疾病状态之间的关系。
示例:逻辑回归分析
from sklearn.linear_model import LogisticRegression
import numpy as np
# 生成是否患病的标签(0:未患病,1:患病)
df['HasDisease'] = [0, 1, 0, 1, 0, 1, 1, 0, 1, 1]
# 自变量(年龄和性别)和因变量(是否患病)
X = pd.get_dummies(df[['Age', 'Gender']], drop_first=True)
y = df['HasDisease']
# 进行逻辑回归
model = LogisticRegression()
model.fit(X, y)
print(f'Logistic Regression Coefficients: {
model.coef_}, Intercept: {
model.intercept_}')
逻辑回归输出的回归系数和截距可以帮助我们理解特征对患病风险的影响。
- 生存分析
在医学研究中,生存分析用于研究时间数据,常用于评估患者的生存期。常见方法包括Kaplan-Meier曲线和Cox比例风险模型。
示例:Kaplan-Meier曲线
from lifelines import KaplanMeierFitter
# 假设我们有10名患者的生存时间和是否存活(1表示死亡,0表示存活)
T = [5, 10, 12, 15, 18, 20, 25, 30, 35, 40] # 生存时间
E = [1, 1, 0, 1, 0, 1, 1, 0, 1, 1] # 是否死亡
kmf = KaplanMeierFitter()
kmf.fit(T, event_observed=E)
# 绘制Kaplan-Meier生存曲线
kmf.plot_survival_function()
plt.title('Kaplan-Meier Survival Curve')
plt.xlabel('Time')
plt.ylabel('Survival Probability')
plt.show()
通过上述示例和代码,我们从描述性统计、假设检验、回归分析到生存分析逐步探索了医学统计学的核心方法。掌握这些工具和技术后,您可以更有效地开展医学数据的统计分析,为临床决策提供科学依据。
《医学统计学从入门到精通》书籍推荐
轻松掌握医学统计学,从入门到精通
让临床科研数据处理不再是难题!
从零开始,全面精通医学统计学
从基础概念到高级应用
融合SPSS与PASS等
结合医学情境案例
逐步解析统计奥秘
助力医学探索者构建坚实统计基础
精准把握数据背后的价值
本书从医学统计学最基础的概念讲起,由浅入深讲解医学统计学理论,并辅以配套视频,带领读者进行案例实操。
让读者轻松打破统计学难学和难用的“魔咒”,从而轻轻松松进行临床科研数据的处理。全书共分为17章,涵盖医学统计学思想与原理、初级统计(统计描述:医学统计基础和统计思想、医学统计设 计、医学统计常用描述指标、统计图表)、中级统计(差异分析:参数估计与假设检验、t检验、方差分析、卡方检验、非参数检验)、高级统计(关系分析:相关性分析、线性回归分析、Logistic回归分析、生存分析),以及4章专题内容,涉及医学诊断试验、医学研究常用样本量估算、变量筛选与建模策略和医学统计方法选择。书中采用SPSS、GraphPad Prism、PASS三款软件进行案例实战与视频讲解,让读者体验真正的实操案例教学。
本书最大的特色就是内容通俗易懂,实用性强,作者全程录制视频讲学。适用人群为生物医药领域研究生、生物医药领域临床科研工作者、临床医生、科研院所研究人员、临床护士、医药卫生管理人员、医药类高校教师,以及其他对临床科研感兴趣的人员。另外,本书也适合作为相关培训机构的教材使用。
作者简介
武松,中国疾病预防控制中心博士、安徽中医药大学教授、国内多家杂志统计学编审、“精鼎统计”公众号创始人,全网粉丝约20余万。
陈道俊,安徽医科大学流行病学与卫生统计学博士、安徽医学高等专科学校副教授、硕士生导师、SPSS认证高级数据分析师、健康管理师,专长SPSS、SAS、Stata等统计软件,国内3家杂志编审,多次参编流行病学与卫生统计学教材和专著。目前主持课题6项,参与课题8余项,以第一作者或通讯作者发表论文20余篇。