0% found this document useful (0 votes)
4 views42 pages

Data Exploration in R for Age 50+

Uploaded by

rizkiik278
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views42 pages

Data Exploration in R for Age 50+

Uploaded by

rizkiik278
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

5/21/25, 6:13 AM Program Coba - Colab

keyboard_arrow_down Eksplorasi Data


# Install package
[Link] ("writexl")
[Link] ("zoo")
[Link]("gridExtra")
[Link] ("corrplot")
[Link] ("GGally")
[Link]("lmtest")
[Link] ("nortest")
[Link] ("car")
[Link]("lme4")
[Link]("lmerTest")

# Load libraries
library(corrplot)
library(GGally)
library (ggplot2)
library (gridExtra)
library(zoo)
library(readxl)
library (dplyr)
library(writexl)
library(lmtest)
library(nortest)
library (car)
library(lme4)
library(lmerTest)

Installing package into ‘/usr/local/lib/R/site-library’


(as ‘lib’ is unspecified)

Installing package into ‘/usr/local/lib/R/site-library’


(as ‘lib’ is unspecified)

Installing package into ‘/usr/local/lib/R/site-library’


(as ‘lib’ is unspecified)

Installing package into ‘/usr/local/lib/R/site-library’


(as ‘lib’ is unspecified)

Installing package into ‘/usr/local/lib/R/site-library’


(as ‘lib’ is unspecified)

also installing the dependencies ‘patchwork’, ‘ggstats’, ‘plyr’

Installing package into ‘/usr/local/lib/R/site-library’


(as ‘lib’ is unspecified)

[Link] 1/42
5/21/25, 6:13 AM Program Coba - Colab

Installing package into ‘/usr/local/lib/R/site-library’


(as ‘lib’ is unspecified)

Installing package into ‘/usr/local/lib/R/site-library’


(as ‘lib’ is unspecified)

also installing the dependencies ‘rbibutils’, ‘cowplot’, ‘Deriv’, ‘microbenchmark’, ‘

Installing package into ‘/usr/local/lib/R/site-library’


(as ‘lib’ is unspecified)

Installing package into ‘/usr/local/lib/R/site-library’


(as ‘lib’ is unspecified)

corrplot 0.95 loaded

Loading required package: ggplot2

Registered S3 method overwritten by 'GGally':


method from
+.gg ggplot2

Attaching package: ‘zoo’

The following objects are masked from ‘package:base’:

[Link], [Link]

Attaching package: ‘dplyr’

data <- read_excel("/content/[Link]")


str(data)

tibble [52,329 × 52] (S3: tbl_df/tbl/[Link])


$ mergeid : chr [1:52329] "Bf-000706-02" "Bf-001195-01" "Bf-002058-01" "Bf-002111-
$ country : num [1:52329] 23 23 NA 23 23 23 NA NA NA 23 ...
$ age_int : num [1:52329] 60 54 NA 80 52 57 NA NA NA 80 ...
$ female : num [1:52329] 1 0 NA 0 1 1 NA NA NA 0 ...
$ batch : num [1:52329] 2 1 NA 1 2 2 NA NA NA 1 ...
$ t_ship : num [1:52329] 7 8 NA 3 6 3 NA NA NA 4 ...
$ t_dry : num [1:52329] 40 14 NA 16 25 26 NA NA NA 22 ...
$ t_temp : num [1:52329] 9 16 NA 6 18 14 NA NA NA 15 ...
$ t_open : num [1:52329] 0 0 NA 0 0 1 NA NA NA 0 ...
$ t_desiccant : num [1:52329] 0 0 NA 0 0 0 NA NA NA 0 ...
$ t_sizeA : num [1:52329] 1.5 0.5 NA 0.5 0.5 ...
$ t_sizeB : num [1:52329] 1.5 0.5 NA 0.5 0.5 0.5 NA NA NA 0.5 ...
$ cho_x0 : num [1:52329] 408 285 NA 378 254 347 NA NA NA 323 ...

[Link] 2/42
5/21/25, 6:13 AM Program Coba - Colab
$ crp_x0 : num [1:52329] 0.548 0.28 NA 2.38 0.664 ...
$ trg_x0 : num [1:52329] 137 112 NA 292 154 159 NA NA NA 141 ...
$ cyc_x0 : num [1:52329] 0.93 1.19 NA 1.5 0.75 ...
$ hdl_x0 : num [1:52329] 102 67 NA NA 83 NA NA NA NA NA ...
$ a1c_x0 : num [1:52329] 6.62 NA NA 5.3 6.93 ...
$ thb_x0 : num [1:52329] 15.6 10.3 NA NA 14.9 ...
$ cho_x1 : num [1:52329] 495 285 NA 378 339 ...
$ cyc_x1 : num [1:52329] 1.038 1.189 NA 1.495 0.862 ...
$ trg_x1 : num [1:52329] 180 112 NA 292 194 ...
$ a1c_x1 : num [1:52329] 5.93 NA NA 5.8 6.22 ...
$ thb_x2 : num [1:52329] 14.7 11.9 NA NA 17.2 ...
$ hdl_x2 : num [1:52329] 101.7 77.4 NA NA 95.8 ...
$ cho_x2 : num [1:52329] 487 321 NA 426 382 ...
$ crp_x2 : num [1:52329] 0.531 0.311 NA 2.64 0.737 ...
$ cyc_x2 : num [1:52329] 1.04 1.319 NA 1.659 0.957 ...
$ trg_x2 : num [1:52329] 179 124 NA 324 215 ...
$ a1c_x2 : num [1:52329] 5.96 NA NA 5.69 6.11 ...
$ cho_x3 : num [1:52329] 510 393 NA 460 431 ...
$ crp_x3 : num [1:52329] 1.89 1.13 NA 3.96 1.71 ...
$ trg_x3 : num [1:52329] 240 161 NA 383 265 ...
$ cyc_x3 : num [1:52329] 1.48 1.62 NA 2.02 1.28 ...
$ hdl_x3 : num [1:52329] 157 120 NA NA 134 ...
$ a1c_x3 : num [1:52329] 6.01 NA NA 5.56 5.89 ...
$ thb_x3 : num [1:52329] 16.6 14.6 NA NA 17.9 ...
$ cho_x4 : num [1:52329] 260 190 NA 230 213 ...
$ crp_x4 : num [1:52329] 2.07 1.31 NA 4.15 1.89 ...
$ trg_x4 : num [1:52329] 141.7 78.1 NA 257.5 162.1 ...
$ cyc_x4 : num [1:52329] 0.949 1.002 NA 1.157 0.876 ...
$ hdl_x4 : num [1:52329] 73.3 53.7 NA NA 61.2 ...
$ thb_x4 : num [1:52329] 15 13.3 NA NA 16 ...
$ a1c_x4 : num [1:52329] 6.01 NA NA 5.56 5.89 ...
$ astar : num [1:52329] 0 0 NA 1 0 1 NA NA NA 1 ...
$ storage_cho : num [1:52329] 1051 NA NA NA 1037 ...
$ storage_trg : num [1:52329] 1051 NA NA NA 1037 ...
$ storage_cyc : num [1:52329] 1051 NA NA NA 1037 ...
$ cciw_dbs : num [1:52329] 653 2822 1032 1300 1473 ...
$ pred_eligible: num [1:52329] 0.89 0.648 0.859 0.875 0.708 ...
$ pred_consent : num [1:52329] 0.812 0.783 0.793 0.755 0.802 ...
$ pred_analyzed: num [1:52329] 0.855 0.849 0.84 0.783 0.863 ...

# Memfilter data untuk usia >= 50


data <- data %>% filter(age_int >= 50)
str(data)

tibble [23,996 × 52] (S3: tbl_df/tbl/[Link])


