Warning message: In .add_surv_median(p, fit, type = surv.median.line, fun = fun, : Adding survival median lines is not allowed when fun is: cumhaz什么意思
时间: 2024-04-18 21:23:38 浏览: 461
这个警告信息表示在使用 `surv_summary` 函数时,设置的参数 `fun` 为 "cumhaz",但同时又尝试添加生存中位数线。然而,基于累积风险函数(cumulative hazard function)的方法并不支持添加生存中位数线。
生存中位数是指在给定时间点上的生存函数值为0.5的时间点。它通常用于描述生存分析中的中位生存时间。然而,在使用累积风险函数时,由于其特性和计算方式的不同,无法直接从中得到生存中位数。
如果您希望计算生存中位数,可以考虑使用其他方法或函数,如 `surv_median` 函数,该函数可以根据不同的统计方法来估计生存中位数。请注意,在使用不同的方法时,可能需要进行适当的假设和调整。
总之,警告信息的含义是您不能在使用累积风险函数时添加生存中位数线。您可以尝试使用其他方法来计算生存中位数或重新审查分析流程以确定是否需要添加该线条。
相关问题
def __stk_surv(): df=pd.read_sql("select ts_code from stock_basic", con = con0) ts_code = (df[df['ts_code'].str.contains('[HZ]')]['ts_code'] .drop_duplicates() .apply(lambda x: f"'{x}'") .reset_index(drop=True)) for i in ts_code: try: start_date = str(pd.read_sql("select surv_date from stk_surv", con = con3).sort_values('surv_date',ascending = False).iloc[0,0]) start_date=pd.to_datetime(start_date)+pd.Timedelta(1,'days') start_date=start_date.strftime('%Y%m%d') except: start_date = 20220101 dateToday = datetime.date.today().strftime('%Y%m%d') end_date = dateToday i = i[1:10] df = pro.stk_surv(**{ "ts_code": i, "trade_date": "", "start_date": start_date, "end_date": end_date, "limit": "", "offset": "" }, fields=[ "ts_code", "name", "surv_date", "fund_visitors", "rece_place", "rece_mode", "rece_org", "org_type", "comp_rece" ]) # print(df) time.sleep(0.31) df = df[df['rece_mode'].str.contains('调研')] df.to_sql(name='stk_surv',con=con3,if_exists='append',index=False) 增加进度条
你可以在循环中使用tqdm库来添加进度条。以下是修改后的代码示例:
```
from tqdm import tqdm
import time
def __stk_surv():
df=pd.read_sql("select ts_code from stock_basic", con = con0)
ts_code = (df[df['ts_code'].str.contains('[HZ]')]['ts_code']
.drop_duplicates()
.apply(lambda x: f"'{x}'")
.reset_index(drop=True))
for i in tqdm(ts_code):
try:
start_date = str(pd.read_sql("select surv_date from stk_surv", con = con3).sort_values('surv_date',ascending = False).iloc[0,0])
start_date=pd.to_datetime(start_date)+pd.Timedelta(1,'days')
start_date=start_date.strftime('%Y%m%d')
except:
start_date = 20220101
dateToday = datetime.date.today().strftime('%Y%m%d')
end_date = dateToday
i = i[1:10]
df = pro.stk_surv(**{
"ts_code": i,
"trade_date": "",
"start_date": start_date,
"end_date": end_date,
"limit": "",
"offset": ""
}, fields=[
"ts_code",
"name",
"surv_date",
"fund_visitors",
"rece_place",
"rece_mode",
"rece_org",
"org_type",
"comp_rece"
])
# print(df)
time.sleep(0.31)
df = df[df['rece_mode'].str.contains('调研')]
df.to_sql(name='stk_surv',con=con3,if_exists='append',index=False)
```
在上面的代码中,我们使用了tqdm库来包装循环,以自动为你添加进度条。你可以根据需要自定义进度条的样式和位置。
predicted_surv <- predict(fit, newdata = validation, type = "response") predicted_surv <- exp(-predicted_surv) test_surv_obj <- Surv(validation$month, validation$OS) brier_score <- survdiff(test_surv_obj ~ predicted_surv)$chisq / length(predicted_surv) brier_score。解释下这些代码,为什么BRIER score是2
这些代码中,首先使用拟合的 Cox 模型 `fit` 对验证集 `validation` 进行预测,得到了每个样本的生存概率 `predicted_surv`。然后将生存概率转化为生存率,并利用 `test_surv_obj` 构建了一个生存对象。最后,通过 `survdiff` 函数计算出了 Brier 分数 `brier_score`。
Brier 分数是用来评估生存模型预测准确性的指标,它的取值范围为 0 到 1,值越小代表模型预测越准确。在这里,Brier 分数为 2,这说明模型的预测效果很差。
可能的原因包括模型的参数调整不够好,或者数据集本身存在较大的噪声。需要进一步分析数据和模型,找出问题所在并进行改进。
阅读全文