Análise de Sobrevivencia

Desgaste de funcionários usando análise de sobrevivência.

Sobre o conjunto de dados

Banco de dados sobre Atrito e desempenho de funcionários do IBM HR Analytics. Possui 35 variáveis, sendo 9 do tipo categórico e 26 do tipo numérico, com 1470 linhas. Descrição das variáveis

Age - Idade

Attrition - Atrito, variável resposta

BusinessTravel - Viagem a trabalho

DailyRate - Avaliação diária

Department - Departamento

DistanceFromHome - Distância de casa

Education - Educação

EducationField - Campo de Educação

EmployeeCount - Contagem de funcionários

EnvironmentSatisfaction - Nivel de satisfação

Gender - Gênero

HourlyRate - Taxa por hora

JobInvolvement - Envolvimento com o trabalho

JobLevel - Nível de trabalho

JobRole - Cargo de trabalho

JobSatisfaction - Satisfação com o trabalho

MaritalStatus - Estado civil

MonthlyIncome - Renda mensal

MonthlyRate - Taxa mensal

NumCompaniesWorked - Número de empresas trabalhadas

Over18 - Mais de 18 anos

OverTime - Hora extra

PercentSalaryHike - Percentual de aumento salarial

PerformanceRating - Classificação de desempenho

RelationshipSatisfaction - satisfação de relacionamento

StandardHours - horario padrão

StockOptionLevel -nivel de opção de ações

TotalWorkingYears - Total de anos trabalhados

TrainingTimesLastYear - Tempo de treinamento no ultimo ano

WorkLifeBalance - Equilibrio da vida profissional

YearsAtCompany - Anos na Empresa

YearsInCurrentRole - Anos na função atual

YearsSinceLastPromotion - Anos desde a ultima promoção

YearsWithCurrManager - Anos com o gerente atual

library(readr)
atrito <- read_csv("/Users/Clevia/Documents/Analise de Sobrevivencia/WA_Fn-UseC_-HR-Employee-Attrition.csv")

Análise descritiva das variáveis

library(dplyr) #graficos
require(ggplot2)#graficos
library(summarytools)# análise descritiva
library(tidyverse)
library(survival) #analise de sobrevivencia
library(ggfortify) #gráfico
options(warn=-1) #suppress warnings
print(dfSummary(atrito,style = 'grid', valid.col = FALSE),method = 'render')

Data Frame Summary

atrito

Dimensions: 1470 x 35
Duplicates: 0
No Variable Stats / Values Freqs (% of Valid) Graph Missing
1 Age [numeric]
Mean (sd) : 36.9 (9.1)
min ≤ med ≤ max:
18 ≤ 36 ≤ 60
IQR (CV) : 13 (0.2)
43 distinct values 0 (0.0%)
2 Attrition [character]
1. No
2. Yes
1233(83.9%)
237(16.1%)
0 (0.0%)
3 BusinessTravel [character]
1. Non-Travel
2. Travel_Frequently
3. Travel_Rarely
150(10.2%)
277(18.8%)
1043(71.0%)
0 (0.0%)
4 DailyRate [numeric]
Mean (sd) : 802.5 (403.5)
min ≤ med ≤ max:
102 ≤ 802 ≤ 1499
IQR (CV) : 692 (0.5)
886 distinct values 0 (0.0%)
5 Department [character]
1. Human Resources
2. Research & Development
3. Sales
63(4.3%)
961(65.4%)
446(30.3%)
0 (0.0%)
6 DistanceFromHome [numeric]
Mean (sd) : 9.2 (8.1)
min ≤ med ≤ max:
1 ≤ 7 ≤ 29
IQR (CV) : 12 (0.9)
29 distinct values 0 (0.0%)
7 Education [numeric]
Mean (sd) : 2.9 (1)
min ≤ med ≤ max:
1 ≤ 3 ≤ 5
IQR (CV) : 2 (0.4)
1:170(11.6%)
2:282(19.2%)
3:572(38.9%)
4:398(27.1%)
5:48(3.3%)
0 (0.0%)
8 EducationField [character]
1. Human Resources
2. Life Sciences
3. Marketing
4. Medical
5. Other
6. Technical Degree
27(1.8%)
606(41.2%)
159(10.8%)
464(31.6%)
82(5.6%)
132(9.0%)
0 (0.0%)
9 EmployeeCount [numeric] 1 distinct value
1:1470(100.0%)
0 (0.0%)
10 EmployeeNumber [numeric]
Mean (sd) : 1024.9 (602)
min ≤ med ≤ max:
1 ≤ 1020.5 ≤ 2068
IQR (CV) : 1064.5 (0.6)
1470 distinct values 0 (0.0%)
11 EnvironmentSatisfaction [numeric]
Mean (sd) : 2.7 (1.1)
min ≤ med ≤ max:
1 ≤ 3 ≤ 4
IQR (CV) : 2 (0.4)
1:284(19.3%)
2:287(19.5%)
3:453(30.8%)
4:446(30.3%)
0 (0.0%)
12 Gender [character]
1. Female
2. Male
588(40.0%)
882(60.0%)
0 (0.0%)
13 HourlyRate [numeric]
Mean (sd) : 65.9 (20.3)
min ≤ med ≤ max:
30 ≤ 66 ≤ 100
IQR (CV) : 35.8 (0.3)
71 distinct values 0 (0.0%)
14 JobInvolvement [numeric]
Mean (sd) : 2.7 (0.7)
min ≤ med ≤ max:
1 ≤ 3 ≤ 4
IQR (CV) : 1 (0.3)
1:83(5.6%)
2:375(25.5%)
3:868(59.0%)
4:144(9.8%)
0 (0.0%)
15 JobLevel [numeric]
Mean (sd) : 2.1 (1.1)
min ≤ med ≤ max:
1 ≤ 2 ≤ 5
IQR (CV) : 2 (0.5)
1:543(36.9%)
2:534(36.3%)
3:218(14.8%)
4:106(7.2%)
5:69(4.7%)
0 (0.0%)
16 JobRole [character]
1. Healthcare Representative
2. Human Resources
3. Laboratory Technician
4. Manager
5. Manufacturing Director
6. Research Director
7. Research Scientist
8. Sales Executive
9. Sales Representative
131(8.9%)
52(3.5%)
259(17.6%)
102(6.9%)
145(9.9%)
80(5.4%)
292(19.9%)
326(22.2%)
83(5.6%)
0 (0.0%)
17 JobSatisfaction [numeric]
Mean (sd) : 2.7 (1.1)
min ≤ med ≤ max:
1 ≤ 3 ≤ 4
IQR (CV) : 2 (0.4)
1:289(19.7%)
2:280(19.0%)
3:442(30.1%)
4:459(31.2%)
0 (0.0%)
18 MaritalStatus [character]
1. Divorced
2. Married
3. Single
327(22.2%)
673(45.8%)
470(32.0%)
0 (0.0%)
19 MonthlyIncome [numeric]
Mean (sd) : 6502.9 (4708)
min ≤ med ≤ max:
1009 ≤ 4919 ≤ 19999
IQR (CV) : 5468 (0.7)
1349 distinct values 0 (0.0%)
20 MonthlyRate [numeric]
Mean (sd) : 14313.1 (7117.8)
min ≤ med ≤ max:
2094 ≤ 14235.5 ≤ 26999
IQR (CV) : 12414.5 (0.5)
1427 distinct values 0 (0.0%)
21 NumCompaniesWorked [numeric]
Mean (sd) : 2.7 (2.5)
min ≤ med ≤ max:
0 ≤ 2 ≤ 9
IQR (CV) : 3 (0.9)
0:197(13.4%)
1:521(35.4%)
2:146(9.9%)
3:159(10.8%)
4:139(9.5%)
5:63(4.3%)
6:70(4.8%)
7:74(5.0%)
8:49(3.3%)
9:52(3.5%)
0 (0.0%)
22 Over18 [character] 1. Y
1470(100.0%)
0 (0.0%)
23 OverTime [character]
1. No
2. Yes
1054(71.7%)
416(28.3%)
0 (0.0%)
24 PercentSalaryHike [numeric]
Mean (sd) : 15.2 (3.7)
min ≤ med ≤ max:
11 ≤ 14 ≤ 25
IQR (CV) : 6 (0.2)
15 distinct values 0 (0.0%)
25 PerformanceRating [numeric]
Min : 3
Mean : 3.2
Max : 4
3:1244(84.6%)
4:226(15.4%)
0 (0.0%)
26 RelationshipSatisfaction [numeric]
Mean (sd) : 2.7 (1.1)
min ≤ med ≤ max:
1 ≤ 3 ≤ 4
IQR (CV) : 2 (0.4)
1:276(18.8%)
2:303(20.6%)
3:459(31.2%)
4:432(29.4%)
0 (0.0%)
27 StandardHours [numeric] 1 distinct value
80:1470(100.0%)
0 (0.0%)
28 StockOptionLevel [numeric]
Mean (sd) : 0.8 (0.9)
min ≤ med ≤ max:
0 ≤ 1 ≤ 3
IQR (CV) : 1 (1.1)
0:631(42.9%)
1:596(40.5%)
2:158(10.7%)
3:85(5.8%)
0 (0.0%)
29 TotalWorkingYears [numeric]
Mean (sd) : 11.3 (7.8)
min ≤ med ≤ max:
0 ≤ 10 ≤ 40
IQR (CV) : 9 (0.7)
40 distinct values 0 (0.0%)
30 TrainingTimesLastYear [numeric]
Mean (sd) : 2.8 (1.3)
min ≤ med ≤ max:
0 ≤ 3 ≤ 6
IQR (CV) : 1 (0.5)
0:54(3.7%)
1:71(4.8%)
2:547(37.2%)
3:491(33.4%)
4:123(8.4%)
5:119(8.1%)
6:65(4.4%)
0 (0.0%)
31 WorkLifeBalance [numeric]
Mean (sd) : 2.8 (0.7)
min ≤ med ≤ max:
1 ≤ 3 ≤ 4
IQR (CV) : 1 (0.3)
1:80(5.4%)
2:344(23.4%)
3:893(60.7%)
4:153(10.4%)
0 (0.0%)
32 YearsAtCompany [numeric]
Mean (sd) : 7 (6.1)
min ≤ med ≤ max:
0 ≤ 5 ≤ 40
IQR (CV) : 6 (0.9)
37 distinct values 0 (0.0%)
33 YearsInCurrentRole [numeric]
Mean (sd) : 4.2 (3.6)
min ≤ med ≤ max:
0 ≤ 3 ≤ 18
IQR (CV) : 5 (0.9)
19 distinct values 0 (0.0%)
34 YearsSinceLastPromotion [numeric]
Mean (sd) : 2.2 (3.2)
min ≤ med ≤ max:
0 ≤ 1 ≤ 15
IQR (CV) : 3 (1.5)
16 distinct values 0 (0.0%)
35 YearsWithCurrManager [numeric]
Mean (sd) : 4.1 (3.6)
min ≤ med ≤ max:
0 ≤ 3 ≤ 17
IQR (CV) : 5 (0.9)
18 distinct values 0 (0.0%)