$ mergeid : chr [1:23996] "Bf-000706-02" "Bf-001195-01" "Bf-002111-01" "Bf-002912-
$ country : num [1:23996] 23 23 23 23 23 23 23 23 23 23 ...
$ age_int : num [1:23996] 60 54 80 52 57 80 54 72 63 83 ...
$ female : num [1:23996] 1 0 0 1 1 0 1 1 0 1 ...
$ batch : num [1:23996] 2 1 1 2 2 1 2 1 2 2 ...
$ t_ship : num [1:23996] 7 8 3 6 3 4 3 10 13 6 ...
$ t_dry : num [1:23996] 40 14 16 25 26 22 40 5 24 21 ...
$ t_temp : num [1:23996] 9 16 6 18 14 15 16 9 23 11 ...
$ t_open : num [1:23996] 0 0 0 0 1 0 0 0 1 0 ...
[Link] 3/42
5/21/25, 6:13 AM Program Coba - Colab
$ t_desiccant : num [1:23996] 0 0 0 0 0 0 0 0 0 0 ...
$ t_sizeA : num [1:23996] 1.5 0.5 0.5 0.5 0.61 ...
$ t_sizeB : num [1:23996] 1.5 0.5 0.5 0.5 0.5 ...
$ cho_x0 : num [1:23996] 408 285 378 254 347 323 259 NA 325 267 ...
$ crp_x0 : num [1:23996] 0.548 0.28 2.38 0.664 2.892 ...
$ trg_x0 : num [1:23996] 137 112 292 154 159 141 215 NA 148 184 ...
$ cyc_x0 : num [1:23996] 0.93 1.19 1.5 0.75 0.76 ...
$ hdl_x0 : num [1:23996] 102 67 NA 83 NA NA 92 NA NA NA ...
$ a1c_x0 : num [1:23996] 6.62 NA 5.3 6.93 7.37 ...
$ thb_x0 : num [1:23996] 15.6 10.3 NA 14.9 NA ...
$ cho_x1 : num [1:23996] 495 285 378 339 436 ...
$ cyc_x1 : num [1:23996] 1.038 1.189 1.495 0.862 0.865 ...
$ trg_x1 : num [1:23996] 180 112 292 194 203 ...
$ a1c_x1 : num [1:23996] 5.93 NA 5.8 6.22 6.62 ...
$ thb_x2 : num [1:23996] 14.7 11.9 NA 17.2 NA ...
$ hdl_x2 : num [1:23996] 101.7 77.4 NA 95.8 NA ...
$ cho_x2 : num [1:23996] 487 321 426 382 492 ...
$ crp_x2 : num [1:23996] 0.531 0.311 2.64 0.737 3.208 ...
$ cyc_x2 : num [1:23996] 1.04 1.319 1.659 0.957 0.96 ...
$ trg_x2 : num [1:23996] 179 124 324 215 225 ...
$ a1c_x2 : num [1:23996] 5.96 NA 5.69 6.11 6.51 ...
$ cho_x3 : num [1:23996] 510 393 460 431 499 ...
$ crp_x3 : num [1:23996] 1.89 1.13 3.96 1.71 4.64 ...
$ trg_x3 : num [1:23996] 240 161 383 265 275 ...
$ cyc_x3 : num [1:23996] 1.48 1.62 2.02 1.28 1.31 ...
$ hdl_x3 : num [1:23996] 157 120 NA 134 NA ...
$ a1c_x3 : num [1:23996] 6.01 NA 5.56 5.89 6.39 ...
$ thb_x3 : num [1:23996] 16.6 14.6 NA 17.9 NA ...
$ cho_x4 : num [1:23996] 260 190 230 213 253 ...
$ crp_x4 : num [1:23996] 2.07 1.31 4.15 1.89 4.82 ...
$ trg_x4 : num [1:23996] 141.7 78.1 257.5 162.1 170.6 ...
$ cyc_x4 : num [1:23996] 0.949 1.002 1.157 0.876 0.885 ...
$ hdl_x4 : num [1:23996] 73.3 53.7 NA 61.2 NA ...
$ thb_x4 : num [1:23996] 15 13.3 NA 16 NA ...
$ a1c_x4 : num [1:23996] 6.01 NA 5.56 5.89 6.39 ...
$ astar : num [1:23996] 0 0 1 0 1 1 0 1 NA 1 ...
$ storage_cho : num [1:23996] 1051 NA NA 1037 1061 ...
$ storage_trg : num [1:23996] 1051 NA NA 1037 1061 ...
$ storage_cyc : num [1:23996] 1051 NA NA 1037 1061 ...
$ cciw_dbs : num [1:23996] 653 2822 1300 1473 650 ...
$ pred_eligible: num [1:23996] 0.89 0.648 0.875 0.708 0.708 ...
$ pred_consent : num [1:23996] 0.812 0.783 0.755 0.802 0.802 ...
$ pred_analyzed: num [1:23996] 0.855 0.849 0.783 0.863 0.863 ...

summary(data)

[Link] 4/42
5/21/25, 6:13 AM Program Coba - Colab

mergeid country age_int female


Length:23996 Min. :12.00 Min. : 50.00 Min. :0.0000
Class :character 1st Qu.:15.00 1st Qu.: 61.00 1st Qu.:0.0000
Mode :character Median :19.00 Median : 67.00 Median :1.0000
Mean :21.38 Mean : 68.07 Mean :0.5679
3rd Qu.:25.00 3rd Qu.: 75.00 3rd Qu.:1.0000
Max. :35.00 Max. :101.00 Max. :1.0000

batch t_ship t_dry t_temp


Min. :1.000 Min. : 1.000 Min. : 5.00 Min. : 0.00
1st Qu.:1.000 1st Qu.: 3.000 1st Qu.:13.00 1st Qu.: 7.00
Median :2.000 Median : 5.000 Median :20.00 Median :14.00
Mean :1.667 Mean : 5.479 Mean :20.69 Mean :13.99
3rd Qu.:2.000 3rd Qu.: 6.000 3rd Qu.:27.00 3rd Qu.:20.00
Max. :2.000 Max. :20.000 Max. :40.00 Max. :35.00

t_open t_desiccant t_sizeA t_sizeB


Min. :0.0000 Min. :0.00000 Min. :0.5000 Min. :0.5000
1st Qu.:0.0000 1st Qu.:0.00000 1st Qu.:0.5000 1st Qu.:0.5000
Median :0.0000 Median :0.00000 Median :0.5000 Median :0.5000
Mean :0.1063 Mean :0.01809 Mean :0.7697 Mean :0.6915
3rd Qu.:0.0000 3rd Qu.:0.00000 3rd Qu.:1.0070 3rd Qu.:0.7320
Max. :1.0000 Max. :1.00000 Max. :1.5000 Max. :1.5000

cho_x0 crp_x0 trg_x0 cyc_x0


Min. : 2.0 Min. : 0.000 Min. : 11.0 Min. :0.245
1st Qu.:263.0 1st Qu.: 0.467 1st Qu.: 155.0 1st Qu.:0.870
Median :312.0 Median : 0.903 Median : 206.5 Median :1.020
Mean :312.4 Mean : 1.972 Mean : 232.6 Mean :1.085
3rd Qu.:362.0 3rd Qu.: 1.764 3rd Qu.: 277.0 3rd Qu.:1.218
Max. :718.0 Max. :100.000 Max. :3375.0 Max. :4.780
NA's :1151 NA's :1481 NA's :1222 NA's :1151
hdl_x0 a1c_x0 thb_x0 cho_x1
Min. : 15.0 Min. : 4.000 Min. : 5.30 Min. : 89.49
1st Qu.: 84.0 1st Qu.: 6.000 1st Qu.:11.90 1st Qu.:326.62
Median : 98.0 Median : 6.710 Median :13.50 Median :370.23
Mean :100.1 Mean : 6.583 Mean :13.51 Mean :370.68
3rd Qu.:114.0 3rd Qu.: 7.070 3rd Qu.:15.10 3rd Qu.:414.83
Max. :235.0 Max. :17.380 Max. :25.90 Max. :718.00
NA's :9235 NA's :4388 NA's :9235 NA's :1151
cyc_x1 trg_x1 a1c_x1 thb_x2
Min. :0.245 Min. : 49.4 Min. : 4.128 Min. : 5.527
1st Qu.:0.954 1st Qu.: 183.6 1st Qu.: 5.897 1st Qu.:13.117
Median :1.103 Median : 233.0 Median : 6.136 Median :14.627
Mean :1.165 Mean : 259.7 Mean : 6.231 Mean :14.716
3rd Qu.:1.294 3rd Qu.: 303.6 3rd Qu.: 6.430 3rd Qu.:16.248
Max. :4.894 Max. :3375.0 Max. :16.954 Max. :28.233
NA's :1151 NA's :1222 NA's :4388 NA's :9235
hdl_x2 cho_x2 crp_x2 cyc_x2
Min. : 17.32 Min. :100.9 Min. : 0.0000 Min. :0.2718
1st Qu.: 92.38 1st Qu.:360.4 1st Qu.: 0.5047 1st Qu.:1.0378
Median :107.39 Median :407.0 Median : 0.9762 Median :1.1965
Mean :110.21 Mean :406.5 Mean : 2.1292 Mean :1.2646
3rd Qu.:124.71 3rd Qu.:455.2 3rd Qu.: 1.9061 3rd Qu.:1.4027
Max. :270.21 Max. :747.4 Max. :110.9296 Max. :5.4303
NA's :9235 NA's :1151 NA's :1481 NA's :1151
[Link] 5/42
5/21/25, 6:13 AM Program Coba - Colab
trg_x2 a1c_x2 cho_x3 crp_x3
Min. : 54.77 Min. : 4.056 Min. :272.7 Min. : -0.04197
1st Qu.: 199.17 1st Qu.: 5.820 1st Qu.:421.6 1st Qu.: 1.30336
Median : 252.74 Median : 6.070 Median :448.4 Median : 1.89431
Mean : 281.62 Mean : 6.155 Mean :448.3 Mean : 3.32819
3rd Qu.: 328.69 3rd Qu.: 6.344 3rd Qu.:475.7 3rd Qu.: 3.05993
Max. :3741.33 Max. :16.656 Max. :640.5 Max. :139.20734
NA's :1222 NA's :4388 NA's :1151 NA's :1481
trg_x3 cyc_x3 hdl_x3 a1c_x3
Min. : 76.77 Min. :0.3844 Min. : 90.98 Min. : 3.869
1st Qu.: 246.79 1st Qu.:1.3678 1st Qu.:135.91 1st Qu.: 5.703
Median : 307.84 Median :1.5291 Median :146.59 Median : 5.948
Mean : 340.32 Mean :1.5898 Mean :147.82 Mean : 6.038
3rd Qu.: 393.79 3rd Qu.:1.7357 3rd Qu.:158.07 3rd Qu.: 6.234
Max. :4248.31 Max. :5.5996 Max. :246.78 Max. :16.524
NA's :1222 NA's :1151 NA's :9235 NA's :4388
thb_x3 cho_x4 crp_x4 trg_x4
Min. :10.30 Min. :118.3 Min. : 0.1447 Min. : 9.794
1st Qu.:15.35 1st Qu.:207.1 1st Qu.: 1.4901 1st Qu.: 147.380
Median :16.35 Median :223.1 Median : 2.0811 Median : 196.788
Mean :16.40 Mean :223.0 Mean : 3.5150 Mean : 223.070
3rd Qu.:17.40 3rd Qu.:239.4 3rd Qu.: 3.2467 3rd Qu.: 266.346
Max. :25.20 Max. :337.7 Max. :139.4010 Max. :3385.591
NA's :9235 NA's :1151 NA's :1481 NA's :1222
cyc_x4 hdl_x4 thb_x4 a1c_x4
Min. :0.5334 Min. : 37.87 Min. : 9.816 Min. : 3.869
1st Qu.:0.9078 1st Qu.: 62.10 1st Qu.:13.926 1st Qu.: 5.703
Median :0.9692 Median : 67.86 Median :14.738 Median : 5.948
Mean :0.9922 Mean : 68.52 Mean :14.785 Mean : 6.038
3rd Qu.:1.0478 3rd Qu.: 74.05 3rd Qu.:15.599 3rd Qu.: 6.234
Max. :2.5185 Max. :121.88 Max. :21.951 Max. :16.524
NA's :1151 NA's :9235 NA's :9235 NA's :4388
astar storage_cho storage_trg storage_cyc
Min. :0.0000 Min. : 982 Min. : 982 Min. : 982
1st Qu.:0.0000 1st Qu.:1005 1st Qu.:1005 1st Qu.:1005
Median :0.0000 Median :1034 Median :1034 Median :1034
Mean :0.3147 Mean :1028 Mean :1028 Mean :1028
3rd Qu.:1.0000 3rd Qu.:1048 3rd Qu.:1048 3rd Qu.:1048
Max. :1.0000 Max. :1068 Max. :1068 Max. :1068
NA's :2233 NA's :8001 NA's :8001 NA's :8001
cciw_dbs pred_eligible pred_consent pred_analyzed
Min. : 42.39 Min. :0.1475 Min. :0.2800 Min. :0.5555
1st Qu.: 600.43 1st Qu.:0.8276 1st Qu.:0.6967 1st Qu.:0.8191
Median : 1147.17 Median :0.9190 Median :0.7578 Median :0.8890
Mean : 5221.82 Mean :0.8828 Mean :0.7143 Mean :0.8674
3rd Qu.: 6116.77 3rd Qu.:0.9978 3rd Qu.:0.7947 3rd Qu.:0.9279
Max. :275961.54 Max. :0.9996 Max. :0.8507 Max. :0.9554
NA's :367 NA's :313 NA's :313 NA's :313

