생존분석

데이터를 이용해 사건이 언제(when) 일어나는지 예측하는 방법을 알아봅니다


수강중

10. 생명표법

데이터 불러오기

sales <- read.csv('sales.csv', 
                  stringsAsFactors = F, 
                  fileEncoding = "UTF-8")

연속변수(사용일)를 구간별로 나눠 갯수(count) 세기

max(sales$사용일)
x = c(1,1,3)
intervals = c(1, 4, 5)
x
cut(x, intervals, right = F)

무료고객과 유료고객 각각 사용일을 특정 구간별로 나눠 갯수(count) 세고 합치기

intervals <- round(seq(from = 0, to = 120, length.out = 50))
x1 <- cut(sales[sales$구매여부 == 1, '사용일'], breaks = intervals, right=F)
x2 <- cut(sales[sales$구매여부 == 0, '사용일'], breaks = intervals, right=F)
유료 <- table(x1)
무료 <- table(x2)
df <- t(rbind(무료, 유료))

엑셀 분석을 위하여 구간별 무료고객과 유료고객 데이터 수 저장

write.csv(df, 'LifeTable.csv')

생명표법 분석하기

df <- data.frame(df)

library(KMsurv)
total.n <- nrow(sales)
res.table <- lifetab(tis = intervals,
                     ninit = total.n,
                     nlost = df$무료,
                     nevent = df$유료)
res.table
plot(intervals[-length(intervals)], res.table$surv,
     type = 's')
abline(v = 39, col = 'blue')
abline(h = .5, col = 'blue')
round(res.table,4)