Generated by summarytools 1.0.1 (R version 4.1.3)
2022-12-06

Proporção da variável resposta no banco de dados

Aproximadamente 84% não há atrito e aproximadamente 16% há atrito.

atrito$YearsAtCompany[atrito$YearsAtCompany %in% c("0")]<- "1"
#table(atrito$YearsAtCompany)
#levels(atrito$YearsAtCompany)
number_of_attirttions <- atrito %>% group_by(Attrition) %>% summarise(Count=n())
number_of_attirttions
## # A tibble: 2 x 2
##   Attrition Count
##   <chr>     <int>
## 1 No         1233
## 2 Yes         237
#visualization
ggplot(data=number_of_attirttions, aes(x=Attrition, y=Count)) + 
  geom_histogram(stat = "identity",fill="blue")

Atrito por hora extra

attrition_OverT= atrito %>% dplyr::select(Attrition, OverTime) %>% filter ( Attrition =="Yes" ) %>%group_by(OverTime)%>%summarise(Count=n())
attrition_OverT
## # A tibble: 2 x 2
##   OverTime Count
##   <chr>    <int>
## 1 No         110
## 2 Yes        127
ggplot(data=attrition_OverT, aes(x=OverTime, y=Count ,fill=OverTime))+
geom_col()

Vemos que funcionário que fazem hora extra tem mais atrito do que funcionários que não fazem.

Atrito por departamento

Aqui observamos o atrito entre funcionários por departamento. Vemos que no departamento de Pesquisa de Desenvolvimento há um maior número de atrito.

attach(atrito)

dapartment_attrition <- atrito %>% 
  dplyr::select(Department, Attrition) %>% 
  filter(Attrition== "Yes") %>%
  group_by(Department) %>% summarise(Count=n())

#jobe_role <-attrition_employee %>% select(JobRole,Attrition) %>% filter(Attrition=='Yes') %>% group_by(JobRole)%>% summarise(Count=n())
dapartment_attrition
## # A tibble: 3 x 2
##   Department             Count
##   <chr>                  <int>
## 1 Human Resources           12
## 2 Research & Development   133
## 3 Sales                     92
#visualisation of the data 
ggplot(data=dapartment_attrition, aes(x=Department, y=Count , fill=Department))+
geom_col()

Atrito por gênero

Observamos que há um maior número de atrito entre os funcionários do gênero masculino.

attrition_gender= atrito %>% dplyr::select(Attrition, Gender) %>% filter ( Attrition =="Yes" ) %>%group_by(Gender)%>%summarise(Count=n())
attrition_gender
## # A tibble: 2 x 2
##   Gender Count
##   <chr>  <int>
## 1 Female    87
## 2 Male     150
ggplot(data=attrition_gender, aes(x=Gender, y=Count ,fill=Gender))+
geom_col()

Atrito por viagem a trabalho

attrition_businessT = atrito %>% dplyr::select(Attrition, BusinessTravel) %>% filter ( Attrition =="Yes" ) %>%group_by(BusinessTravel)%>%summarise(Count=n())
attrition_businessT
## # A tibble: 3 x 2
##   BusinessTravel    Count
##   <chr>             <int>
## 1 Non-Travel           12
## 2 Travel_Frequently    69
## 3 Travel_Rarely       156
ggplot(data=attrition_businessT, aes(x=BusinessTravel, y=Count ,fill=BusinessTravel))+
geom_col()