[Link] 6/42
5/21/25, 6:13 AM Program Coba - Colab

# Pilih variabel yang diinginkan


data_selected <- data %>% select(country, age_int, female, t_ship, t_dry, t_temp, t_open, t_

# Buat dataframe baru


data <- [Link](data_selected)

# Simpan dataframe ke file excel baru


write_xlsx(data, "/content/[Link]")
summary(data)

country age_int female t_ship


Min. :12.00 Min. : 50.00 Min. :0.0000 Min. : 1.000
1st Qu.:15.00 1st Qu.: 61.00 1st Qu.:0.0000 1st Qu.: 3.000
Median :19.00 Median : 67.00 Median :1.0000 Median : 5.000
Mean :21.38 Mean : 68.07 Mean :0.5679 Mean : 5.479
3rd Qu.:25.00 3rd Qu.: 75.00 3rd Qu.:1.0000 3rd Qu.: 6.000
Max. :35.00 Max. :101.00 Max. :1.0000 Max. :20.000

t_dry t_temp t_open t_desiccant


Min. : 5.00 Min. : 0.00 Min. :0.0000 Min. :0.00000
1st Qu.:13.00 1st Qu.: 7.00 1st Qu.:0.0000 1st Qu.:0.00000
Median :20.00 Median :14.00 Median :0.0000 Median :0.00000
Mean :20.69 Mean :13.99 Mean :0.1063 Mean :0.01809
3rd Qu.:27.00 3rd Qu.:20.00 3rd Qu.:0.0000 3rd Qu.:0.00000
Max. :40.00 Max. :35.00 Max. :1.0000 Max. :1.00000

t_sizeA cho_x4 crp_x4 trg_x4


Min. :0.5000 Min. :118.3 Min. : 0.1447 Min. : 9.794
1st Qu.:0.5000 1st Qu.:207.1 1st Qu.: 1.4901 1st Qu.: 147.380
Median :0.5000 Median :223.1 Median : 2.0811 Median : 196.788
Mean :0.7697 Mean :223.0 Mean : 3.5150 Mean : 223.070
3rd Qu.:1.0070 3rd Qu.:239.4 3rd Qu.: 3.2467 3rd Qu.: 266.346
Max. :1.5000 Max. :337.7 Max. :139.4010 Max. :3385.591
NA's :1151 NA's :1481 NA's :1222
cyc_x4 hdl_x4 thb_x4 a1c_x4
Min. :0.5334 Min. : 37.87 Min. : 9.816 Min. : 3.869
1st Qu.:0.9078 1st Qu.: 62.10 1st Qu.:13.926 1st Qu.: 5.703
Median :0.9692 Median : 67.86 Median :14.738 Median : 5.948
Mean :0.9922 Mean : 68.52 Mean :14.785 Mean : 6.038
3rd Qu.:1.0478 3rd Qu.: 74.05 3rd Qu.:15.599 3rd Qu.: 6.234
Max. :2.5185 Max. :121.88 Max. :21.951 Max. :16.524
NA's :1151 NA's :9235 NA's :9235 NA's :4388

# Menghapus baris dengan nilai NA pada variabel tertentu secara berurutan


data <- data %>%
filter(![Link](cho_x4)) %>%
filter(![Link](country), ![Link](age_int), ![Link](female), ![Link](t_ship), ![Link](t_dry), !i

filter(![Link](crp_x4)) %>%
filter(![Link](country), ![Link](age_int), ![Link](female), ![Link](t_ship), ![Link](t_dry), !i

filter(![Link](trg_x4)) %>%

[Link] 7/42
5/21/25, 6:13 AM Program Coba - Colab

filter(![Link](country), ![Link](age_int), ![Link](female), ![Link](t_ship), ![Link](t_dry), !i

filter(![Link](hdl_x4)) %>%
filter(![Link](country), ![Link](age_int), ![Link](female), ![Link](t_ship), ![Link](t_dry), !i

filter(![Link](a1c_x4)) %>%
filter(![Link](country), ![Link](age_int), ![Link](female), ![Link](t_ship), ![Link](t_dry), !i

filter(![Link](cyc_x4)) %>%
filter(![Link](country), ![Link](age_int), ![Link](female), ![Link](t_ship), ![Link](t_dry), !i

filter(![Link](thb_x4)) %>%
filter(![Link](country), ![Link](age_int), ![Link](female), ![Link](t_ship), ![Link](t_dry), !i

# Check for NA values in each variable of the dataframe


colSums([Link](data))
str(data)

# Save the updated data frame to a new Excel file


write_xlsx(data, "/content/[Link]")

country: 0 age_int: 0 female: 0 t_ship: 0 t_dry: 0 t_temp: 0 t_open:


0 t_desiccant: 0 t_sizeA: 0 cho_x4: 0 crp_x4: 0 trg_x4: 0 cyc_x4:
0 hdl_x4: 0 thb_x4: 0 a1c_x4: 0
'[Link]': 13882 obs. of 16 variables:
$ country : num 23 23 23 23 23 23 23 23 23 23 ...
$ age_int : num 60 52 54 86 59 54 62 61 79 71 ...
$ female : num 1 1 1 1 1 0 0 1 1 0 ...
$ t_ship : num 7 6 3 12 2 2 7 6 3 5 ...
$ t_dry : num 40 25 40 40 15 15 11 19 20 27 ...
$ t_temp : num 9 18 16 23 10 9 35 4 28 16 ...
$ t_open : num 0 0 0 0 0 0 0 0 0 0 ...
$ t_desiccant: num 0 0 0 0 0 0 0 0 0 0 ...
$ t_sizeA : num 1.5 0.5 0.72 1.02 0.5 ...
$ cho_x4 : num 260 213 214 228 267 ...
$ crp_x4 : num 2.072 1.894 2.013 0.915 5.259 ...
$ trg_x4 : num 142 162 212 161 152 ...
$ cyc_x4 : num 0.949 0.876 0.92 0.951 0.974 ...
$ hdl_x4 : num 73.3 61.2 67.2 91.3 67.8 ...
$ thb_x4 : num 15 16 15.3 14.7 15.3 ...
$ a1c x4 : num 6 01 5 89 5 44 6 32 5 05

keyboard_arrow_down Analisis Deskriptif


data$female <- factor(data$female, levels = c(0,1), labels = c("Female", "Male"))
data$t_open <- factor(data$t_open, levels = c(0,1), labels = c("Closed", "Opened"))
data$t_desiccant <- factor(data$t_desiccant, levels = c(0,1), labels = c("No", "Yes"))

[Link] 8/42
5/21/25, 6:13 AM Program Coba - Colab

# Cek struktur data untuk memastikan


str(data)

'[Link]': 13882 obs. of 16 variables:


$ country : num 23 23 23 23 23 23 23 23 23 23 ...
$ age_int : num 60 52 54 86 59 54 62 61 79 71 ...
$ female : Factor w/ 2 levels "Female","Male": 2 2 2 2 2 1 1 2 2 1 ...
$ t_ship : num 7 6 3 12 2 2 7 6 3 5 ...
$ t_dry : num 40 25 40 40 15 15 11 19 20 27 ...
$ t_temp : num 9 18 16 23 10 9 35 4 28 16 ...
$ t_open : Factor w/ 2 levels "Closed","Opened": 1 1 1 1 1 1 1 1 1 1 ...
$ t_desiccant: Factor w/ 2 levels "No","Yes": 1 1 1 1 1 1 1 1 1 1 ...
$ t_sizeA : num 1.5 0.5 0.72 1.02 0.5 ...
$ cho_x4 : num 260 213 214 228 267 ...
$ crp_x4 : num 2.072 1.894 2.013 0.915 5.259 ...
$ trg_x4 : num 142 162 212 161 152 ...
$ cyc_x4 : num 0.949 0.876 0.92 0.951 0.974 ...
$ hdl_x4 : num 73.3 61.2 67.2 91.3 67.8 ...
$ thb_x4 : num 15 16 15.3 14.7 15.3 ...
$ a1c_x4 : num 6.01 5.89 5.44 6.32 5.05 ...

# Daftar prediktor dan biomarker


prediktor <- c("age_int", "female", "t_ship", "t_dry", "t_temp", "t_open", "t_desiccant", "t
biomarkers <- c("cho_x4", "crp_x4", "trg_x4", "cyc_x4", "hdl_x4", "thb_x4", "a1c_x4")

# Konversi hanya variabel numerik dalam daftar prediktor


for (var in prediktor) {
if (![Link](data[[var]])) {
data[[var]] <- [Link](data[[var]])
}
}

# periksa struktur data setelah konversi


str(data)

'[Link]': 13882 obs. of 16 variables:


$ country : num 23 23 23 23 23 23 23 23 23 23 ...
$ age_int : num 60 52 54 86 59 54 62 61 79 71 ...
$ female : Factor w/ 2 levels "Female","Male": 2 2 2 2 2 1 1 2 2 1 ...
$ t_ship : num 7 6 3 12 2 2 7 6 3 5 ...
$ t_dry : num 40 25 40 40 15 15 11 19 20 27 ...
$ t_temp : num 9 18 16 23 10 9 35 4 28 16 ...
$ t_open : Factor w/ 2 levels "Closed","Opened": 1 1 1 1 1 1 1 1 1 1 ...
$ t_desiccant: Factor w/ 2 levels "No","Yes": 1 1 1 1 1 1 1 1 1 1 ...
$ t_sizeA : num 1.5 0.5 0.72 1.02 0.5 ...
$ cho_x4 : num 260 213 214 228 267 ...
$ crp_x4 : num 2.072 1.894 2.013 0.915 5.259 ...
$ trg_x4 : num 142 162 212 161 152 ...
$ cyc_x4 : num 0.949 0.876 0.92 0.951 0.974 ...
$ hdl_x4 : num 73.3 61.2 67.2 91.3 67.8 ...
$ thb_x4 : num 15 16 15.3 14.7 15.3 ...
$ a1c_x4 : num 6.01 5.89 5.44 6.32 5.05 ...

[Link] 9/42
5/21/25, 6:13 AM Program Coba - Colab

# Daftar variabel
prediktor <- c("age_int", "female", "t_ship", "t_dry", "t_temp", "t_open", "t_desiccant", "t
biomarkers <- c("cho_x4", "crp_x4", "trg_x4", "cyc_x4", "hdl_x4", "thb_x4", "a1c_x4")
random <- c("country") # misalnya country sebagai efek acak

# Fungsi deskriptif
calculate_descriptive_stats <- function(data, variables, type) {
stats_list <- list()

for (var in variables) {


if ([Link](data[[var]])) {
stats <- [Link](
Variable = var,
Type = type,
Count = sum(![Link](data[[var]])),
Percentage = 100,
Mean = mean(data[[var]], [Link] = TRUE),
SD = sd(data[[var]], [Link] = TRUE),
Variance = var(data[[var]], [Link] = TRUE),
Range = max(data[[var]], [Link] = TRUE) - min(data[[var]], [Link] = TRUE),
Category = NA,
Category_Count = NA,
Category_Percentage = NA,
stringsAsFactors = FALSE
)
} else if ([Link](data[[var]]) || [Link](data[[var]])) {
counts <- table(data[[var]])
percentages <- [Link](counts) * 100
stats <- [Link](
Variable = rep(var, length(counts)),
Type = rep(type, length(counts)),
Count = sum(counts),
Percentage = 100,
Mean = NA,
SD = NA,
Variance = NA,
Range = NA,
Category = names(counts),
Category_Count = [Link](counts),
Category_Percentage = round([Link](percentages), 2),
stringsAsFactors = FALSE
)
} else {
stats <- [Link](
Variable = var,
Type = type,
Count = length(data[[var]]),
Percentage = 100,
Mean = NA,
SD = NA,
Variance = NA,

[Link] 10/42
5/21/25, 6:13 AM Program Coba - Colab

Range = NA,
Category = NA,
Category_Count = NA,
Category_Percentage = NA,
stringsAsFactors = FALSE
)
}

stats_list[[var]] <- stats


}

bind_rows(stats_list)
}

# Hitung statistik deskriptif untuk ketiga kelompok


prediktor_stats <- calculate_descriptive_stats(data, prediktor, "Prediktor")
biomarkers_stats <- calculate_descriptive_stats(data, biomarkers, "Biomarker")
random_stats <- calculate_descriptive_stats(data, random, "Random")

# Gabungkan hasil ke satu tabel


descriptive_stats_table <- bind_rows(prediktor_stats, biomarkers_stats, random_stats)

# Tampilkan hasil
print(descriptive_stats_table)

Variable Type Count Percentage Mean SD Variance


1 age_int Prediktor 13882 100 67.7828123 9.4893772 9.004828e+01
2 female Prediktor 13882 100 NA NA NA
3 female Prediktor 13882 100 NA NA NA
4 t_ship Prediktor 13882 100 4.9904192 3.3836813 1.144930e+01
5 t_dry Prediktor 13882 100 21.0780147 9.5465618 9.113684e+01
6 t_temp Prediktor 13882 100 13.9793452 7.7529561 6.010833e+01
7 t_open Prediktor 13882 100 NA NA NA
8 t_open Prediktor 13882 100 NA NA NA
9 t_desiccant Prediktor 13882 100 NA NA NA
10 t_desiccant Prediktor 13882 100 NA NA NA
11 t_sizeA Prediktor 13882 100 0.7790042 0.3197267 1.022252e-01
12 cho_x4 Biomarker 13882 100 224.9731985 24.8153302 6.158006e+02
13 crp_x4 Biomarker 13882 100 3.6182132 6.8248742 4.657891e+01
14 trg_x4 Biomarker 13882 100 220.6127564 119.0429960 1.417123e+04
15 cyc_x4 Biomarker 13882 100 0.9942741 0.1368738 1.873445e-02
16 hdl_x4 Biomarker 13882 100 68.5763746 9.1119003 8.302673e+01
17 thb_x4 Biomarker 13882 100 14.8038851 1.2774428 1.631860e+00
18 a1c_x4 Biomarker 13882 100 6.0117084 0.5443215 2.962859e-01
19 country Random 13882 100 21.9724824 8.3947931 7.047255e+01
Range Category Category_Count Category_Percentage
1 51.000000 <NA> NA NA
2 NA Female 5796 41.75
3 NA Male 8086 58.25
4 19.000000 <NA> NA NA
5 35.000000 <NA> NA NA
6 35.000000 <NA> NA NA
7 NA Closed 12585 90.66
8 NA Opened 1297 9.34
[Link] 11/42
5/21/25, 6:13 AM Program Coba - Colab
9 NA No 13665 98.44
10 NA Yes 217 1.56
11 1.000000 <NA> NA NA
12 200.218842 <NA> NA NA
13 139.256346 <NA> NA NA
14 2818.990088 <NA> NA NA
15 1.853995 <NA> NA NA
16 84.011047 <NA> NA NA
17 12.134053 <NA> NA NA
18 10.902502 <NA> NA NA
19 23.000000 <NA> NA NA

# Simpan dataframe ke file excel baru


write_xlsx(descriptive_stats_table, "/content/deskripsi [Link]")

# Plot Histogram untuk Prediktor Numerik


numeric_prediktor <- prediktor[!sapply(data[prediktor], [Link])]

plot_list_pred <- lapply(numeric_prediktor, function(var) {


ggplot(data, aes_string(x = var)) +
geom_histogram(color = "black", fill = "skyblue", bins = 30) +
ggtitle(paste("Histogram:", var)) +
theme_minimal()
})

[Link](grobs = plot_list_pred, ncol = 2)

[Link] 12/42
5/21/25, 6:13 AM Program Coba - Colab

Warning message:
“`aes_string()` was deprecated in ggplot2 3.0.0.
ℹ Please use tidy evaluation idioms with `aes()`.
ℹ See also `vignette("ggplot2-in-packages")` for more information.”

# Plot Barplot untuk Prediktor Kategorik


categorical_prediktor <- prediktor[sapply(data[prediktor], [Link])]

plot_list_cat <- lapply(categorical_prediktor, function(var) {


ggplot(data, aes_string(x = var)) +
geom_bar(color = "black", fill = "lightgreen") +
ggtitle(paste("Barplot:", var)) +
theme_minimal()
})

[Link](grobs = plot_list_cat, ncol = 2)

[Link] 13/42
5/21/25, 6:13 AM Program Coba - Colab

# Plot Histogram untuk Semua Biomarker (semua diasumsikan numerik)


plot_list_bio <- lapply(biomarkers, function(var) {
ggplot(data, aes_string(x = var)) +
geom_histogram(color = "black", fill = "lightcoral", bins = 30) +
ggtitle(paste("Histogram Biomarker:", var)) +
theme_minimal()
})

[Link](grobs = plot_list_bio, ncol = 2)

[Link] 14/42
5/21/25, 6:13 AM Program Coba - Colab

# Plot Barplot untuk Random Effect (country)


if ("country" %in% colnames(data)) {
plot_country <- ggplot(data, aes(x = country)) +
geom_bar(color = "black", fill = "plum") +
ggtitle("Barplot: Country (Random Effect)") +
theme_minimal()

print(plot_country)
}

[Link] 15/42
5/21/25, 6:13 AM Program Coba - Colab

keyboard_arrow_down Pemrosesan dan Pengujian Data


str(data)

'[Link]': 13882 obs. of 16 variables:


$ country : num 23 23 23 23 23 23 23 23 23 23 ...
$ age_int : num 60 52 54 86 59 54 62 61 79 71 ...
$ female : Factor w/ 2 levels "Female","Male": 2 2 2 2 2 1 1 2 2 1 ...
$ t_ship : num 7 6 3 12 2 2 7 6 3 5 ...
$ t_dry : num 40 25 40 40 15 15 11 19 20 27 ...
$ t_temp : num 9 18 16 23 10 9 35 4 28 16 ...
$ t_open : Factor w/ 2 levels "Closed","Opened": 1 1 1 1 1 1 1 1 1 1 ...
$ t_desiccant: Factor w/ 2 levels "No","Yes": 1 1 1 1 1 1 1 1 1 1 ...
$ t_sizeA : num 1.5 0.5 0.72 1.02 0.5 ...
$ cho_x4 : num 260 213 214 228 267 ...
$ crp_x4 : num 2.072 1.894 2.013 0.915 5.259 ...
$ trg_x4 : num 142 162 212 161 152 ...
$ cyc_x4 : num 0.949 0.876 0.92 0.951 0.974 ...
$ hdl_x4 : num 73.3 61.2 67.2 91.3 67.8 ...
$ thb_x4 : num 15 16 15.3 14.7 15.3 ...
$ a1c_x4 : num 6.01 5.89 5.44 6.32 5.05 ...

keyboard_arrow_down Cek Outlier


[Link] 16/42
5/21/25, 6:13 AM Program Coba - Colab

# Fungsi untuk mendeteksi outlier menggunakan metode IQR


detect_outliers <- function(x) {
q1 <- quantile(x, 0.25)
q3 <- quantile(x, 0.75)
iqr <- q3 - q1
lower_bound <- q1 - 1.5 * iqr
upper_bound <- q3 + 1.5 * iqr
outliers <- x[x < lower_bound | x > upper_bound]
return(outliers)
}

# Gabungkan variabel prediktor, biomarker, dan random


all_variables <- c(prediktor, biomarkers, random)

# Loop setiap variabel


for (var in all_variables) {
if (var %in% names(data)) {
if ([Link](data[[var]])) {
# Deteksi outlier
outliers <- detect_outliers(data[[var]])

# Tampilkan informasi
if (length(outliers) > 0) {
cat("Variabel:", var, "\n")
cat("Jumlah Outlier:", length(outliers), "\n")
cat("Nilai Outlier (max 10):", head(outliers, 10), "\n\n") # tampilkan hanya 10 ter
} else {
cat("Variabel:", var, "- Tidak ada outlier yang terdeteksi.\n\n")
}
} else {
cat("Variabel:", var, "- Bukan variabel numerik, outlier tidak diperiksa.\n\n")
}
} else {
cat("❌ Variabel", var, "tidak ditemukan dalam data.\n\n")
}
}

Variabel: age_int
Jumlah Outlier: 5
Nilai Outlier (max 10): 100 99 101 98 101

Variabel: female - Bukan variabel numerik, outlier tidak diperiksa.

Variabel: t_ship
Jumlah Outlier: 839
Nilai Outlier (max 10): 12 14 11 12 20 18 11 19 12 20

Variabel: t_dry - Tidak ada outlier yang terdeteksi.

Variabel: t_temp - Tidak ada outlier yang terdeteksi.

Variabel: t_open - Bukan variabel numerik, outlier tidak diperiksa.

[Link] 17/42
5/21/25, 6:13 AM Program Coba - Colab
Variabel: t_desiccant - Bukan variabel numerik, outlier tidak diperiksa.

Variabel: t_sizeA - Tidak ada outlier yang terdeteksi.

Variabel: cho_x4
Jumlah Outlier: 166
Nilai Outlier (max 10): 320.4723 153.4477 147.4082 152.2518 295.4139 160.5671 154.1935 2

Variabel: crp_x4
Jumlah Outlier: 1252
Nilai Outlier (max 10): 6.764473 10.18935 8.86691 40.7126 6.646085 52.85063 6.995098 11.

Variabel: trg_x4
Jumlah Outlier: 521
Nilai Outlier (max 10): 447.2552 480.6925 455.5401 454.7365 590.0161 518.3888 639.1489 4

Variabel: cyc_x4
Jumlah Outlier: 597
Nilai Outlier (max 10): 1.366288 1.362904 1.360616 1.313044 1.281766 1.293971 1.357431 1

Variabel: hdl_x4
Jumlah Outlier: 208
Nilai Outlier (max 10): 96.40223 100.3546 96.93877 95.389 96.59362 91.95796 94.15067 98.

Variabel: thb_x4
Jumlah Outlier: 155
Nilai Outlier (max 10): 18.22782 18.66237 18.43673 18.42528 19.50937 18.98803 10.83571 1

Variabel: a1c_x4
Jumlah Outlier: 741
Nilai Outlier (max 10): 7.125789 8.445045 7.239744 7.255232 7.238619 7.583644 7.111097 7

Variabel: country - Tidak ada outlier yang terdeteksi.

# Gabungkan variabel prediktor dan biomarker


all_numeric_vars <- c(prediktor, biomarkers)

# Inisialisasi list untuk boxplot


boxplot_list <- list()

# Loop untuk membuat boxplot hanya untuk variabel numerik yang tersedia
for (var in all_numeric_vars) {
if (var %in% names(data)) {
if ([Link](data[[var]])) {
p <- ggplot(data, aes_string(y = var)) +
geom_boxplot(fill = "lightblue", color = "black") +
ggtitle(paste("Boxplot:", var)) +
theme_minimal()
boxplot_list[[var]] <- p
} else {
cat("Variabel:", var, "- Bukan numerik, boxplot tidak dibuat.\n")

[Link] 18/42
5/21/25, 6:13 AM Program Coba - Colab

}
} else {
cat("❌ Variabel", var, "tidak ditemukan dalam data.\n")
}
}

# Menampilkan semua boxplot dalam grid


n_plots <- length(boxplot_list)
if (n_plots > 0) {
[Link](grobs = boxplot_list, ncol = 3)
} else {
message("\n❌ Tidak ada variabel numerik untuk ditampilkan dalam boxplot.")
}

Variabel: female - Bukan numerik, boxplot tidak dibuat.


Variabel: t_open - Bukan numerik, boxplot tidak dibuat.
Variabel: t_desiccant - Bukan numerik, boxplot tidak dibuat.

# Fungsi Winsorizing untuk variabel numerik


winsorize_outliers <- function(x, lower_percentile = 0.05, upper_percentile = 0.95) {
if ([Link](x)) {
lower_bound <- quantile(x, lower_percentile, [Link] = TRUE)
upper_bound <- quantile(x, upper_percentile, [Link] = TRUE)
x[x < lower_bound] <- lower_bound
x[x > upper_bound] <- upper_bound
}
return(x)
}

[Link] 19/42
5/21/25, 6:13 AM Program Coba - Colab

# Gabungkan variabel prediktor dan biomarker (exclude random karena bisa faktor)
vars_to_winsorize <- c(prediktor, biomarkers)

# Terapkan winsorizing hanya untuk variabel numerik yang valid


for (var in vars_to_winsorize) {
if (var %in% names(data)) {
if ([Link](data[[var]])) {
cat("✅ Melakukan Winsorizing untuk variabel:", var, "\n")
data[[var]] <- winsorize_outliers(data[[var]])
} else {
cat("⏭️ Variabel:", var, "- Bukan numerik, dilewati.\n")
}
} else {
cat("❌ Variabel", var, "tidak ditemukan dalam data, dilewati.\n")
}
}

✅ Melakukan Winsorizing untuk variabel: age_int


⏭️ Variabel: female - Bukan numerik, dilewati.
✅ Melakukan Winsorizing untuk variabel: t_ship
✅ Melakukan Winsorizing untuk variabel: t_dry
✅ Melakukan Winsorizing untuk variabel: t_temp
⏭️ Variabel: t_open - Bukan numerik, dilewati.
⏭️ Variabel: t_desiccant - Bukan numerik, dilewati.
✅ Melakukan Winsorizing untuk variabel: t_sizeA
✅ Melakukan Winsorizing untuk variabel: cho_x4
✅ Melakukan Winsorizing untuk variabel: crp_x4
✅ Melakukan Winsorizing untuk variabel: trg_x4
✅ Melakukan Winsorizing untuk variabel: cyc_x4
✅ Melakukan Winsorizing untuk variabel: hdl_x4
✅ Melakukan Winsorizing untuk variabel: thb_x4
✅ Melakukan Winsorizing untuk variabel: a1c_x4

# Output hasil pemeriksaan outlier setelah penanganan


cat("\n--- Hasil Pemeriksaan Outlier Setelah Penanganan (Winsorizing) ---\n\n")

# Gabungkan variabel prediktor, biomarker, dan random


all_variables_after_handling <- c(prediktor, biomarkers, random)

# Fungsi deteksi outlier (pakai IQR)


detect_outliers <- function(x) {
q1 <- quantile(x, 0.25, [Link] = TRUE)
q3 <- quantile(x, 0.75, [Link] = TRUE)
iqr <- q3 - q1
lower_bound <- q1 - 1.5 * iqr
upper_bound <- q3 + 1.5 * iqr
outliers <- x[x < lower_bound | x > upper_bound]
return(outliers)
}

# Loop untuk evaluasi hasil Winsorizing


for (var in all_variables_after_handling) {
[Link] 20/42
5/21/25, 6:13 AM Program Coba - Colab

if (var %in% names(data)) {


if ([Link](data[[var]])) {
# Deteksi outlier setelah penanganan
outliers_after <- detect_outliers(data[[var]])

if (length(outliers_after) > 0) {
cat("⚠️ Variabel:", var, "\n")
cat("Jumlah Outlier yang masih terdeteksi:", length(outliers_after), "\n\n")
} else {
cat("✅ Variabel:", var, "- Tidak ada outlier setelah penanganan.\n\n")
}
} else {
cat("⏭️ Variabel:", var, "- Bukan numerik, tidak diperiksa.\n\n")
}
} else {
cat("❌ Variabel", var, "tidak ditemukan dalam data.\n\n")
}
}

--- Hasil Pemeriksaan Outlier Setelah Penanganan (Winsorizing) ---

✅ Variabel: age_int - Tidak ada outlier setelah penanganan.

⏭️ Variabel: female - Bukan numerik, tidak diperiksa.

⚠️ Variabel: t_ship
Jumlah Outlier yang masih terdeteksi: 839

✅ Variabel: t_dry - Tidak ada outlier setelah penanganan.

✅ Variabel: t_temp - Tidak ada outlier setelah penanganan.

⏭️ Variabel: t_open - Bukan numerik, tidak diperiksa.

⏭️ Variabel: t_desiccant - Bukan numerik, tidak diperiksa.

✅ Variabel: t_sizeA - Tidak ada outlier setelah penanganan.

✅ Variabel: cho_x4 - Tidak ada outlier setelah penanganan.

⚠️ Variabel: crp_x4
Jumlah Outlier yang masih terdeteksi: 1252

✅ Variabel: trg_x4 - Tidak ada outlier setelah penanganan.

✅ Variabel: cyc_x4 - Tidak ada outlier setelah penanganan.

✅ Variabel: hdl_x4 - Tidak ada outlier setelah penanganan.

✅ Variabel: thb_x4 - Tidak ada outlier setelah penanganan.

⚠️ Variabel: a1c_x4

[Link] 21/42
5/21/25, 6:13 AM Program Coba - Colab
Jumlah Outlier yang masih terdeteksi: 713

✅ Variabel: country - Tidak ada outlier setelah penanganan.

boxplot_list_winsorized <- list()

for (var in vars_to_winsorize) {


if (var %in% names(data)) {
if ([Link](data[[var]])) {
p <- ggplot(data, aes_string(y = var)) +
geom_boxplot(fill = "lightgreen", color = "black") +
ggtitle(paste("Boxplot Setelah Winsorizing:", var)) +
theme_minimal()
boxplot_list_winsorized[[var]] <- p
} else {
cat("⏭️ Variabel:", var, "- Bukan numerik, dilewati dari boxplot.\n")
}
} else {
cat("❌ Variabel", var, "tidak ditemukan dalam data.\n")
}
}

# Menampilkan semua boxplot dalam grid


n_plots_winsorized <- length(boxplot_list_winsorized)
if (n_plots_winsorized > 0) {
cat("\n📊 Menampilkan boxplot setelah penanganan outlier (Winsorizing)...\n")
[Link](grobs = boxplot_list_winsorized, ncol = 3) # Ubah ncol sesuai jumlah ideal p
} else {
message("\n⚠️ Tidak ada boxplot yang dihasilkan karena tidak ada variabel numerik valid."
}

[Link] 22/42
5/21/25, 6:13 AM Program Coba - Colab

⏭️ Variabel: female - Bukan numerik, dilewati dari boxplot.


⏭️ Variabel: t_open - Bukan numerik, dilewati dari boxplot.
⏭️ Variabel: t_desiccant - Bukan numerik, dilewati dari boxplot.

📊 Menampilkan boxplot setelah penanganan outlier (Winsorizing)...

# Transformasi log1p pada variabel numerik yang masih bermasalah


# Pastikan hanya dilakukan pada variabel yang tersedia dan numerik
vars_log1p <- c("t_ship", "crp_x4", "a1c_x4")

for (var in vars_log1p) {


if (var %in% names(data)) {
if ([Link](data[[var]])) {
cat("🔁 Transformasi log1p untuk:", var, "\n")
data[[var]] <- log1p(data[[var]])
} else {
cat("⏭️ Variabel:", var, "- Bukan numerik, dilewati dari log1p.\n")
}
} else {
cat("❌ Variabel", var, "tidak ditemukan dalam data.\n")
}
}

# Fungsi deteksi outlier menggunakan metode IQR


detect_outliers <- function(x) {
Q1 <- quantile(x, 0.25, [Link] = TRUE)
Q3 <- quantile(x, 0.75, [Link] = TRUE)
IQR <- Q3 - Q1

[Link] 23/42
5/21/25, 6:13 AM Program Coba - Colab

lower_bound <- Q1 - 1.5 * IQR


upper_bound <- Q3 + 1.5 * IQR
which(x < lower_bound | x > upper_bound)
}

# Output hasil pemeriksaan outlier setelah semua tahapan


cat("\n--- Hasil Pemeriksaan Outlier Setelah Winsorizing + log1p ---\n\n")

# Periksa kembali semua variabel


all_variables_after_handling <- c(prediktor, biomarkers, random)

for (var in all_variables_after_handling) {


if (var %in% names(data)) {
if ([Link](data[[var]])) {
outliers_after <- detect_outliers(data[[var]])

if (length(outliers_after) > 0) {
cat("⚠️ Variabel:", var, "\n")
cat("Jumlah Outlier yang masih terdeteksi:", length(outliers_after), "\n\n")
} else {
cat("✅ Variabel:", var, "- Tidak ada outlier yang terdeteksi setelah semua penanga
}
} else {
cat("⏭️ Variabel:", var, "- Bukan numerik, tidak diperiksa.\n\n")
}
} else {
cat("❌ Variabel", var, "tidak ditemukan dalam data.\n\n")
}
}

🔁 Transformasi log1p untuk: t_ship


🔁 Transformasi log1p untuk: crp_x4
🔁 Transformasi log1p untuk: a1c_x4

--- Hasil Pemeriksaan Outlier Setelah Winsorizing + log1p ---

✅ Variabel: age_int - Tidak ada outlier yang terdeteksi setelah semua penanganan.

⏭️ Variabel: female - Bukan numerik, tidak diperiksa.

✅ Variabel: t_ship - Tidak ada outlier yang terdeteksi setelah semua penanganan.

✅ Variabel: t_dry - Tidak ada outlier yang terdeteksi setelah semua penanganan.

✅ Variabel: t_temp - Tidak ada outlier yang terdeteksi setelah semua penanganan.

⏭️ Variabel: t_open - Bukan numerik, tidak diperiksa.

⏭️ Variabel: t_desiccant - Bukan numerik, tidak diperiksa.

✅ Variabel: t_sizeA - Tidak ada outlier yang terdeteksi setelah semua penanganan.

✅ Variabel: cho_x4 - Tidak ada outlier yang terdeteksi setelah semua penanganan.

[Link] 24/42
5/21/25, 6:13 AM Program Coba - Colab

⚠️ Variabel: crp_x4
Jumlah Outlier yang masih terdeteksi: 707

✅ Variabel: trg_x4 - Tidak ada outlier yang terdeteksi setelah semua penanganan.

✅ Variabel: cyc_x4 - Tidak ada outlier yang terdeteksi setelah semua penanganan.

✅ Variabel: hdl_x4 - Tidak ada outlier yang terdeteksi setelah semua penanganan.

✅ Variabel: thb_x4 - Tidak ada outlier yang terdeteksi setelah semua penanganan.

✅ Variabel: a1c_x4 - Tidak ada outlier yang terdeteksi setelah semua penanganan.

✅ Variabel: country - Tidak ada outlier yang terdeteksi setelah semua penanganan.

# Winsorizing berbasis z-score untuk variabel yang masih mengandung outlier setelah log1p
winsorize_z <- function(x, z_cut = 3) {
if ([Link](x)) {
z <- scale(x)
x[z > z_cut] <- mean(x, [Link] = TRUE) + z_cut * sd(x, [Link] = TRUE)
x[z < -z_cut] <- mean(x, [Link] = TRUE) - z_cut * sd(x, [Link] = TRUE)
}
return(x)
}

# Variabel yang ingin dilakukan z-winsorizing


vars_z_winsor <- c("crp_x4")

# Terapkan winsorizing berbasis z-score


for (var in vars_z_winsor) {
if (var %in% names(data)) {
if ([Link](data[[var]])) {
cat("🔁 Winsorizing z-score untuk:", var, "\n")
data[[var]] <- winsorize_z(data[[var]])
} else {
cat("⏭️ Variabel:", var, "- Bukan numerik, dilewati dari z-winsorizing.\n")
}
} else {
cat("❌ Variabel", var, "tidak ditemukan dalam data.\n")
}
}

# Fungsi deteksi outlier menggunakan metode IQR


detect_outliers <- function(x) {
Q1 <- quantile(x, 0.25, [Link] = TRUE)
Q3 <- quantile(x, 0.75, [Link] = TRUE)
IQR <- Q3 - Q1
lower_bound <- Q1 - 1.5 * IQR
upper_bound <- Q3 + 1.5 * IQR
which(x < lower_bound | x > upper_bound)
[Link] 25/42
5/21/25, 6:13 AM Program Coba - Colab

# Output hasil pemeriksaan outlier setelah seluruh penanganan


cat("\n--- Hasil Pemeriksaan Outlier Setelah Winsorizing + log1p + Z-Winsorizing ---\n\n")

# Gabungkan semua variabel yang akan diperiksa


all_variables_after_handling <- c(prediktor, biomarkers, random)

# Loop untuk memeriksa kembali outlier


for (var in all_variables_after_handling) {
if (var %in% names(data)) {
if ([Link](data[[var]])) {
outliers_after <- detect_outliers(data[[var]])

if (length(outliers_after) > 0) {
cat("⚠️ Variabel:", var, "\n")
cat("Jumlah Outlier yang masih terdeteksi:", length(outliers_after), "\n\n")
} else {
cat("✅ Variabel:", var, "- Tidak ada outlier yang terdeteksi setelah seluruh penang
}
} else {
cat("⏭️ Variabel:", var, "- Bukan numerik, tidak diperiksa.\n\n")
}
} else {
cat("❌ Variabel", var, "tidak ditemukan dalam data.\n\n")
}
}

🔁 Winsorizing z-score untuk: crp_x4

--- Hasil Pemeriksaan Outlier Setelah Winsorizing + log1p + Z-Winsorizing ---

✅ Variabel: age_int - Tidak ada outlier yang terdeteksi setelah seluruh penanganan.

⏭️ Variabel: female - Bukan numerik, tidak diperiksa.

✅ Variabel: t_ship - Tidak ada outlier yang terdeteksi setelah seluruh penanganan.

✅ Variabel: t_dry - Tidak ada outlier yang terdeteksi setelah seluruh penanganan.

✅ Variabel: t_temp - Tidak ada outlier yang terdeteksi setelah seluruh penanganan.

⏭️ Variabel: t_open - Bukan numerik, tidak diperiksa.

⏭️ Variabel: t_desiccant - Bukan numerik, tidak diperiksa.

✅ Variabel: t_sizeA - Tidak ada outlier yang terdeteksi setelah seluruh penanganan.

✅ Variabel: cho_x4 - Tidak ada outlier yang terdeteksi setelah seluruh penanganan.

⚠️ Variabel: crp_x4
Jumlah Outlier yang masih terdeteksi: 707

[Link] 26/42
5/21/25, 6:13 AM Program Coba - Colab

✅ Variabel: trg_x4 - Tidak ada outlier yang terdeteksi setelah seluruh penanganan.

✅ Variabel: cyc_x4 - Tidak ada outlier yang terdeteksi setelah seluruh penanganan.

✅ Variabel: hdl_x4 - Tidak ada outlier yang terdeteksi setelah seluruh penanganan.

✅ Variabel: thb_x4 - Tidak ada outlier yang terdeteksi setelah seluruh penanganan.

✅ Variabel: a1c_x4 - Tidak ada outlier yang terdeteksi setelah seluruh penanganan.

✅ Variabel: country - Tidak ada outlier yang terdeteksi setelah seluruh penanganan.

"Setelah dilakukan beberapa tahapan penanganan outlier, termasuk winsorizing, transformasi


logaritmik (log1p), dan winsorizing ulang, sebagian besar variabel telah bebas dari outlier
berdasarkan metode IQR. Namun, masih terdapat sisa outlier pada variabel crp_x4. Hal ini dapat
dimaklumi, mengingat metode IQR cenderung konservatif dalam mendeteksi nilai ekstrem, dan
dalam konteks data biomarker, nilai ekstrem tersebut belum tentu merupakan kesalahan atau
noise, melainkan dapat mencerminkan variasi biologis yang sah. Oleh karena itu, penanganan
dianggap cukup, dan proses selanjutnya dapat dilanjutkan dengan uji distribusi maupun
pemodelan statistik."

keyboard_arrow_down Distribusi Variabel


# Pemeriksaan Distribusi Setelah Seluruh Penanganan Outlier dan Transformasi
# Pilih ulang variabel numerik yang valid
# Sesuai struktur: prediktor numerik (exclude faktor), dan seluruh biomarker
numeric_vars_for_dist <- c("age_int", "t_ship", "t_dry", "t_temp", "t_sizeA",
"cho_x4", "crp_x4", "trg_x4", "cyc_x4", "hdl_x4", "thb_x4", "a1c_

# Fungsi pengecekan distribusi (AD + KS + Visual)


check_distribution <- function(data, variable) {
if ([Link](data[[variable]])) {
cat("🔍 Pemeriksaan Distribusi untuk Variabel:", variable, "\n")

# Anderson-Darling Test
ad_result <- [Link](data[[variable]])
cat("📊 Anderson-Darling Test:\n")
print(ad_result)

# Kolmogorov-Smirnov Test (asumsi normal)


ks_result <- [Link](data[[variable]], "pnorm",
mean(data[[variable]], [Link] = TRUE),
sd(data[[variable]], [Link] = TRUE))
cat("\n📊 Kolmogorov-Smirnov Test:\n")
print(ks_result)
[Link] 27/42
5/21/25, 6:13 AM Program Coba - Colab

# Histogram dengan kurva normal


hist_plot <- ggplot(data, aes_string(x = variable)) +
geom_histogram(aes(y = after_stat(density)), fill = "lightblue", color = "black", bins
stat_function(fun = dnorm, args = list(mean = mean(data[[variable]], [Link] = TRUE),
sd = sd(data[[variable]], [Link] = TRUE)),
color = "red", size = 1) +
ggtitle(paste("Histogram + Kurva Normal:", variable)) +
theme_minimal()

# Density plot
density_plot <- ggplot(data, aes_string(x = variable)) +
geom_density(fill = "skyblue", alpha = 0.7) +
stat_function(fun = dnorm, args = list(mean = mean(data[[variable]], [Link] = TRUE),
sd = sd(data[[variable]], [Link] = TRUE)),
color = "red", size = 1) +
ggtitle(paste("Density Plot:", variable)) +
theme_minimal()

# Tampilkan grafik
print(hist_plot)
print(density_plot)

# Interpretasi hasil uji distribusi


if (ad_result$[Link] < 0.05 || ks_result$[Link] < 0.05) {
cat("❗ Distribusi berbeda signifikan dari normal (p < 0.05)\n")
cat("➡️ Disarankan pendekatan non-parametrik, transformasi tambahan, atau model robust
} else {
cat("✅ Distribusi mendekati normal (p >= 0.05)\n")
}
cat("----------------------------------------------------\n\n")
} else {
cat("⏭️ Variabel:", variable, "- Bukan numerik, dilewati.\n\n")
}
}

# Jalankan pemeriksaan distribusi untuk semua variabel numerik


for (var in numeric_vars_for_dist) {
check_distribution(data, var)
}

[Link] 28/42
5/21/25, 6:13 AM Program Coba - Colab

🔍 Pemeriksaan Distribusi untuk Variabel: age_int


📊 Anderson-Darling Test:

Anderson-Darling normality test

data: data[[variable]]
A = 129.9, p-value < 2.2e-16

Warning message in [Link](data[[variable]], "pnorm", mean(data[[variable]], :


“ties should not be present for the one-sample Kolmogorov-Smirnov test”

📊 Kolmogorov-Smirnov Test:

Asymptotic one-sample Kolmogorov-Smirnov test

data: data[[variable]]
D = 0.070679, p-value < 2.2e-16
alternative hypothesis: two-sided

Warning message:
“Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.”

❗ Distribusi berbeda signifikan dari normal (p < 0.05)


➡️ Disarankan pendekatan non-parametrik, transformasi tambahan, atau model robust (GAM/
----------------------------------------------------

🔍 Pemeriksaan Distribusi untuk Variabel: t_ship


📊 Anderson-Darling Test:

Anderson-Darling normality test

data: data[[variable]]
[Link] 29/42
5/21/25, 6:13 AM Program Coba - Colab

A = 159.49, p-value < 2.2e-16

Warning message in [Link](data[[variable]], "pnorm", mean(data[[variable]], :


“ties should not be present for the one-sample Kolmogorov-Smirnov test”

📊 Kolmogorov-Smirnov Test:

Asymptotic one-sample Kolmogorov-Smirnov test

data: data[[variable]]
D = 0.11042, p-value < 2.2e-16
alternative hypothesis: two-sided

[Link] 30/42
5/21/25, 6:13 AM Program Coba - Colab

❗ Distribusi berbeda signifikan dari normal (p < 0.05)


➡️ Disarankan pendekatan non-parametrik, transformasi tambahan, atau model robust (GAM/
----------------------------------------------------

🔍 Pemeriksaan Distribusi untuk Variabel: t_dry


📊 Anderson-Darling Test:

Anderson-Darling normality test

data: data[[variable]]
A = 150.26, p-value < 2.2e-16

Warning message in [Link](data[[variable]], "pnorm", mean(data[[variable]], :


“ties should not be present for the one-sample Kolmogorov-Smirnov test”

📊 Kolmogorov-Smirnov Test:

Asymptotic one-sample Kolmogorov-Smirnov test

data: data[[variable]]
D = 0.068921, p-value < 2.2e-16
alternative hypothesis: two-sided

[Link] 31/42
5/21/25, 6:13 AM Program Coba - Colab

❗ Distribusi berbeda signifikan dari normal (p < 0.05)


➡️ Disarankan pendekatan non-parametrik, transformasi tambahan, atau model robust (GAM/
----------------------------------------------------

🔍 Pemeriksaan Distribusi untuk Variabel: t_temp


📊 Anderson-Darling Test:

Anderson-Darling normality test

data: data[[variable]]
A = 88.953, p-value < 2.2e-16

Warning message in [Link](data[[variable]], "pnorm", mean(data[[variable]], :


“ties should not be present for the one-sample Kolmogorov-Smirnov test”

📊 Kolmogorov-Smirnov Test:

Asymptotic one-sample Kolmogorov-Smirnov test

data: data[[variable]]
D = 0.073621, p-value < 2.2e-16
alternative hypothesis: two-sided

[Link] 32/42
5/21/25, 6:13 AM Program Coba - Colab

❗ Distribusi berbeda signifikan dari normal (p < 0.05)


➡️ Disarankan pendekatan non-parametrik, transformasi tambahan, atau model robust (GAM/
----------------------------------------------------

🔍 Pemeriksaan Distribusi untuk Variabel: t_sizeA


📊 Anderson-Darling Test:

Anderson-Darling normality test

data: data[[variable]]
A = 953.02, p-value < 2.2e-16

Warning message in [Link](data[[variable]], "pnorm", mean(data[[variable]], :


“ties should not be present for the one-sample Kolmogorov-Smirnov test”

📊 Kolmogorov-Smirnov Test:

Asymptotic one-sample Kolmogorov-Smirnov test

data: data[[variable]]
D = 0.20264, p-value < 2.2e-16
alternative hypothesis: two-sided
[Link] 33/42
5/21/25, 6:13 AM Program Coba - Colab
yp

❗ Distribusi berbeda signifikan dari normal (p < 0.05)


➡️ Disarankan pendekatan non-parametrik, transformasi tambahan, atau model robust (GAM/
----------------------------------------------------

🔍 Pemeriksaan Distribusi untuk Variabel: cho_x4


📊 Anderson-Darling Test:

[Link] 34/42
5/21/25, 6:13 AM Program Coba - Colab

Anderson-Darling normality test

data: data[[variable]]
A = 38.248, p-value < 2.2e-16

Warning message in [Link](data[[variable]], "pnorm", mean(data[[variable]], :


“ties should not be present for the one-sample Kolmogorov-Smirnov test”

📊 Kolmogorov-Smirnov Test:

Asymptotic one-sample Kolmogorov-Smirnov test

data: data[[variable]]
D = 0.035356, p-value = 1.692e-15
alternative hypothesis: two-sided

[Link] 35/42
5/21/25, 6:13 AM Program Coba - Colab

❗ Distribusi berbeda signifikan dari normal (p < 0.05)


➡️ Disarankan pendekatan non-parametrik, transformasi tambahan, atau model robust (GAM/
----------------------------------------------------

🔍 Pemeriksaan Distribusi untuk Variabel: crp_x4


📊 Anderson-Darling Test:

Anderson-Darling normality test

data: data[[variable]]
A = 379.58, p-value < 2.2e-16

Warning message in [Link](data[[variable]], "pnorm", mean(data[[variable]], :


“ties should not be present for the one-sample Kolmogorov-Smirnov test”

📊 Kolmogorov-Smirnov Test:

Asymptotic one-sample Kolmogorov-Smirnov test

data: data[[variable]]
D = 0.10804, p-value < 2.2e-16
alternative hypothesis: two-sided

[Link] 36/42
5/21/25, 6:13 AM Program Coba - Colab

❗ Distribusi berbeda signifikan dari normal (p < 0.05)


➡️ Disarankan pendekatan non-parametrik, transformasi tambahan, atau model robust (GAM/
----------------------------------------------------

🔍 Pemeriksaan Distribusi untuk Variabel: trg_x4


📊 Anderson-Darling Test:

Anderson-Darling normality test

data: data[[variable]]
A = 246.11, p-value < 2.2e-16

Warning message in [Link](data[[variable]], "pnorm", mean(data[[variable]], :


“ties should not be present for the one-sample Kolmogorov-Smirnov test”

📊 Kolmogorov-Smirnov Test:

Asymptotic one-sample Kolmogorov-Smirnov test

data: data[[variable]]
D = 0.085484, p-value < 2.2e-16
alternative hypothesis: two-sided

[Link] 37/42
5/21/25, 6:13 AM Program Coba - Colab

❗ Distribusi berbeda signifikan dari normal (p < 0.05)


➡️ Disarankan pendekatan non-parametrik, transformasi tambahan, atau model robust (GAM/
----------------------------------------------------

🔍 Pemeriksaan Distribusi untuk Variabel: cyc_x4


📊 Anderson-Darling Test:

Anderson-Darling normality test

data: data[[variable]]
A = 158.61, p-value < 2.2e-16

Warning message in [Link](data[[variable]], "pnorm", mean(data[[variable]], :


“ties should not be present for the one-sample Kolmogorov-Smirnov test”

📊 Kolmogorov-Smirnov Test:

Asymptotic one-sample Kolmogorov-Smirnov test

[Link] 38/42
5/21/25, 6:13 AM Program Coba - Colab

data: data[[variable]]
D = 0.066444, p-value < 2.2e-16
alternative hypothesis: two-sided

❗ Distribusi berbeda signifikan dari normal (p < 0.05)


➡️ Disarankan pendekatan non-parametrik, transformasi tambahan, atau model robust (GAM/
----------------------------------------------------

[Link] 39/42
5/21/25, 6:13 AM Program Coba - Colab

🔍 Pemeriksaan Distribusi untuk Variabel: hdl_x4


📊 Anderson-Darling Test:

Anderson-Darling normality test

data: data[[variable]]
A = 69.917, p-value < 2.2e-16

Warning message in [Link](data[[variable]], "pnorm", mean(data[[variable]], :


“ties should not be present for the one-sample Kolmogorov-Smirnov test”

📊 Kolmogorov-Smirnov Test:

Asymptotic one-sample Kolmogorov-Smirnov test

data: data[[variable]]
D = 0.050843, p-value < 2.2e-16
alternative hypothesis: two-sided

[Link] 40/42
5/21/25, 6:13 AM Program Coba - Colab

❗ Distribusi berbeda signifikan dari normal (p < 0.05)


➡️ Disarankan pendekatan non-parametrik, transformasi tambahan, atau model robust (GAM/
----------------------------------------------------

🔍 Pemeriksaan Distribusi untuk Variabel: thb_x4


📊 Anderson-Darling Test:

Anderson-Darling normality test

data: data[[variable]]
A = 46.488, p-value < 2.2e-16

Warning message in [Link](data[[variable]], "pnorm", mean(data[[variable]], :


“ties should not be present for the one-sample Kolmogorov-Smirnov test”

📊 Kolmogorov-Smirnov Test:

Asymptotic one-sample Kolmogorov-Smirnov test

data: data[[variable]]
D = 0.040067, p-value < 2.2e-16
alternative hypothesis: two-sided

[Link] 41/42
5/21/25, 6:13 AM Program Coba - Colab

❗ Distribusi berbeda signifikan dari normal (p < 0.05)


➡️ Disarankan pendekatan non-parametrik, transformasi tambahan, atau model robust (GAM/
----------------------------------------------------

🔍 Pemeriksaan Distribusi untuk Variabel: a1c_x4


📊 Anderson-Darling Test:

Anderson-Darling normality test

data: data[[variable]]
A = 142.94, p-value < 2.2e-16

Warning message in [Link](data[[variable]], "pnorm", mean(data[[variable]], :


“ties should not be present for the one-sample Kolmogorov-Smirnov test”

📊 Kolmogorov-Smirnov Test:

Asymptotic one-sample Kolmogorov-Smirnov test

data: data[[variable]]
D = 0.061433, p-value < 2.2e-16
alternative hypothesis: two-sided

[Link] 42/42

You might also like