我是机器学习和r的新手,所以我的问题似乎不清楚,或者需要更多信息。我已经尽力解释了。如果我使用了错误的术语或短语,请纠正我。任何帮助,将不胜感激。
上下文-我正在尝试建立一个模型来预测事件“何时”发生。
我有一个具有以下结构的数据集。这不是实际数据。它是为解释场景而创建的虚拟数据。由于机密性,无法共享实际数据。
关于数据-
客户可以使用$ x以上的服务。这由列指示
上表中的“ ExceedanceMonth”。价值1表示客户
在订阅的第一个月就超过了$ x,价值5说
客户在订阅的第5个月内超过了$ x。的价值
NULL表示尚未达到限制$ x。可能是
要么是因为
subscription ended and customer didn't overuse
or
subscription is yet to end and customer might overuse in future
我研究了生存模型。我知道可以使用像Cox这样的生存模型来了解危害函数,并了解每个变量如何影响事件发生时间。我尝试将预测函数与cox一起使用,但我不知道是否可以将传递给“ type”参数的任何值用于预测实际时间。即我不明白如何预测“何时”超出限制的实际值
在这种情况下,生存模型可能不是正确的方法。因此,请告诉我解决该问题的最佳方法。
#define survival object
recsurv <- Surv(time=df$ExceedanceMonth, event=df$LimitReached)
#only for testing the code
train = subset(df,df$SubStartDate>="20150301" & df$SubEndDate<="20180401")
test = subset(df,df$SubStartDate>"20180401") #only for testing the code
fit <- coxph(Surv(df$ExceedanceMonth, df$LimitReached) ~ df$SubDurationInMonths+df$`#subs`+df$LimitAmount+df$Monthlyutitlization+df$AvgMonthlyUtilization, train, model = TRUE)
predicted <- predict(fit, newdata = test)
head(predicted)
1 2 3 4 5 6
0.75347328 0.23516619 -0.05535162 -0.03759123 -0.65658488 -0.54233043
先谢谢您!
答案 0 :(得分:1)
生存模型适合您要尝试做的事情。 (我假设您从现在开始已经正确估计了模型。)
关键是要了解模型的内容。对于Cox,predict()
中的默认数量是线性组合(b0 + b1x1 + b2x2 ...,尽管Cox不会估计b0)。仅此一项不会告诉您任何时间。
将type="expected"
指定为predict()
会在预期的持续时间上为您提供-平均时间,直到客户达到其数据限制为止,以及后续时间(持续时间)您观察到客户)设置为等于客户的实际工期(从coxph
模型对象检索)。
coxed
软件包还将为您提供预期的持续时间,可以使用不同的方法来计算,而无需担心后续时间。在输入newdata
参数时,它也要宽容一些,特别是如果您考虑到特定的协变量特性。请参阅小插图here包。
有关coxph.predict()
的更多信息,另请参见this线程。