Vemos que há um número maior de atrito entre funcionários que raramente viajam a trabalho e um número menor de atrito entre funcionários que não viajam.

Atrito por função

jobrole_attrition=  atrito %>% dplyr::select( Attrition,Department ,MonthlyIncome , JobRole) %>% filter (Attrition=="Yes") %>% group_by(JobRole) %>% summarise(Count=n()) 
jobrole_attrition
## # A tibble: 9 x 2
##   JobRole                   Count
##   <chr>                     <int>
## 1 Healthcare Representative     9
## 2 Human Resources              12
## 3 Laboratory Technician        62
## 4 Manager                       5
## 5 Manufacturing Director       10
## 6 Research Director             2
## 7 Research Scientist           47
## 8 Sales Executive              57
## 9 Sales Representative         33
ggplot(data=jobrole_attrition, aes(x=JobRole, y=Count , fill= JobRole ))+
geom_col() + 
facet_wrap(~ JobRole)

Vemos que técnico de laboratório, executivo de vendas, cientista de pesquisa e representante de vendas têm a maior taxa de atrito entre as diferentes funções.

#str(atrito)
atrito$YearsAtCompany <- as.numeric(atrito$YearsAtCompany)
#str(atrito)
atrito$event <- with(atrito,ifelse(Attrition=="Yes", 1, 0))

time<-atrito$YearsAtCompany #define tempo
event<-atrito$event #define evento
#group<-atrito$OverTime #define groups to compare multiple survival curves
survival<-Surv(time,event) #criação de survival object
head(survival, n = 15)
##  [1]  6  10+  1   8+  2+  7+  1+  1+  9+  7+  5+  9+  5+  2+  4
#survival

Criando um modelo de sobrevivência

model<- survfit(Surv(time,event) ~ 1)
print(model, print.rmean=TRUE)
## Call: survfit(formula = Surv(time, event) ~ 1)
## 
##         n events rmean* se(rmean) median 0.95LCL 0.95UCL
## [1,] 1470    237   28.6      0.94     40      32      NA
##     * restricted mean with upper limit =  40
summary(model)
## Call: survfit(formula = Surv(time, event) ~ 1)
## 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1   1470      75    0.949 0.00574        0.938        0.960
##     2   1255      27    0.929 0.00683        0.915        0.942
##     3   1128      20    0.912 0.00764        0.897        0.927
##     4   1000      19    0.895 0.00846        0.878        0.912
##     5    890      21    0.874 0.00943        0.855        0.892
##     6    694       9    0.862 0.01004        0.843        0.882
##     7    618      11    0.847 0.01088        0.826        0.869
##     8    528       9    0.833 0.01171        0.810        0.856
##     9    448       8    0.818 0.01262        0.793        0.843
##    10    366      18    0.777 0.01515        0.748        0.808
##    11    246       2    0.771 0.01567        0.741        0.802
##    13    200       2    0.763 0.01643        0.732        0.796
##    14    176       2    0.755 0.01736        0.721        0.790
##    15    158       1    0.750 0.01789        0.716        0.786
##    16    138       1    0.745 0.01857        0.709        0.782
##    17    126       1    0.739 0.01934        0.702        0.778
##    18    117       1    0.732 0.02018        0.694        0.773
##    19    104       1    0.725 0.02118        0.685        0.768
##    20     93       1    0.717 0.02234        0.675        0.763
##    21     66       1    0.707 0.02450        0.660        0.756
##    22     52       1    0.693 0.02754        0.641        0.749
##    23     37       1    0.674 0.03255        0.613        0.741
##    24     35       1    0.655 0.03688        0.587        0.731
##    31     16       1    0.614 0.05260        0.519        0.726
##    32     13       1    0.567 0.06646        0.450        0.713
##    33     10       1    0.510 0.08044        0.375        0.695
##    40      1       1    0.000     NaN           NA           NA

Saída do modelo,

tempo = os pontos de tempo em que a curva tem um passo

n.risco = número de funcionários em risco de desligamento no tempo

t n.event = o número de eventos que ocorrem no tempo t

survival = estimativa de Kaplan-Meier (probabilidade de sobrevivência) no tempo t

std.err = erro padrão da estimativa K-M no tempo t

lower IC 95% = limite de confiança inferior para a curva de sobrevivência ou probabilidade

IC 95% upper = limite de confiança superior para a curva ou probabilidade de sobrevivência

O método padrão para a transformação para construção do intervalo de confiança é “log”

Plot do modelo

autoplot(model)+ labs(x="Tempo em Anos",y="Sobrevivência",title="Gráfico de Sobrevivência")

Estimador do risco acumulados de Kaplan-Meier

autoplot(model, conf.int = T, surv.size= 1, fun = "cumhaz")+ labs(x="Tempo de Sobrevivência",y="Risco",title="Estimador de Risco Acumulado")

Comparação entre curvas de sobrevivência

Hora Extra

#comparação entre curvas 

model_comp<- survfit(Surv(time,event) ~ atrito$OverTime, data = atrito)
summary(model_comp)
## Call: survfit(formula = Surv(time, event) ~ atrito$OverTime, data = atrito)
## 
##                 atrito$OverTime=No 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1   1054      37    0.965 0.00567        0.954        0.976
##     2    908      12    0.952 0.00668        0.939        0.965
##     3    816       6    0.945 0.00722        0.931        0.959
##     4    728      11    0.931 0.00830        0.915        0.947
##     5    648       7    0.921 0.00903        0.903        0.939
##     6    509       4    0.914 0.00966        0.895        0.933
##     7    457       3    0.908 0.01020        0.888        0.928
##     8    388       3    0.901 0.01090        0.879        0.922
##     9    332       6    0.884 0.01256        0.860        0.909
##    10    269       8    0.858 0.01525        0.829        0.888
##    11    181       1    0.853 0.01588        0.823        0.885
##    13    146       2    0.842 0.01768        0.808        0.877
##    14    126       2    0.828 0.01977        0.790        0.868
##    17     89       1    0.819 0.02162        0.778        0.862
##    18     82       1    0.809 0.02355        0.764        0.856
##    20     65       1    0.796 0.02627        0.747        0.850
##    22     35       1    0.774 0.03398        0.710        0.843
##    23     24       1    0.741 0.04535        0.658        0.836
##    32      8       1    0.649 0.09535        0.486        0.865
##    33      6       1    0.541 0.12671        0.342        0.856
##    40      1       1    0.000     NaN           NA           NA
## 
##                 atrito$OverTime=Yes 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1    416      38    0.909  0.0141        0.881        0.937
##     2    347      15    0.869  0.0168        0.837        0.903
##     3    312      14    0.830  0.0190        0.794        0.868
##     4    272       8    0.806  0.0203        0.767        0.847
##     5    242      14    0.759  0.0226        0.716        0.805
##     6    185       5    0.739  0.0238        0.694        0.787
##     7    161       8    0.702  0.0259        0.653        0.755
##     8    140       6    0.672  0.0276        0.620        0.728
##     9    116       2    0.660  0.0283        0.607        0.718
##    10     97      10    0.592  0.0325        0.532        0.660
##    11     65       1    0.583  0.0333        0.521        0.652
##    15     50       1    0.572  0.0346        0.508        0.644
##    16     43       1    0.558  0.0363        0.492        0.634
##    19     32       1    0.541  0.0391        0.469        0.623
##    21     22       1    0.516  0.0444        0.436        0.611
##    24     13       1    0.477  0.0560        0.379        0.600
##    31      7       1    0.408  0.0792        0.279        0.597
autoplot(model_comp, conf.int = F, surv.size= 1)+ labs(x="Tempo de Sobrevivência em anos",y="Probabilidade de Sobrevivência",title="Hora Extra",colour="Hora Extra")

