我在使用coxph()时遇到了一些麻烦.我有两个分类变量:"tecnologia"和"pais",我想评估"pais"对"tecnologia"的可能的交互作用."tecnologia"是一个具有2个级别的变量因子:gps和convencional.而"pais"为2级:PT和ES.我不知道为什么这个警告不断出现.这是代码和输出:
cox_AC<-coxph(Surv(dados_temp$dias_seg,dados_temp$status)~tecnologia*pais,data=dados_temp)
Warning message:
In coxph(Surv(dados_temp$dias_seg, dados_temp$status) ~ tecnologia * :
X matrix deemed to be singular; variable 3
> cox_AC
Call:
coxph(formula = Surv(dados_temp$dias_seg, dados_temp$status) ~
tecnologia * pais, data = dados_temp)
coef exp(coef) se(coef) z p
tecnologiagps -0.152 0.859 0.400 -0.38 7e-01
paisPT 1.469 4.345 0.406 3.62 3e-04
tecnologiagps:paisPT NA NA 0.000 NA NA
Likelihood ratio test=23.8 on 2 df, p=6.82e-06 n= 127, number of events= 64
Run Code Online (Sandbox Code Playgroud)
我正在打开关于这个主题的另一个问题,虽然几个月前我做了一个类似的问题,因为我再次面临同样的问题,还有其他数据.而这次我确定这不是一个与数据相关的问题.
有人能帮助我吗?谢谢
更新: 问题似乎不是一个完美的分类
> xtabs(~status+tecnologia,data=dados)
tecnologia
status conv doppler gps …Run Code Online (Sandbox Code Playgroud) 我想从没有NA的data.frame中选择具有正向过程的Cox模型.以下是一些示例数据:
test <- data.frame(
x_1 = runif(100,0,1),
x_2 = runif(100,0,5),
x_3 = runif(100,10,20),
time = runif(100,50,200),
event = c(rep(0,70),rep(1,30))
)
Run Code Online (Sandbox Code Playgroud)
这个表没有任何意义,但如果我们尝试建立一个模型:
modeltest <- coxph(Surv(time, event) ~1, test)
modeltest.forward <- step(
modeltest,
data = test,
direction = "forward",
scope = list(lower = ~ 1, upper = ~ x_1 + x_2 + x_3)
)
Run Code Online (Sandbox Code Playgroud)
前锋在第一步结束时说:
在is.na(fit $ coefficients)中:is.na()应用于'NULL'类型的非(列表或向量)
(三次)
我试图改变上部模型,我甚至试过upper = ~ 1但警告仍然存在.我不明白:我没有NAs,我的载体都是数字(我检查过).我搜索了人们是否有同样的问题,但由于矢量的名称或类别,我能找到的只是问题.
我的代码出了什么问题?
我在使用coxph()时遇到了一些麻烦.我有两个分类变量:性别和可能原因,我想用作预测变量.性只是典型的男性/女性,但可能的原因有5种选择.我不知道警告信息有什么问题.为什么cofidence间隔从0到Inf并且p值如此之高?
这是代码和输出:
> my_coxph <- coxph(Surv(tempo,status) ~ factor(Sexo)+ factor(Causa.provavel) , data=ceabn)
Warning message:
In fitter(X, Y, strats, offset, init, control, weights = weights, :
Loglik converged before variable 2,3,5,6 ; beta may be infinite.
> summary(my_coxph)
Call:
coxph(formula = Surv(tempo, status) ~ factor(Sexo) + factor(Causa.provavel),
data = ceabn)
n= 43, number of events= 31
coef exp(coef) se(coef) z Pr(>|z|)
factor(Sexo)macho 7.254e-01 2.066e+00 4.873e-01 1.488 0.137
factor(Causa.provavel)caca 2.186e+01 3.107e+09 9.698e+03 0.002 0.998
factor(Causa.provavel)colisao linha MT 1.973e+01 3.703e+08 9.698e+03 0.002 0.998
factor(Causa.provavel)indeterminado …Run Code Online (Sandbox Code Playgroud) 我使用R中的以下代码建立了Cox比例风险模型,用于预测死亡率.协变量A,B和C的添加只是为了避免混淆(即年龄,性别,种族),但我们真的对预测X感兴趣.X是一个连续变量.
cox.model <- coxph(Surv(time, dead) ~ A + B + C + X, data = df)
Run Code Online (Sandbox Code Playgroud)
现在,我正在为此绘制Kaplan-Meier曲线.我一直在寻找如何创造这个数字,但我没有太多运气.我不确定是否可以为Cox模型绘制Kaplan-Meier?Kaplan-Meier是否适合我的协变量或不需要它们?
我尝试过的是下面,但我被告知这是不对的.
plot(survfit(cox.model), xlab = 'Time (years)', ylab = 'Survival Probabilities')
Run Code Online (Sandbox Code Playgroud)
我还试图绘制一个显示死亡累积危险的数字.我不知道我是否正确行事,因为我尝试了几种不同的方式并获得了不同的结果.理想情况下,我想绘制两条线,一条显示X的第75百分位的死亡风险,另一条显示X的第25百分位.我怎么能这样做?
我可以列出我尝试过的所有其他内容,但我不想混淆任何人!
非常感谢.
I have a dataset with survival data and a few missing covariates. I've successfully applied the mice-package to imputate m-numbers of datasets using the mice() function, created an imputationList object and applied a Cox PH model on each m-dataset. Subsequently I'ved pooled the results using the MIcombine() function. This leads to my question:
How can I get a p-value for the pooled estimates for each covariate? Are they hidden somewhere within the MIcombine object?
我知道 p 值并不是一切,但报告估计值和置信区间而没有相应的 p 值对我来说似乎很奇怪。我能够计算一个近似值。使用例如Altman …
我不想将cox回归的输出导出到我可以放入文章的表中.我想最好的方法是使用xtable:
library(survival)
data(pbc)
fit.pbc <- coxph(Surv(time, status==2) ~ age + edema + log(bili) +
log(protime) + log(albumin), data=pbc)
summary(fit.pbc)
library(xtable)
xtable(fit.pbc)
Run Code Online (Sandbox Code Playgroud)
现在我想对输出执行以下操作:
提前致谢!
我想在coxph具有基于样条项的时间相关系数的模型的情况下将估计的风险比绘制为时间的函数.我使用函数创建了时间相关系数tt,类似于此示例直接来自?coxph:
# Fit a time transform model using current age
cox = coxph(Surv(time, status) ~ ph.ecog + tt(age), data=lung,
tt=function(x,t,...) pspline(x + t/365.25))
Run Code Online (Sandbox Code Playgroud)
调用会survfit(cox)导致错误,该错误survfit无法理解带有tt术语的模型(如Terry Therneau在2011年所述).
您可以使用提取线性预测器cox$linear.predictors,但我需要以某种方式提取年龄,而不是简单地提取每个时间.因为tt在事件时间拆分数据集,所以我不能只将输入数据帧的列与coxph输出匹配.另外,我真的想绘制估计函数本身,而不仅仅是观察数据点的预测.
我仍然坚持这个.我一直在深入研究这个对象:
spline.obj = pspline(lung$age)
str(spline.obj)
# something that looks very useful, but I am not sure what it is
# cbase appears to be …Run Code Online (Sandbox Code Playgroud) 运行生存分析,假设关于变量的p值具有统计显着性 - 假设与结果呈正相关.然而,根据Schoenfeld残差,违反了比例风险(PH)假设.
在纠正PH违规后,可能会发生以下哪种情况?
PH假设违规通常意味着需要在模型中包含交互效应.在简单线性回归中,包括新变量可能由于共线性而改变现有变量系数的方向.在上面的案例中我们可以使用相同的理由吗?
我使用最佳子集选择包来确定构建模型的最佳自变量(我确实有这样做的特定原因,而不是直接使用最佳子集对象)。我想以编程方式提取特征名称并使用生成的字符串来构建我的模型公式。结果会是这样的:
x <- "x1 + x2 + x3"
y <- "Surv(time, event)"
Run Code Online (Sandbox Code Playgroud)
因为我正在构建coxph模型,所以公式如下:
coxph(Surv(time, event) ~ x1 + x2 + x3)
Run Code Online (Sandbox Code Playgroud)
使用这些字符串字段,我尝试构建如下公式:
form <- y ~ x
Run Code Online (Sandbox Code Playgroud)
这创建了一个类对象formula,但是当我调用它时,coxph它不会根据从公式对象创建的引用进行评估。我收到以下错误:
Error in model.frame.default(formula = y ~ x) : object is not a matrix
Run Code Online (Sandbox Code Playgroud)
如果我eval在调用中调用对象 y 和 x coxph,我会得到以下结果:
Error in model.frame.default(formula = eval(y) ~ eval(x), data = df) :
Run Code Online (Sandbox Code Playgroud)
变量长度不同(针对“eval(x)”找到)
我不太确定如何继续。感谢您的输入。
在我的生存分析任务中,我使用了 cox 比例模型来计算数据集不同组中的一致性指数 (c-index) 值。我想知道如何将 p 值添加到我的 c-index 图以比较不同的组看起来像这个图?

这是我的代码:
surv <- with(group, Surv(group$survival, group$time))
# calculate survival
sum.surv_1 <- with(group, summary(coxph(surv ~ group$1)))
sum.surv.1_2 <- with(group, summary(coxph(surv ~ group$1 + group$2,ties = T)))
c_index.1 <- sum.surv_1$concordance
c_index.1_2 <- sum.surv.1_2$concordance
Comb_cIndex = data.frame(rbind(c_index.1["concordance.concordant"],
c_index.1_2["concordance.concordant"]))
barplot(as.matrix(Comb_cIndex), beside=TRUE, axis.lty=1,
ylab = "C Index", ylim = c(0, 0.8),
col = c("green", "blue"))
Run Code Online (Sandbox Code Playgroud)
提前致谢,