前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python从零开始第五章生物信息学⑤生存分析(log-rank)目录正文

Python从零开始第五章生物信息学⑤生存分析(log-rank)目录正文

作者头像
用户1359560
发布2018-12-26 15:32:21
2.3K1
发布2018-12-26 15:32:21
举报
文章被收录于专栏:生信小驿站生信小驿站

正文

生存分析(Survival analysis)是指根据试验或调查得到的数据对生物或人的生存时间进行分析和推断,研究生存时间和结局与众多影响因素间关系及其程度大小的方法,也称生存率分析或存活率分析。

生存分析适合于处理时间-事件数据,生存时间(survival time)是指从某起点事件开始到被观测对象出现终点事件所经历的时间,如从疾病的“确诊”到“死亡”。 生存时间有两种类型:完全数据(complete data)指被观测对象从观察起点到出现终点事件所经历的时间;截尾数据(consored data)或删失数据,指在出现终点事件前,被观测对象的观测过程终止了。由于被观测对象所提供的信息是不完全的,只知道他们的生存事件超过了截尾时间。截尾主要由于失访、退出和终止产生。 生存分析方法大体上可分为三类:非参数法、半参数方法和参数法,用Kaplan-Meier曲线(也称乘积极限法Product limit method)和寿命表法(Life table method)估计生存率和中位生存时间等是非参数的方法,半参数方法指Cox比例风险模型,参数方法指指数模型、Weibull模型、Gompertz模型等分析方法。

非参数法(log-rank) Log-rank test to compare the survival curves of two or more groups(通过比较两组或者多组之间的的生存曲线,一般是生存率及其标准误,从而研究之间的差异,一般用log rank检验)

  • 导入必须的python包
代码语言:javascript
复制
%reset -f
%clear
# In[*]
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
import lifelines as ll
from IPython.display import HTML
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.plotly as py
import plotly.tools as tls   
from plotly.graph_objs import *
import os
from lifelines.estimation import KaplanMeierFitter
kmf = KaplanMeierFitter()
from lifelines.statistics import logrank_test
os.chdir("D:\\Rwork\\third\\Fig2")
  • 读取数据
代码语言:javascript
复制
sur = pd.read_csv('entropy_surival.csv',header=0,index_col=0)


sur = sur[['sample','entr','PFI_status', 'PFI_time']]

sur['entr'] = np.where(sur['entr'] > sur['entr'].median(), 'high','low')
sur  = sur.dropna(axis=0,how='any')
#sur_high = sur.loc[sur["PPP2R2B"] >sur["PPP2R2B"].median()]
#sur_high = sur_high.loc[:,['futime','fustat','PPP2R2B']]
#sur_high.head(5)
sur['entr']
  • 绘制两组的生存曲线,且比较其P值
代码语言:javascript
复制
# In[*]


f_low = sur['entr'] == 'low'
T_low = sur[f_low]['PFI_time']
C_low = sur[f_low]['PFI_status']
kmf.fit(T_low,event_observed=C_low)
kmf.plot(title='low entr')



# In[*]

f_high = sur['entr'] == 'high'
T_high = sur[f_high]['PFI_time']
C_high = sur[f_high]['PFI_status']
kmf.fit(T_high,event_observed=C_high)
kmf.plot(title='high entr')
  • 得到的结果如下所示:两组的生存存在不同(p< 0.05)
代码语言:javascript
复制
<lifelines.StatisticalResult: 

t_0=-1, alpha=0.95, null_distribution=chi squared, df=1

test_statistic      p    
        7.5138 0.0061  **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
  • 两组的各自生存曲线
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.12.13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正文
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档