Teste de Peto

survdiff(survival ~ atrito$OverTime, rho=1)
## Call:
## survdiff(formula = survival ~ atrito$OverTime, rho = 1)
## 
##                        N Observed Expected (O-E)^2/E (O-E)^2/V
## atrito$OverTime=No  1054     99.6    156.1      20.5        83
## atrito$OverTime=Yes  416    116.3     59.8      53.4        83
## 
##  Chisq= 83  on 1 degrees of freedom, p= <2e-16

Como o p-valor é menor que 0,05 podemos concluir pelo teste de Peto que há diferença entre os extratos

Viagem á trabalho

#comparação entre curvas 

model_comp<- survfit(Surv(time,event) ~ atrito$BusinessTravel, data = atrito)
summary(model_comp)
## Call: survfit(formula = Surv(time, event) ~ atrito$BusinessTravel, 
##     data = atrito)
## 
##                 atrito$BusinessTravel=Non-Travel 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1    150       5    0.967  0.0147        0.938        0.996
##     2    125       1    0.959  0.0165        0.927        0.992
##     3    119       1    0.951  0.0182        0.916        0.987
##     4    103       1    0.942  0.0202        0.903        0.982
##     5     94       2    0.922  0.0242        0.875        0.970
##    10     38       2    0.873  0.0405        0.797        0.956
## 
##                 atrito$BusinessTravel=Travel_Frequently 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1    277      24    0.913  0.0169        0.881        0.947
##     2    241       7    0.887  0.0192        0.850        0.925
##     3    211       6    0.862  0.0212        0.821        0.904
##     4    191       6    0.835  0.0232        0.790        0.881
##     5    168       4    0.815  0.0247        0.768        0.865
##     6    142       4    0.792  0.0265        0.741        0.846
##     7    123       3    0.772  0.0281        0.719        0.830
##     8    107       3    0.751  0.0300        0.694        0.812
##     9     90       2    0.734  0.0316        0.675        0.799
##    10     71       5    0.682  0.0369        0.614        0.759
##    11     46       1    0.668  0.0389        0.595        0.748
##    13     39       1    0.650  0.0415        0.574        0.737
##    18     26       1    0.625  0.0469        0.540        0.724
##    21     15       1    0.584  0.0595        0.478        0.713
##    23      8       1    0.511  0.0858        0.367        0.710
## 
##                 atrito$BusinessTravel=Travel_Rarely 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1   1043      46    0.956 0.00636        0.944        0.968
##     2    889      19    0.935 0.00776        0.920        0.951
##     3    798      13    0.920 0.00871        0.903        0.937
##     4    706      12    0.905 0.00966        0.886        0.924
##     5    628      15    0.883 0.01092        0.862        0.905
##     6    479       5    0.874 0.01156        0.851        0.897
##     7    429       8    0.857 0.01270        0.833        0.883
##     8    361       6    0.843 0.01376        0.817        0.871
##     9    306       6    0.827 0.01505        0.798        0.857
##    10    257      11    0.791 0.01779        0.757        0.827
##    11    171       1    0.787 0.01828        0.752        0.823
##    13    139       1    0.781 0.01900        0.745        0.819
##    14    126       2    0.769 0.02062        0.729        0.810
##    15    112       1    0.762 0.02155        0.721        0.805
##    16    100       1    0.754 0.02264        0.711        0.800
##    17     89       1    0.746 0.02392        0.700        0.794
##    19     73       1    0.735 0.02568        0.687        0.788
##    20     66       1    0.724 0.02760        0.672        0.780
##    22     37       1    0.705 0.03308        0.643        0.773
##    24     25       1    0.677 0.04209        0.599        0.764
##    31     11       1    0.615 0.07002        0.492        0.769
##    32      9       1    0.547 0.08958        0.397        0.754
##    33      8       1    0.478 0.10114        0.316        0.724
##    40      1       1    0.000     NaN           NA           NA
autoplot(model_comp, conf.int = F, surv.size= 1)+ labs(x="Tempo de Sobrevivência em anos",y="Probabilidade de Sobrevivência",title="Viagem a trabalho",colour="Viagem a Trabalho")

Teste de Peto

survdiff(survival ~ atrito$BusinessTravel, rho=1)
## Call:
## survdiff(formula = survival ~ atrito$BusinessTravel, rho = 1)
## 
##                                            N Observed Expected (O-E)^2/E
## atrito$BusinessTravel=Non-Travel         150     11.2     22.4     5.599
## atrito$BusinessTravel=Travel_Frequently  277     63.3     41.2    11.934
## atrito$BusinessTravel=Travel_Rarely     1043    141.3    152.3     0.789
##                                         (O-E)^2/V
## atrito$BusinessTravel=Non-Travel             7.03
## atrito$BusinessTravel=Travel_Frequently     16.56
## atrito$BusinessTravel=Travel_Rarely          3.01
## 
##  Chisq= 20.6  on 2 degrees of freedom, p= 3e-05

Como o p-valor é menor que 0,05 podemos concluir pelo teste de Peto que há diferença entre os extratos

Gênero

model_comp<- survfit(Surv(time,event) ~ atrito$Gender, data= atrito)
summary(model_comp)
## Call: survfit(formula = Surv(time, event) ~ atrito$Gender, data = atrito)
## 
##                 atrito$Gender=Female 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1    588      25    0.957 0.00832        0.941        0.974
##     2    509      10    0.939 0.01006        0.919        0.959
##     3    465       7    0.925 0.01124        0.903        0.947
##     4    409       5    0.913 0.01218        0.890        0.937
##     5    374       9    0.891 0.01392        0.864        0.919
##     6    287       3    0.882 0.01478        0.853        0.911
##     7    258       5    0.865 0.01635        0.833        0.897
##     8    222       4    0.849 0.01781        0.815        0.885
##     9    185       4    0.831 0.01965        0.793        0.870
##    10    149       6    0.797 0.02313        0.753        0.844
##    11    113       1    0.790 0.02397        0.745        0.839
##    13     92       1    0.782 0.02521        0.734        0.833
##    15     72       1    0.771 0.02709        0.720        0.826
##    17     56       1    0.757 0.02990        0.701        0.818
##    22     18       1    0.715 0.04969        0.624        0.819
##    24     11       1    0.650 0.07670        0.516        0.819
##    32      3       1    0.433 0.18417        0.188        0.997
##    33      2       1    0.217 0.17877        0.043        1.000
##    40      1       1    0.000     NaN           NA           NA
## 
##                 atrito$Gender=Male 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1    882      50    0.943 0.00779        0.928        0.959
##     2    746      17    0.922 0.00919        0.904        0.940
##     3    663      13    0.904 0.01029        0.884        0.924
##     4    591      14    0.882 0.01153        0.860        0.905
##     5    516      12    0.862 0.01269        0.837        0.887
##     6    407       6    0.849 0.01352        0.823        0.876
##     7    360       6    0.835 0.01448        0.807        0.864
##     8    306       5    0.821 0.01547        0.792        0.852
##     9    263       4    0.809 0.01645        0.777        0.842
##    10    217      12    0.764 0.01997        0.726        0.804
##    11    133       1    0.758 0.02063        0.719        0.800
##    13    108       1    0.751 0.02160        0.710        0.795
##    14     94       2    0.735 0.02392        0.690        0.784
##    16     76       1    0.726 0.02549        0.677        0.777
##    18     66       1    0.715 0.02737        0.663        0.770
##    19     60       1    0.703 0.02939        0.647        0.763
##    20     55       1    0.690 0.03151        0.631        0.755
##    21     42       1    0.674 0.03478        0.609        0.745
##    23     26       1    0.648 0.04200        0.570        0.735
##    31     13       1    0.598 0.06159        0.489        0.732
autoplot(model_comp, conf.int = F, surv.size= 1)+ labs(x="Tempo de Sobrevivência",y="Probabilidade de Sobrevivência",title="Gênero",colour="Genero")

