2013-09-23 23 views
5

我試圖在訂閱上模擬客戶生命週期。由於數據被審查,我將使用R的生存包創建一條生存曲線。如何將審查數據輸入到R的生存模型?

原來的訂閱數據集是這樣的..

id start_date end_date 
1 2013-06-01 2013-08-25 
2 2013-06-01 NA 
3 2013-08-01 2013-09-12 

其中我處理,看起來像這樣..

id tenure_in_months status(1=cancelled, 0=active) 
1 2    1 
2 ?    0 
3 1    1 

..in爲了養活生存模式:

obj <- with(subscriptions, Surv(time=tenure_in_months, event=status, type="right")) 
fit <- survfit(obj~1, data=subscriptions) 
plot(fit) 

我應該把哪些東西放在tenure_in_months變量中,例如,訂閱今天仍然活躍 - 是否應該是直到今天的使用期限,還是應該是NA?

+0

它應該一直持續到您收集您的數據的那一天,我想那是「今天」。 – drevicko

回答

1

如果缺少結束日期意味着訂閱仍處於活動狀態,那麼您需要花費時間直到當前日期爲審查日期。

不適用於生存對象。我認爲這些案件將被省略。那不是你想要的!因爲這些案件包含有關生存的重要信息。

SQL代碼來獲取時間,直到事件(在查詢的SELECT部分​​使用)

DATEDIFF(M,start_date,ISNULL(end_date,GETDATE()) AS tenure_in_months 

BTW: 我會用差異天,我的分析。把時間四捨五入到幾個月是沒有意義的。

+1

統計建議不錯,但代碼無效R.代碼是SQL。 –

+0

代碼是SQL。我以爲你自己提出了這個問題,所以你可以調整它。 – Wietze314

+0

我沒有注意到在問題中提到的SQL .... – drevicko

8

首先我要說我不同意以前的答案。對於今天仍然活躍的訂閱,它不應該被視爲直到今天的任期,也不是NA。我們對這些訂閱有什麼瞭解?我們知道他們一直持續到今天,這相當於對這些觀察說tenure_in_months,儘管我們不知道他們到底有多長時間,但他們比直到今天的任期更長。

這是一種被稱爲生存分析中的右檢查的情況。請參閱:http://en.wikipedia.org/wiki/Censoring_%28statistics%29

所以,你的數據將需要翻譯從

id start_date end_date 
1 2013-06-01 2013-08-25 
2 2013-06-01 NA 
3 2013-08-01 2013-09-12 

到:

id t1 t2 status(3=interval_censored) 
1 2 2   3 
2 3 NA   3 
3 1 1   3 

然後你需要改變你的[R surv對象,從:

Surv(time=tenure_in_months, event=status, type="right") 

至:

Surv(t1, t2, event=status, type="interval2") 

有關更多語法詳細信息,請參見http://stat.ethz.ch/R-manual/R-devel/library/survival/html/Surv.html。一個非常好的計算細節總結可以發現:http://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/viewer.htm#statug_lifereg_sect018.htm

區間審查數據可以用兩種方式表示。第一次使用type = interval和上面顯示的代碼。在該用法中,除非事件= 3,否則time2參數的值將被忽略。第二種方法是將每個觀測看作一個時間間隔,其中(-infinity,t)爲左刪失,(t,infinity)爲右刪失,(t,t)爲精確值,(t1,t2)爲區間。這是用於type = interval2的方法,NA代替無窮大。它已被證明是更有用的。

+0

啊,你是對的我想。右檢查器應該在'[time,+ inf]'中表示事件時間,但是在R中,我認爲它就像使用'type ='interval''時的'time'的確切事件一樣。然後需要'interval2',看編輯。 –

+0

我相信你輸入的id 2是相當錯誤的。您需要知道何時測量「NA」。 t1條目應該是那個時間減去2013-06-01。 – drevicko

0

您需要知道數據收集日期tenure_in_monthsid 2應該是這個日期減去2013-06-01。

否則我相信你的數據編碼是正確的。 idstatus爲0表示它是正確審查的(意味着我們對其生命週期有下限,但不是上限)。

相關問題