Modul pembelajaran secara lengkap dapat diakses melalui tautan sebagai berikut: download disini!
Library & Packages
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.4.0 ✔ purrr 0.3.5
## ✔ tibble 3.1.8 ✔ dplyr 1.0.10
## ✔ tidyr 1.2.1 ✔ stringr 1.4.1
## ✔ readr 2.1.3 ✔ forcats 0.5.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
library(asaur)
library(dplyr)
library(survival)
library(survminer)
## Loading required package: ggpubr
##
## Attaching package: 'survminer'
##
## The following object is masked from 'package:survival':
##
## myeloma
library(ggsurvfit)
Data
Data yang digunakan merupakan data kohort pada April-Desember 2015 yang diperoleh dari artikel penelitian berjudul “Machine Learning can Predict Survival of Patients with Heart Failure from Serum Creatinine and Ejection Fraction Alone” yang ditulis oleh David Chicco dan Giuseppe Jurman (2020). Unit amatan pada penelitian ini terdiri dari 299 pasien gagal jantung sesuai rekam medis milik Rumah Sakit Faisalabad di Punjab, Pakistan. Peubah-peubah yang digunakan tertera pada Tabel 1.
Tabel 1
mydata <- read.csv("D:/MY COLLEGE/SEMESTER 6/ADT/DATA/heart_failure_clinical_records_dataset.csv", sep = ",")
tidyr::tibble(mydata)
## # A tibble: 299 × 13
## age anaemia creatin…¹ diabe…² eject…³ high_…⁴ plate…⁵ serum…⁶ serum…⁷ sex
## <dbl> <int> <int> <int> <int> <int> <dbl> <dbl> <int> <int>
## 1 75 0 582 0 20 1 265000 1.9 130 1
## 2 55 0 7861 0 38 0 263358. 1.1 136 1
## 3 65 0 146 0 20 0 162000 1.3 129 1
## 4 50 1 111 0 20 0 210000 1.9 137 1
## 5 65 1 160 1 20 0 327000 2.7 116 0
## 6 90 1 47 0 40 1 204000 2.1 132 1
## 7 75 1 246 0 15 0 127000 1.2 137 1
## 8 60 1 315 1 60 0 454000 1.1 131 1
## 9 65 0 157 0 65 0 263358. 1.5 138 0
## 10 80 1 123 0 35 1 388000 9.4 133 1
## # … with 289 more rows, 3 more variables: smoking <int>, time <int>,
## # DEATH_EVENT <int>, and abbreviated variable names
## # ¹creatinine_phosphokinase, ²diabetes, ³ejection_fraction,
## # ⁴high_blood_pressure, ⁵platelets, ⁶serum_creatinine, ⁷serum_sodium
EDA dan Pra Proses
Analisis Deskriptif
summary(mydata)
## age anaemia creatinine_phosphokinase diabetes
## Min. :40.00 Min. :0.0000 Min. : 23.0 Min. :0.0000
## 1st Qu.:51.00 1st Qu.:0.0000 1st Qu.: 116.5 1st Qu.:0.0000
## Median :60.00 Median :0.0000 Median : 250.0 Median :0.0000
## Mean :60.83 Mean :0.4314 Mean : 581.8 Mean :0.4181
## 3rd Qu.:70.00 3rd Qu.:1.0000 3rd Qu.: 582.0 3rd Qu.:1.0000
## Max. :95.00 Max. :1.0000 Max. :7861.0 Max. :1.0000
## ejection_fraction high_blood_pressure platelets serum_creatinine
## Min. :14.00 Min. :0.0000 Min. : 25100 Min. :0.500
## 1st Qu.:30.00 1st Qu.:0.0000 1st Qu.:212500 1st Qu.:0.900
## Median :38.00 Median :0.0000 Median :262000 Median :1.100
## Mean :38.08 Mean :0.3512 Mean :263358 Mean :1.394
## 3rd Qu.:45.00 3rd Qu.:1.0000 3rd Qu.:303500 3rd Qu.:1.400
## Max. :80.00 Max. :1.0000 Max. :850000 Max. :9.400
## serum_sodium sex smoking time
## Min. :113.0 Min. :0.0000 Min. :0.0000 Min. : 4.0
## 1st Qu.:134.0 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.: 73.0
## Median :137.0 Median :1.0000 Median :0.0000 Median :115.0
## Mean :136.6 Mean :0.6488 Mean :0.3211 Mean :130.3
## 3rd Qu.:140.0 3rd Qu.:1.0000 3rd Qu.:1.0000 3rd Qu.:203.0
## Max. :148.0 Max. :1.0000 Max. :1.0000 Max. :285.0
## DEATH_EVENT
## Min. :0.0000
## 1st Qu.:0.0000
## Median :0.0000
## Mean :0.3211
## 3rd Qu.:1.0000
## Max. :1.0000
Visualisasi Meninggal vs Tersensor
options(repr.plot.width = 10, repr.plot.height = 4)
mydata %>%
mutate(event_type = factor(ifelse(DEATH_EVENT == 1, "death", "censored"))) %>%
group_by(event_type) %>%
tally(name = "count") %>%
ggplot(aes(x = event_type, y = count)) +
geom_bar(stat = "Identity", fill = "orange", width = 0.2, colour = "black") +
ggtitle("Perbandingan Banyak Record Pasien\nTersesor vs Meninggal") +
theme(plot.title = element_text(size = 22),
axis.title = element_text(size = 16))
Terlihat bahwa proporsi record pasien tersensor lebih banyak dibandingkan oleh pasien yang mengalami kejadian berupa kematian.
Visualisasi Sebaran time-to-event
options(repr.plot.width = 12, repr.plot.height = 5)
mydata %>%
mutate(
event_type = factor(ifelse(DEATH_EVENT == 1, "death", "censored"))
) %>%
select(event_type, time) %>%
ggplot(aes(x = time, colour = event_type)) +
geom_density() +
ggtitle("Sebaran Waktu Kajian Berdasarkan\nKejadian: Tersensor vs Meninggal") +
theme(plot.title = element_text(size = 22),
axis.title = element_text(size = 16),
legend.title = element_text(size = 18),
legend.text = element_text(size = 16))
Terlihat bahwa sebaran record pasien tersensor dan mengalami kejadian berupa kematian terlihat berbeda.
Identifikasi Missing Value
sapply(mydata, function(x) sum(is.na(x)))
## age anaemia creatinine_phosphokinase
## 0 0 0
## diabetes ejection_fraction high_blood_pressure
## 0 0 0
## platelets serum_creatinine serum_sodium
## 0 0 0
## sex smoking time
## 0 0 0
## DEATH_EVENT
## 0
Tidak terindentifikasi adanya missing value.
Identifikasi Data Duplikat
sum(duplicated(mydata$id))
## [1] 0
dim(mydata[duplicated(mydata$id),])[1]
## [1] 0
0 berarti tidak ada duplikat data.
Pengklasifikasian Peubah
# Assign ID
mydata$id <- seq.int(nrow(mydata))
#Diabetes
mydata$dia <-ifelse(mydata$diabetes==1, "Yes", "No")
#Serum Sodium
mydata$sodiumc <- ifelse(mydata$serum_sodium >135 & mydata$serum_sodium<145, "Serum\nSodium Normal", "Serum\nSodium Abnormal")
mydata$sodiumn <- ifelse(mydata$serum_sodium >135 & mydata$serum_sodium<145, 0, 1)
#Usia
mydata$agegp <- ifelse(mydata$age<65, "Age <65", "Age >=65")
mydata$agegpn <- ifelse(mydata$age<65, 0, 1)
#Kejadian vs Sensor
mydata$cnsr <- ifelse(mydata$DEATH_EVENT==0, "Censor", "Event")
Kurva Daya Tahan Kaplan Meier & Uji Log Rank
Hipotesis yang diuji:
H0 : Kurva daya tahan hidup antara kategori peubah pada pasien gagal jantung sama
H1 : Kurva daya tahan hidup antara kategori peubah pada pasien gagal jantung beda
Kriteria Kaidah Keputusan:
Peubah Diabetes
fit_dia<-survfit(Surv(time,DEATH_EVENT)~mydata$dia, data=mydata)
summary(fit_dia)
## Call: survfit(formula = Surv(time, DEATH_EVENT) ~ mydata$dia, data = mydata)
##
## mydata$dia=No
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 4 174 1 0.994 0.00573 0.983 1.000
## 6 173 1 0.989 0.00808 0.973 1.000
## 7 172 2 0.977 0.01136 0.955 1.000
## 8 170 1 0.971 0.01266 0.947 0.996
## 10 169 5 0.943 0.01764 0.909 0.978
## 11 164 2 0.931 0.01921 0.894 0.969
## 13 161 1 0.925 0.01994 0.887 0.965
## 14 160 2 0.914 0.02130 0.873 0.956
## 15 158 1 0.908 0.02194 0.866 0.952
## 20 156 1 0.902 0.02256 0.859 0.947
## 24 155 1 0.896 0.02315 0.852 0.943
## 26 154 1 0.890 0.02372 0.845 0.938
## 28 153 1 0.885 0.02427 0.838 0.933
## 31 152 1 0.879 0.02480 0.832 0.929
## 38 151 1 0.873 0.02531 0.825 0.924
## 41 150 1 0.867 0.02580 0.818 0.919
## 42 149 1 0.861 0.02627 0.811 0.914
## 43 148 2 0.850 0.02718 0.798 0.905
## 50 146 1 0.844 0.02761 0.791 0.900
## 55 143 1 0.838 0.02804 0.785 0.895
## 60 142 1 0.832 0.02845 0.778 0.890
## 61 140 1 0.826 0.02887 0.771 0.885
## 64 138 1 0.820 0.02927 0.765 0.880
## 65 137 1 0.814 0.02966 0.758 0.874
## 66 136 1 0.808 0.03004 0.751 0.869
## 72 134 1 0.802 0.03042 0.745 0.864
## 73 133 2 0.790 0.03113 0.731 0.854
## 82 123 1 0.784 0.03154 0.724 0.848
## 88 114 1 0.777 0.03200 0.717 0.842
## 90 111 2 0.763 0.03292 0.701 0.830
## 95 106 1 0.756 0.03338 0.693 0.824
## 96 103 1 0.748 0.03386 0.685 0.818
## 109 93 1 0.740 0.03444 0.676 0.811
## 111 90 1 0.732 0.03502 0.666 0.804
## 113 87 1 0.724 0.03562 0.657 0.797
## 115 85 1 0.715 0.03620 0.648 0.790
## 162 65 1 0.704 0.03728 0.635 0.781
## 170 64 1 0.693 0.03828 0.622 0.772
## 172 63 1 0.682 0.03922 0.609 0.763
## 180 60 2 0.659 0.04108 0.584 0.745
## 196 47 1 0.645 0.04253 0.567 0.734
## 198 45 1 0.631 0.04394 0.550 0.723
## 207 39 1 0.615 0.04569 0.531 0.711
## 214 26 1 0.591 0.04968 0.501 0.697
## 241 15 1 0.552 0.06000 0.446 0.683
##
## mydata$dia=Yes
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 8 125 1 0.992 0.00797 0.977 1.000
## 10 124 1 0.984 0.01122 0.962 1.000
## 15 123 1 0.976 0.01369 0.950 1.000
## 20 122 1 0.968 0.01574 0.938 0.999
## 23 120 2 0.952 0.01917 0.915 0.990
## 26 118 2 0.936 0.02198 0.894 0.980
## 27 116 1 0.928 0.02322 0.883 0.974
## 28 115 1 0.920 0.02438 0.873 0.969
## 29 114 1 0.912 0.02547 0.863 0.963
## 30 112 4 0.879 0.02930 0.823 0.938
## 32 107 1 0.871 0.03016 0.814 0.932
## 33 106 2 0.854 0.03175 0.794 0.919
## 35 103 1 0.846 0.03251 0.785 0.912
## 40 102 1 0.838 0.03323 0.775 0.905
## 43 101 1 0.829 0.03392 0.766 0.899
## 44 100 1 0.821 0.03458 0.756 0.892
## 45 99 1 0.813 0.03521 0.747 0.885
## 59 98 1 0.805 0.03581 0.737 0.878
## 60 97 1 0.796 0.03639 0.728 0.871
## 65 96 1 0.788 0.03695 0.719 0.864
## 67 95 1 0.780 0.03748 0.710 0.857
## 77 90 1 0.771 0.03805 0.700 0.849
## 78 89 1 0.762 0.03860 0.690 0.842
## 100 72 1 0.752 0.03949 0.678 0.833
## 126 62 1 0.740 0.04067 0.664 0.824
## 129 61 1 0.728 0.04177 0.650 0.814
## 130 60 1 0.715 0.04280 0.636 0.804
## 135 59 1 0.703 0.04376 0.623 0.794
## 150 53 1 0.690 0.04490 0.607 0.784
## 154 52 1 0.677 0.04595 0.592 0.773
## 171 51 1 0.663 0.04693 0.578 0.762
## 172 50 1 0.650 0.04783 0.563 0.751
## 193 37 1 0.633 0.04966 0.542 0.738
## 235 21 1 0.602 0.05569 0.503 0.722
ggsurvplot(fit_dia,data=mydata, xlab="Days", ggtheme=theme_minimal())
survdiff(Surv(time,DEATH_EVENT)~dia, data=mydata)
## Call:
## survdiff(formula = Surv(time, DEATH_EVENT) ~ dia, data = mydata)
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## dia=No 174 56 55 0.0172 0.0405
## dia=Yes 125 40 41 0.0231 0.0405
##
## Chisq= 0 on 1 degrees of freedom, p= 0.8
Kaidah keputusan : Tak Tolak H0
Kesimpulan : Kurva daya tahan terlihat tidak ada perbedaan yang signifikan antara pasien yang menderita penyakit gagal jantung yang sekaligus menderita penyakit diabetes dan tidak.
Peubah Serum Sodium
fit_sd<-survfit(Surv(time,DEATH_EVENT)~sodiumc, data=mydata)
summary(fit_sd)
## Call: survfit(formula = Surv(time, DEATH_EVENT) ~ sodiumc, data = mydata)
##
## sodiumc=Serum
## Sodium Abnormal
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 4 110 1 0.991 0.00905 0.973 1.000
## 7 109 1 0.982 0.01274 0.957 1.000
## 8 108 2 0.964 0.01785 0.929 0.999
## 10 106 3 0.936 0.02327 0.892 0.983
## 14 103 1 0.927 0.02476 0.880 0.977
## 15 102 1 0.918 0.02613 0.868 0.971
## 23 100 1 0.909 0.02744 0.857 0.964
## 26 99 2 0.891 0.02980 0.834 0.951
## 27 97 1 0.881 0.03087 0.823 0.944
## 28 96 2 0.863 0.03285 0.801 0.930
## 30 94 3 0.836 0.03544 0.769 0.908
## 31 91 1 0.826 0.03622 0.758 0.900
## 35 89 1 0.817 0.03698 0.748 0.893
## 38 88 1 0.808 0.03771 0.737 0.885
## 41 87 1 0.799 0.03840 0.727 0.877
## 43 86 1 0.789 0.03906 0.716 0.870
## 44 85 1 0.780 0.03969 0.706 0.862
## 45 84 1 0.771 0.04029 0.696 0.854
## 50 83 1 0.761 0.04086 0.685 0.846
## 60 82 1 0.752 0.04141 0.675 0.838
## 61 81 1 0.743 0.04192 0.665 0.830
## 64 80 1 0.734 0.04241 0.655 0.822
## 67 79 1 0.724 0.04288 0.645 0.813
## 72 78 1 0.715 0.04332 0.635 0.805
## 73 77 1 0.706 0.04375 0.625 0.797
## 77 75 1 0.696 0.04416 0.615 0.788
## 82 72 1 0.687 0.04460 0.605 0.780
## 90 69 1 0.677 0.04505 0.594 0.771
## 95 66 1 0.666 0.04551 0.583 0.762
## 96 63 1 0.656 0.04601 0.572 0.752
## 100 61 1 0.645 0.04649 0.560 0.743
## 109 56 1 0.634 0.04707 0.548 0.733
## 113 54 1 0.622 0.04763 0.535 0.723
## 115 53 1 0.610 0.04816 0.523 0.712
## 130 49 1 0.598 0.04876 0.509 0.701
## 135 47 1 0.585 0.04935 0.496 0.690
## 162 42 1 0.571 0.05010 0.481 0.678
## 172 41 1 0.557 0.05078 0.466 0.666
## 180 37 2 0.527 0.05231 0.434 0.640
## 193 32 1 0.510 0.05320 0.416 0.626
## 198 28 1 0.492 0.05434 0.396 0.611
## 207 23 1 0.471 0.05603 0.373 0.595
## 235 9 1 0.419 0.07009 0.301 0.581
## 241 8 1 0.366 0.07846 0.241 0.557
##
## sodiumc=Serum
## Sodium Normal
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 6 189 1 0.995 0.00528 0.984 1.000
## 7 188 1 0.989 0.00744 0.975 1.000
## 10 187 3 0.974 0.01167 0.951 0.997
## 11 184 2 0.963 0.01374 0.936 0.990
## 13 181 1 0.958 0.01466 0.929 0.987
## 14 180 1 0.952 0.01551 0.922 0.983
## 15 179 1 0.947 0.01631 0.916 0.980
## 20 177 2 0.936 0.01779 0.902 0.972
## 23 175 1 0.931 0.01848 0.895 0.968
## 24 174 1 0.926 0.01913 0.889 0.964
## 26 173 1 0.920 0.01976 0.882 0.960
## 29 172 1 0.915 0.02035 0.876 0.956
## 30 170 1 0.910 0.02093 0.869 0.951
## 32 168 1 0.904 0.02150 0.863 0.947
## 33 167 2 0.893 0.02256 0.850 0.939
## 40 165 1 0.888 0.02306 0.844 0.934
## 42 164 1 0.882 0.02355 0.837 0.930
## 43 163 2 0.872 0.02447 0.825 0.921
## 55 159 1 0.866 0.02493 0.819 0.916
## 59 158 1 0.861 0.02536 0.812 0.912
## 60 157 1 0.855 0.02579 0.806 0.907
## 65 154 2 0.844 0.02662 0.793 0.898
## 66 152 1 0.839 0.02702 0.787 0.893
## 73 148 1 0.833 0.02743 0.781 0.888
## 78 142 1 0.827 0.02785 0.774 0.883
## 88 124 1 0.820 0.02842 0.766 0.878
## 90 120 1 0.813 0.02899 0.759 0.872
## 111 101 1 0.805 0.02980 0.749 0.866
## 126 87 1 0.796 0.03086 0.738 0.859
## 129 86 1 0.787 0.03186 0.727 0.852
## 150 76 1 0.777 0.03308 0.714 0.844
## 154 75 1 0.766 0.03422 0.702 0.836
## 170 74 1 0.756 0.03529 0.690 0.828
## 171 73 1 0.745 0.03630 0.678 0.820
## 172 72 1 0.735 0.03724 0.666 0.812
## 196 54 1 0.722 0.03896 0.649 0.802
## 214 37 1 0.702 0.04251 0.623 0.790
ggsurvplot(fit_sd,data=mydata ,xlab="Days", ggtheme=theme_minimal())
survdiff(Surv(time,DEATH_EVENT)~sodiumc, data=mydata)
## Call:
## survdiff(formula = Surv(time, DEATH_EVENT) ~ sodiumc, data = mydata)
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## sodiumc=Serum\nSodium Abnormal 110 52 33.8 9.83 15.2
## sodiumc=Serum\nSodium Normal 189 44 62.2 5.34 15.2
##
## Chisq= 15.2 on 1 degrees of freedom, p= 9e-05
Kaidah keputusan : Tolak H0
Kesimpulan : Kurva daya tahan terlihat ada perbedaan yang signifikan antara pasien yang menderita penyakit gagal jantung dengan tingkat serum natrium dalam darah tergolong normal dan tidak.
Peubah Usia
fit_age<-survfit(Surv(time,DEATH_EVENT)~agegp, data=mydata)
summary(fit_age)
## Call: survfit(formula = Surv(time, DEATH_EVENT) ~ agegp, data = mydata)
##
## agegp=Age <65
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 6 184 1 0.995 0.00542 0.984 1.000
## 7 183 1 0.989 0.00764 0.974 1.000
## 10 182 2 0.978 0.01075 0.957 1.000
## 11 180 2 0.967 0.01309 0.942 0.993
## 14 177 1 0.962 0.01411 0.935 0.990
## 15 176 1 0.956 0.01506 0.927 0.986
## 26 174 1 0.951 0.01594 0.920 0.983
## 28 173 1 0.945 0.01677 0.913 0.979
## 30 171 1 0.940 0.01756 0.906 0.975
## 32 169 1 0.934 0.01831 0.899 0.971
## 33 168 1 0.929 0.01903 0.892 0.967
## 35 167 1 0.923 0.01971 0.885 0.963
## 38 166 1 0.918 0.02036 0.879 0.958
## 40 165 1 0.912 0.02099 0.872 0.954
## 42 164 1 0.907 0.02158 0.865 0.950
## 43 163 2 0.895 0.02271 0.852 0.941
## 45 161 1 0.890 0.02324 0.845 0.937
## 55 159 1 0.884 0.02375 0.839 0.932
## 60 158 2 0.873 0.02474 0.826 0.923
## 61 155 1 0.867 0.02521 0.819 0.918
## 64 153 1 0.862 0.02568 0.813 0.914
## 65 152 1 0.856 0.02613 0.806 0.909
## 73 149 1 0.850 0.02657 0.800 0.904
## 77 146 1 0.845 0.02702 0.793 0.899
## 78 145 1 0.839 0.02746 0.787 0.894
## 82 139 1 0.833 0.02792 0.780 0.889
## 96 118 1 0.826 0.02856 0.772 0.884
## 100 116 1 0.819 0.02918 0.763 0.878
## 126 90 1 0.809 0.03024 0.752 0.871
## 129 89 1 0.800 0.03124 0.741 0.864
## 135 87 1 0.791 0.03221 0.730 0.857
## 150 78 1 0.781 0.03335 0.718 0.849
## 170 77 1 0.771 0.03443 0.706 0.841
## 171 76 1 0.761 0.03544 0.694 0.833
## 172 75 2 0.740 0.03728 0.671 0.817
## 180 69 1 0.730 0.03826 0.658 0.809
## 193 57 1 0.717 0.03967 0.643 0.799
## 196 56 1 0.704 0.04097 0.628 0.789
## 207 49 1 0.690 0.04258 0.611 0.778
## 214 41 1 0.673 0.04474 0.591 0.767
## 241 25 1 0.646 0.05040 0.554 0.753
##
## agegp=Age >=65
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 4 115 1 0.991 0.00866 0.974 1.000
## 7 114 1 0.983 0.01219 0.959 1.000
## 8 113 2 0.965 0.01709 0.932 0.999
## 10 111 4 0.930 0.02372 0.885 0.978
## 13 107 1 0.922 0.02505 0.874 0.972
## 14 106 1 0.913 0.02628 0.863 0.966
## 15 105 1 0.904 0.02743 0.852 0.960
## 20 103 2 0.887 0.02957 0.831 0.947
## 23 101 2 0.869 0.03148 0.810 0.933
## 24 99 1 0.860 0.03237 0.799 0.926
## 26 98 2 0.843 0.03401 0.779 0.912
## 27 96 1 0.834 0.03477 0.769 0.905
## 28 95 1 0.825 0.03549 0.759 0.898
## 29 94 1 0.817 0.03618 0.749 0.891
## 30 93 3 0.790 0.03808 0.719 0.868
## 31 90 1 0.781 0.03865 0.709 0.861
## 33 89 1 0.773 0.03920 0.700 0.853
## 41 87 1 0.764 0.03975 0.690 0.846
## 43 86 1 0.755 0.04027 0.680 0.838
## 44 85 1 0.746 0.04076 0.670 0.830
## 50 84 1 0.737 0.04123 0.661 0.823
## 59 82 1 0.728 0.04170 0.651 0.815
## 65 81 1 0.719 0.04214 0.641 0.807
## 66 80 1 0.710 0.04256 0.631 0.799
## 67 79 1 0.701 0.04296 0.622 0.791
## 72 78 1 0.692 0.04334 0.612 0.783
## 73 76 1 0.683 0.04372 0.603 0.774
## 88 64 1 0.672 0.04432 0.591 0.765
## 90 63 2 0.651 0.04541 0.568 0.746
## 95 59 1 0.640 0.04596 0.556 0.737
## 109 53 1 0.628 0.04665 0.543 0.726
## 111 52 1 0.616 0.04729 0.530 0.716
## 113 51 1 0.604 0.04788 0.517 0.705
## 115 50 1 0.592 0.04842 0.504 0.695
## 130 46 1 0.579 0.04905 0.490 0.683
## 154 40 1 0.564 0.04991 0.475 0.671
## 162 39 1 0.550 0.05069 0.459 0.659
## 180 37 1 0.535 0.05145 0.443 0.646
## 198 25 1 0.514 0.05366 0.419 0.630
## 235 10 1 0.462 0.06860 0.346 0.618
ggsurvplot(fit_age,data=mydata, xlab="Days", ggtheme=theme_minimal())
survdiff(Surv(time,DEATH_EVENT)~agegp, data=mydata)
## Call:
## survdiff(formula = Surv(time, DEATH_EVENT) ~ agegp, data = mydata)
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## agegp=Age <65 184 46 62.7 4.44 12.9
## agegp=Age >=65 115 50 33.3 8.36 12.9
##
## Chisq= 12.9 on 1 degrees of freedom, p= 3e-04
Kaidah keputusan : Tolak H0
Kesimpulan : Kurva daya tahan terlihat ada perbedaan yang signifikan antara pasien yang menderita penyakit gagal jantung yang berusia <65 dan >=65 tahun.