Teste de Peto

survdiff(survival ~ atrito$Gender, rho=1)
## Call:
## survdiff(formula = survival ~ atrito$Gender, rho = 1)
## 
##                        N Observed Expected (O-E)^2/E (O-E)^2/V
## atrito$Gender=Female 588     78.3     88.1     1.090      2.08
## atrito$Gender=Male   882    137.6    127.8     0.751      2.08
## 
##  Chisq= 2.1  on 1 degrees of freedom, p= 0.1

Como o p-valor é maior que 0,05 podemos concluir pelo teste de Peto que não há diferença significativa entre os extratos

Departamento

model_comp<- survfit(Surv(time,event) ~ Department, data= atrito)
summary(model_comp)
## Call: survfit(formula = Surv(time, event) ~ Department, data = atrito)
## 
##                 Department=Human Resources 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1     63       4    0.937  0.0307        0.878        0.999
##     2     58       2    0.904  0.0372        0.834        0.980
##     3     50       2    0.868  0.0436        0.787        0.958
##     4     42       1    0.847  0.0472        0.760        0.945
##     5     38       1    0.825  0.0510        0.731        0.931
##     7     24       1    0.791  0.0593        0.683        0.916
##    20      7       1    0.678  0.1163        0.484        0.949
## 
##                 Department=Research & Development 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1    961      47    0.951 0.00696        0.938        0.965
##     2    812      13    0.936 0.00803        0.920        0.952
##     3    735       8    0.926 0.00871        0.909        0.943
##     4    650      11    0.910 0.00976        0.891        0.929
##     5    571      13    0.889 0.01110        0.868        0.911
##     6    441       4    0.881 0.01171        0.859        0.904
##     7    389       8    0.863 0.01310        0.838        0.889
##     8    332       4    0.853 0.01394        0.826        0.880
##     9    280       4    0.841 0.01501        0.812        0.870
##    10    230      14    0.789 0.01935        0.752        0.828
##    13    127       1    0.783 0.02017        0.745        0.824
##    17     81       1    0.773 0.02212        0.731        0.818
##    18     74       1    0.763 0.02416        0.717        0.812
##    22     32       1    0.739 0.03315        0.677        0.807
##    31      9       1    0.657 0.08285        0.513        0.841
##    33      5       1    0.526 0.13494        0.318        0.869
##    40      1       1    0.000     NaN           NA           NA
## 
##                 Department=Sales 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1    446      24    0.946  0.0107        0.925        0.967
##     2    385      12    0.917  0.0133        0.891        0.943
##     3    343      10    0.890  0.0154        0.860        0.921
##     4    308       7    0.870  0.0168        0.837        0.903
##     5    281       7    0.848  0.0183        0.813        0.885
##     6    226       5    0.829  0.0197        0.792        0.869
##     7    205       2    0.821  0.0203        0.782        0.862
##     8    176       5    0.798  0.0223        0.755        0.843
##     9    150       4    0.777  0.0241        0.731        0.825
##    10    121       4    0.751  0.0265        0.701        0.805
##    11     82       2    0.733  0.0288        0.678        0.791
##    13     66       1    0.722  0.0305        0.664        0.784
##    14     57       2    0.696  0.0343        0.632        0.767
##    15     51       1    0.683  0.0362        0.615        0.757
##    16     41       1    0.666  0.0390        0.594        0.747
##    19     31       1    0.644  0.0432        0.565        0.735
##    21     21       1    0.614  0.0509        0.522        0.722
##    23     13       1    0.567  0.0653        0.452        0.710
##    24     12       1    0.519  0.0750        0.391        0.689
##    32      5       1    0.415  0.1106        0.247        0.700
autoplot(model_comp, conf.int = F, surv.size= 1)+ labs(x="Tempo de Sobrevivência",y="Probabilidade de Sobrevivência",title="Departamentos",colour="Departamentos")

Teste de Peto

survdiff(survival ~ atrito$Department, rho=1)
## Call:
## survdiff(formula = survival ~ atrito$Department, rho = 1)
## 
##                                            N Observed Expected (O-E)^2/E
## atrito$Department=Human Resources         63     11.1     9.42     0.317
## atrito$Department=Research & Development 961    121.7   139.10     2.181
## atrito$Department=Sales                  446     83.0    67.35     3.656
##                                          (O-E)^2/V
## atrito$Department=Human Resources            0.374
## atrito$Department=Research & Development     6.905
## atrito$Department=Sales                      5.980
## 
##  Chisq= 6.9  on 2 degrees of freedom, p= 0.03

Como o p-valor é menor que 0,05 podemos concluir pelo teste de Peto que há diferença significativa entre os extratos

Cargo de Trabalho

model_comp<- survfit(Surv(time,event) ~ JobRole, data= atrito)
summary(model_comp)
## Call: survfit(formula = Surv(time, event) ~ JobRole, data = atrito)
## 
##                 JobRole=Healthcare Representative 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1    131       3    0.977  0.0131        0.952        1.000
##     8     60       1    0.961  0.0206        0.921        1.000
##     9     48       1    0.941  0.0283        0.887        0.998
##    10     41       2    0.895  0.0415        0.817        0.980
##    18     13       1    0.826  0.0765        0.689        0.990
##    40      1       1    0.000     NaN           NA           NA
## 
##                 JobRole=Human Resources 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1     52       4    0.923  0.0370        0.853        0.998
##     2     47       2    0.884  0.0446        0.801        0.976
##     3     39       2    0.838  0.0526        0.741        0.948
##     4     32       1    0.812  0.0571        0.708        0.932
##     5     28       1    0.783  0.0620        0.671        0.915
##     7     16       1    0.734  0.0750        0.601        0.897
##    20      1       1    0.000     NaN           NA           NA
## 
##                 JobRole=Laboratory Technician 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1    259      28    0.892  0.0193        0.855        0.931
##     2    198       7    0.860  0.0220        0.818        0.905
##     3    171       4    0.840  0.0237        0.795        0.888
##     4    145       7    0.800  0.0270        0.748        0.854
##     5    123       5    0.767  0.0296        0.711        0.827
##     6     86       1    0.758  0.0306        0.701        0.821
##     7     77       5    0.709  0.0356        0.642        0.782
##     9     50       2    0.681  0.0395        0.608        0.763
##    10     37       2    0.644  0.0451        0.561        0.739
##    17      7       1    0.552  0.0935        0.396        0.769
## 
##                 JobRole=Manager 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     5     85       1    0.988  0.0117        0.966            1
##     7     72       1    0.975  0.0179        0.940            1
##    10     60       1    0.958  0.0238        0.913            1
##    24     21       1    0.913  0.0500        0.820            1
##    32      8       1    0.799  0.1153        0.602            1
## 
##                 JobRole=Manufacturing Director 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1    145       2    0.986 0.00969        0.967        1.000
##     3    127       1    0.978 0.01234        0.955        1.000
##     4    114       1    0.970 0.01492        0.941        1.000
##     5    103       1    0.960 0.01749        0.927        0.995
##    10     42       4    0.869 0.04629        0.783        0.965
##    33      1       1    0.000     NaN           NA           NA
## 
##                 JobRole=Research Director 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##    22      9       1    0.889   0.105        0.706            1
##    31      3       1    0.593   0.252        0.258            1
## 
##                 JobRole=Research Scientist 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1    292      14    0.952  0.0125        0.928        0.977
##     2    238       6    0.928  0.0156        0.898        0.959
##     3    207       3    0.915  0.0172        0.882        0.949
##     4    176       3    0.899  0.0191        0.862        0.937
##     5    146       6    0.862  0.0235        0.817        0.909
##     6    100       3    0.836  0.0271        0.785        0.891
##     7     78       2    0.815  0.0304        0.757        0.877
##     8     65       3    0.777  0.0359        0.710        0.851
##     9     51       1    0.762  0.0383        0.690        0.841
##    10     42       5    0.671  0.0509        0.579        0.779
##    13     16       1    0.629  0.0626        0.518        0.765
## 
##                 JobRole=Sales Executive 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1    326       7    0.979 0.00803        0.963        0.994
##     2    301       8    0.953 0.01197        0.929        0.976
##     3    278       3    0.942 0.01323        0.917        0.969
##     4    258       5    0.924 0.01529        0.894        0.954
##     5    237       5    0.904 0.01728        0.871        0.939
##     6    187       5    0.880 0.01991        0.842        0.920
##     7    167       2    0.870 0.02102        0.830        0.912
##     8    143       5    0.839 0.02429        0.793        0.888
##     9    119       3    0.818 0.02658        0.768        0.872
##    10     95       4    0.784 0.03053        0.726        0.846
##    11     58       2    0.757 0.03495        0.691        0.828
##    13     45       1    0.740 0.03801        0.669        0.818
##    14     38       2    0.701 0.04489        0.618        0.795
##    15     32       1    0.679 0.04853        0.590        0.781
##    16     22       1    0.648 0.05528        0.548        0.766
##    19     16       1    0.608 0.06499        0.493        0.749
##    21      8       1    0.532 0.09101        0.380        0.744
##    23      3       1    0.354 0.15692        0.149        0.844
## 
##                 JobRole=Sales Representative 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1     83      17    0.795  0.0443        0.713        0.887
##     2     53       4    0.735  0.0501        0.643        0.840
##     3     35       7    0.588  0.0639        0.475        0.728
##     4     21       2    0.532  0.0690        0.413        0.686
##     5     15       2    0.461  0.0759        0.334        0.637
##     9      6       1    0.384  0.0944        0.237        0.622
autoplot(model_comp, conf.int = F, surv.size= 1)+ labs(x="Tempo de Sobrevivência",y="Probabilidade de Sobrevivência",title="Cargo de Trabalho",colour="Cargo")

Teste de Peto

survdiff(survival ~ atrito$JobRole, rho=1)
## Call:
## survdiff(formula = survival ~ atrito$JobRole, rho = 1)
## 
##                                            N Observed Expected (O-E)^2/E
## atrito$JobRole=Healthcare Representative 131     7.56    22.14    9.5991
## atrito$JobRole=Human Resources            52    11.15     6.61    3.1235
## atrito$JobRole=Laboratory Technician     259    58.45    31.09   24.0642
## atrito$JobRole=Manager                   102     3.86    23.52   16.4309
## atrito$JobRole=Manufacturing Director    145     8.57    22.99    9.0391
## atrito$JobRole=Research Director          80     1.36    15.40   12.7948
## atrito$JobRole=Research Scientist        292    43.16    35.62    1.5968
## atrito$JobRole=Sales Executive           326    50.01    51.33    0.0338
## atrito$JobRole=Sales Representative       83    31.74     7.17   84.1631
##                                          (O-E)^2/V
## atrito$JobRole=Healthcare Representative     12.35
## atrito$JobRole=Human Resources                3.56
## atrito$JobRole=Laboratory Technician         31.35
## atrito$JobRole=Manager                       23.19
## atrito$JobRole=Manufacturing Director        11.37
## atrito$JobRole=Research Director             15.97
## atrito$JobRole=Research Scientist             2.14
## atrito$JobRole=Sales Executive                0.05
## atrito$JobRole=Sales Representative          95.06
## 
##  Chisq= 187  on 8 degrees of freedom, p= <2e-16

Como o p-valor é menor que 0,05 podemos concluir pelo teste de Peto que há diferença significativa entre os extratos

ajust1<-survreg(survival~1,dist="exponential")
alpha1<-exp(ajust1$coefficients[1])
ajust2<-survreg(survival~1,dist="weibull")
alpha2<-exp(ajust2$coefficients[1]);

gama<-1/ajust2$scale

ajust3<-survreg(survival~1,dist="lognorm")
#S(T) KAPLA VS ESTIMATIVAS

ekm<- survfit(survival~1, data= atrito)
time<-ekm$time
st<-ekm$surv
ste<- exp(-time/alpha1)
stw<- exp(-(time/alpha2)^gama)
stln<- pnorm((-log(time)+ 4.778)/2.0347)
cbind(time,st,ste,stw,stln)
##       time        st       ste       stw      stln
##  [1,]    1 0.9489796 0.9773530 0.9736467 0.9905693
##  [2,]    2 0.9285633 0.9552188 0.9503263 0.9776568
##  [3,]    3 0.9120994 0.9335860 0.9283537 0.9647216
##  [4,]    4 0.8947695 0.9124430 0.9073750 0.9522360
##  [5,]    5 0.8736570 0.8917789 0.8872166 0.9402959
##  [6,]    6 0.8623271 0.8715828 0.8677717 0.9289012
##  [7,]    7 0.8469783 0.8518440 0.8489663 0.9180230
##  [8,]    8 0.8325411 0.8325523 0.8307454 0.9076246
##  [9,]    9 0.8176743 0.8136975 0.8130655 0.8976691
## [10,]   10 0.7774608 0.7952697 0.7958912 0.8881217
## [11,]   11 0.7711400 0.7772592 0.7791929 0.8789506
## [12,]   12 0.7711400 0.7596566 0.7629449 0.8701274
## [13,]   13 0.7634286 0.7424526 0.7471250 0.8616262
## [14,]   14 0.7547533 0.7256383 0.7317133 0.8534241
## [15,]   15 0.7499764 0.7092047 0.7166921 0.8455004
## [16,]   16 0.7445418 0.6931433 0.7020453 0.8378366
## [17,]   17 0.7386327 0.6774457 0.6877582 0.8304159
## [18,]   18 0.7323196 0.6621036 0.6738173 0.8232231
## [19,]   19 0.7252781 0.6471089 0.6602101 0.8162446
## [20,]   20 0.7174794 0.6324538 0.6469250 0.8094677
## [21,]   21 0.7066085 0.6181306 0.6339510 0.8028811
## [22,]   22 0.6930199 0.6041318 0.6212780 0.7964744
## [23,]   23 0.6742896 0.5904500 0.6088963 0.7902379
## [24,]   24 0.6550242 0.5770781 0.5967970 0.7841630
## [25,]   25 0.6550242 0.5640090 0.5849714 0.7782414
## [26,]   26 0.6550242 0.5512359 0.5734113 0.7724656
## [27,]   27 0.6550242 0.5387520 0.5621091 0.7668288
## [28,]   29 0.6550242 0.5146261 0.5402488 0.7559465
## [29,]   30 0.6550242 0.5029713 0.5296770 0.7506895
## [30,]   31 0.6140852 0.4915805 0.5193354 0.7455482
## [31,]   32 0.5668478 0.4804477 0.5092177 0.7405177
## [32,]   33 0.5101631 0.4695670 0.4993180 0.7355934
## [33,]   34 0.5101631 0.4589327 0.4896306 0.7307712
## [34,]   36 0.5101631 0.4383812 0.4708708 0.7214167
## [35,]   37 0.5101631 0.4284531 0.4617880 0.7168771
## [36,]   40 0.0000000 0.3999978 0.4356694 0.7037696

Ajuste de modelos

ajuste_ex <-survreg(survival~ OverTime + BusinessTravel + Department + JobRole, data = atrito,  dist="exponential")
summary(ajuste_ex)
## 
## Call:
## survreg(formula = survival ~ OverTime + BusinessTravel + Department + 
##     JobRole, data = atrito, dist = "exponential")
##                                     Value Std. Error     z       p
## (Intercept)                        21.036   2086.276  0.01 0.99196
## OverTimeYes                        -1.099      0.131 -8.37 < 2e-16
## BusinessTravelTravel_Frequently    -0.904      0.314 -2.88 0.00401
## BusinessTravelTravel_Rarely        -0.553      0.301 -1.84 0.06591
## DepartmentResearch & Development  -15.155   2086.276 -0.01 0.99420
## DepartmentSales                   -14.991   2086.276 -0.01 0.99427
## JobRoleHuman Resources            -16.852   2086.276 -0.01 0.99355
## JobRoleLaboratory Technician       -1.877      0.357 -5.25 1.5e-07
## JobRoleManager                      0.580      0.667  0.87 0.38419
## JobRoleManufacturing Director      -0.142      0.460 -0.31 0.75667
## JobRoleResearch Director            1.277      0.782  1.63 0.10259
## JobRoleResearch Scientist          -1.293      0.364 -3.55 0.00038
## JobRoleSales Executive             -1.268      0.981 -1.29 0.19616
## JobRoleSales Representative        -2.888      0.988 -2.92 0.00345
## 
## Scale fixed at 1 
## 
## Exponential distribution
## Loglik(model)= -996.6   Loglik(intercept only)= -1132
##  Chisq= 270.78 on 13 degrees of freedom, p= 3e-50 
## Number of Newton-Raphson Iterations: 17 
## n= 1470
ajuste_w <-survreg(survival~ OverTime + BusinessTravel + Department + JobRole, data = atrito,  dist="weibull")
summary(ajuste_w)
## 
## Call:
## survreg(formula = survival ~ OverTime + BusinessTravel + Department + 
##     JobRole, data = atrito, dist = "weibull")
##                                     Value Std. Error     z       p
## (Intercept)                        18.457   1461.371  0.01 0.98992
## OverTimeYes                        -0.969      0.126 -7.67 1.7e-14
## BusinessTravelTravel_Frequently    -0.794      0.280 -2.83 0.00460
## BusinessTravelTravel_Rarely        -0.493      0.266 -1.85 0.06401
## DepartmentResearch & Development  -12.980   1461.371 -0.01 0.99291
## DepartmentSales                   -12.818   1461.371 -0.01 0.99300
## JobRoleHuman Resources            -14.542   1461.371 -0.01 0.99206
## JobRoleLaboratory Technician       -1.713      0.322 -5.33 9.9e-08
## JobRoleManager                      0.567      0.588  0.96 0.33524
## JobRoleManufacturing Director      -0.141      0.406 -0.35 0.72889
## JobRoleResearch Director            1.163      0.691  1.68 0.09240
## JobRoleResearch Scientist          -1.199      0.323 -3.71 0.00021
## JobRoleSales Executive             -1.159      0.866 -1.34 0.18086
## JobRoleSales Representative        -2.680      0.875 -3.06 0.00218
## Log(scale)                         -0.126      0.052 -2.42 0.01545
## 
## Scale= 0.882 
## 
## Weibull distribution
## Loglik(model)= -993.8   Loglik(intercept only)= -1131.1
##  Chisq= 274.46 on 13 degrees of freedom, p= 5.2e-51 
## Number of Newton-Raphson Iterations: 17 
## n= 1470
ajuste_ln <-survreg(survival~ OverTime + BusinessTravel + Department + JobRole, data = atrito,  dist="lognormal")
summary(ajuste_ln)
## 
## Call:
## survreg(formula = survival ~ OverTime + BusinessTravel + Department + 
##     JobRole, data = atrito, dist = "lognormal")
##                                     Value Std. Error     z       p
## (Intercept)                       11.4313   547.6868  0.02 0.98335
## OverTimeYes                       -1.0104     0.1290 -7.83 4.8e-15
## BusinessTravelTravel_Frequently   -0.6602     0.2562 -2.58 0.00997
## BusinessTravelTravel_Rarely       -0.3532     0.2348 -1.50 0.13257
## DepartmentResearch & Development  -6.4138   547.6866 -0.01 0.99066
## DepartmentSales                   -6.0718   547.6867 -0.01 0.99115
## JobRoleHuman Resources            -7.9262   547.6867 -0.01 0.98845
## JobRoleLaboratory Technician      -1.6696     0.2821 -5.92 3.3e-09
## JobRoleManager                     0.6899     0.4999  1.38 0.16758
## JobRoleManufacturing Director     -0.0607     0.3481 -0.17 0.86164
## JobRoleResearch Director           1.3047     0.5772  2.26 0.02381
## JobRoleResearch Scientist         -1.0480     0.2846 -3.68 0.00023
## JobRoleSales Executive            -1.1503     0.7717 -1.49 0.13606
## JobRoleSales Representative       -2.8245     0.7874 -3.59 0.00033
## Log(scale)                         0.3589     0.0490  7.33 2.3e-13
## 
## Scale= 1.43 
## 
## Log Normal distribution
## Loglik(model)= -985.6   Loglik(intercept only)= -1119.1
##  Chisq= 266.95 on 13 degrees of freedom, p= 1.9e-49 
## Number of Newton-Raphson Iterations: 13 
## n= 1470

Exponencial, Weibull e Lognormal

library(survival)
library(rms)

ajusteE <- psm( survival~OverTime + BusinessTravel + Department + JobRole  , data = atrito, dist="exponential")
residE <- residuals(ajusteE)
ajusteW <- psm(survival~OverTime + BusinessTravel + Department + JobRole  , data = atrito, dist="weibull")
residW <- residuals(ajusteW)
ajusteLN <- psm(survival~OverTime + BusinessTravel + Department + JobRole  , data = atrito, dist="lognormal")
residLN <- residuals(ajusteLN)

Escolha da melhor distribuição

Vemos que a Weibull se ajusta melhor aos dados

### Escolha da melhor distribuição
par(mfrow=c(1,3))
survplot(residE,main="Exponential",ylab="Complement of residual CDF")
survplot(residW,main="Weibull",ylab="Complement of residual CDF")
survplot(residLN,main="Lognormal",ylab="Complement of residual CDF")

residuos deviance

Nos residuos vemos que a distribuição dos pontos são semelhantes e ambos estão no intervalo de -3 a 3 então podemos considerar que não ha pontos de influência

### residuos deviance
residE_dev =  residuals(ajusteE, type = 'deviance')
residW_dev =  residuals(ajusteW, type = 'deviance')
residLN_dev =  residuals(ajusteLN, type = 'deviance')
par(mfrow=c(1,3))
plot( residE_dev, ylim = c(-3,3) )
plot( residW_dev, ylim = c(-3,3) )
plot( residLN_dev, ylim = c(-3,3) )

pontos influentes sobre os valores preditos

Vemos que a log normal possui mais pontos dispersos

### residuos ldresp: pontos influentes sobre os valores preditos
residE_ldresp =  residuals(ajusteE, type = 'ldresp')
residW_ldresp =  residuals(ajusteW, type = 'ldresp')
residLN_ldresp =  residuals(ajusteLN, type = 'ldresp')



par(mfrow=c(1,3))
plot( residE_ldresp )
plot( residW_ldresp )
plot( residLN_ldresp )

# pontos influentes sobre os parâmetros

### residuos ldcase: pontos influentes sobre os parâmetros
residE_ldcase =  residuals(ajusteE, type = 'ldcase')
residW_ldcase =  residuals(ajusteW, type = 'ldcase')
residLN_ldcase =  residuals(ajusteLN, type = 'ldcase')



par(mfrow=c(1,3))
plot( residE_ldcase )
plot( residW_ldcase )
plot( residLN_ldcase )

Modelo proporcional de cox

#### Modelo proporcional de cox 

library(ggfortify)
library(survminer)

mod_cox = coxph( survival~OverTime + BusinessTravel + Department + JobRole  , data = atrito  )
summary(mod_cox)
## Call:
## coxph(formula = survival ~ OverTime + BusinessTravel + Department + 
##     JobRole, data = atrito)
## 
##   n= 1470, number of events= 237 
## 
##                                        coef  exp(coef)   se(coef)      z
## OverTimeYes                       1.152e+00  3.164e+00  1.318e-01  8.738
## BusinessTravelTravel_Frequently   9.558e-01  2.601e+00  3.157e-01  3.027
## BusinessTravelTravel_Rarely       5.659e-01  1.761e+00  3.017e-01  1.876
## DepartmentResearch & Development  1.449e+01  1.961e+06  1.274e+03  0.011
## DepartmentSales                   1.422e+01  1.500e+06  1.274e+03  0.011
## JobRoleHuman Resources            1.634e+01  1.247e+07  1.274e+03  0.013
## JobRoleLaboratory Technician      2.042e+00  7.706e+00  3.818e-01  5.348
## JobRoleManager                   -5.881e-01  5.554e-01  6.837e-01 -0.860
## JobRoleManufacturing Director     3.049e-01  1.357e+00  4.768e-01  0.640
## JobRoleResearch Director         -1.263e+00  2.827e-01  7.976e-01 -1.584
## JobRoleResearch Scientist         1.456e+00  4.290e+00  3.885e-01  3.748
## JobRoleSales Executive            1.547e+00  4.697e+00  9.935e-01  1.557
## JobRoleSales Representative       3.137e+00  2.304e+01  1.003e+00  3.128
##                                  Pr(>|z|)    
## OverTimeYes                       < 2e-16 ***
## BusinessTravelTravel_Frequently  0.002469 ** 
## BusinessTravelTravel_Rarely      0.060677 .  
## DepartmentResearch & Development 0.990929    
## DepartmentSales                  0.991097    
## JobRoleHuman Resources           0.989771    
## JobRoleLaboratory Technician     8.87e-08 ***
## JobRoleManager                   0.389742    
## JobRoleManufacturing Director    0.522478    
## JobRoleResearch Director         0.113247    
## JobRoleResearch Scientist        0.000178 ***
## JobRoleSales Executive           0.119443    
## JobRoleSales Representative      0.001758 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##                                  exp(coef) exp(-coef) lower .95 upper .95
## OverTimeYes                      3.164e+00  3.161e-01   2.44343     4.096
## BusinessTravelTravel_Frequently  2.601e+00  3.845e-01   1.40066     4.829
## BusinessTravelTravel_Rarely      1.761e+00  5.678e-01   0.97494     3.181
## DepartmentResearch & Development 1.961e+06  5.099e-07   0.00000       Inf
## DepartmentSales                  1.500e+06  6.668e-07   0.00000       Inf
## JobRoleHuman Resources           1.247e+07  8.021e-08   0.00000       Inf
## JobRoleLaboratory Technician     7.706e+00  1.298e-01   3.64614    16.285
## JobRoleManager                   5.554e-01  1.801e+00   0.14541     2.121
## JobRoleManufacturing Director    1.357e+00  7.372e-01   0.53280     3.454
## JobRoleResearch Director         2.827e-01  3.537e+00   0.05921     1.350
## JobRoleResearch Scientist        4.290e+00  2.331e-01   2.00341     9.188
## JobRoleSales Executive           4.697e+00  2.129e-01   0.67018    32.919
## JobRoleSales Representative      2.304e+01  4.341e-02   3.22725   164.436
## 
## Concordance= 0.798  (se = 0.015 )
## Likelihood ratio test= 262  on 13 df,   p=<2e-16
## Wald test            = 223.4  on 13 df,   p=<2e-16
## Score (logrank) test = 291.5  on 13 df,   p=<2e-16
test.ph = cox.zph(mod_cox)
test.ph
##                  chisq df     p
## OverTime        0.0888  1 0.766
## BusinessTravel  3.0550  2 0.217
## Department      2.7986  2 0.247
## JobRole        14.6302  8 0.067
## GLOBAL         21.1156 13 0.071

testando proporcionalidade

### testando proporcionalidade
ggcoxzph(test.ph)

ggcoxdiagnostics( mod_cox, type = 'deviance', linear.predictions = F )

Conclusão

A partir da análise acima, podemos concluir que ‘Hora Extra’, ‘Departamento’, ‘Viagem a trabalho’ e ‘Cargo de trabalho’ afetam a taxa de atrito de funcionários. As curvas de sobrevivência mostram como os funcionários tem probabilidade de atrito em cada ponto do tempo. A mesma conclusão pode ser tirada do teste de Peto que resulta em um valor p significativo (<0,05). A distribuição que melhor de ajustou aos dados foi a Weibull.