I'm fairly new to R and machine learning and I'm trying to build a logistic regression model that can predict which of the clinical variables can better predict the outcome of death (0 being death and 1 is living in the dataset below).
Here is the dput of the data
structure(list(ID = c(13154920, 13201107, 13207948, 13234892,
13082943, 13193903, 13283776, 13154288, 13269178, 13055690, 13207670,
13220627, 13055009, 13044947, 13060589, 13201616, 13054278, 13160156,
13160971, 13239318, 13321288, 13154966, 13165362, 12999835, 13223721,
13064865, 13104602, 13036280, 13040507, 12964437, 13029805, 13029001,
12993036, 13072516, 13060586, 13119819, 13040632, 13055908, 13059026,
13207119, 13261022, 13259391, 13262499, 13207315, 13135316, 13233898,
13181075, 13261607, 13186960, 13240091, 13260671, 13302375, 13021555,
13062360, 13035346, 13077712, 13128769, 13267480, 13040172, 12977871,
13090190, 13040530, 13100979, 13192142, 13289317, 13315577, 13044653,
13079694, 13128639, 13207352, 13049409, 13210994, 13283675),
outcome = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1), day = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0), pa02 = c("121", "NA", "78.7", "69.099999999999994", "131",
"26.3", "68.900000000000006", "74.099999999999994", "118",
"404", "399", "NA", "NA", "73.7", "265", "75", "222", "112",
"133", "77.900000000000006", "64.7", "84", "92.2", "107",
"64.599999999999994", "56.6", "69.900000000000006", "130",
"91.4", "NA", "111", "79.2", "86.9", "65.7", "94.5", "129",
"NA", "157,0", "32,8", "160,0", "38,1", "61,7", "NA", "86,8",
"86,5", "87,4", "143,0", "57,8", "NA", "88,6", "94,3", "NA",
"70,0", "107,0", "57,2", "75,9", "148,0", "NA", "60,4", "NA",
"NA", "148,0", "75,3", "75,4", "58", "46,4", "82,3", "189,0",
"132,0", "96,5", "112,0", "67,0", "65"), iot = c("0", "1",
"1", "0", "1", "0", "0", "0", "1", "1", "0", "0", "0", "1",
"0", "0", "0", "0", "1", "1", "0", "0", "0", "0", "1", "1",
"1", "0", "1", "0", "1", "0", "1", "0", "1", "1", "1", "1",
"0", "0", "1", "0", "0", "0", "0", "0", "1", "0", "0", "0",
"0", "0", "0", "1", "0", "1", "0", "1", "0", "1", "0", "1",
"0", "0", "0", "0", "1", "0", "1", "0", "1", "0", "0"), fio2 = c("0.23",
"1", "0.6", "0.23", "1", "0.23", "0.23", "0.23", "0.4", "1",
"0.23", "0.23", "0.23", "1", "0.23", "0.23", "0.23", "0.23",
"0.5", "0.5", "0.23", "0.23", "0.23", "0.23", "0.75", "NA",
"NA", "0.23", "0.1", "0.23", "NA", "0.23", "NA", "0.23",
"1", "0.5", "0.4", "0.45", "0.23", "0.23", "0.7", "0.23",
"0.23", "0.23", "0.23", "0.23", "1", "0.23", "0.23", "0.23",
"0.23", "0.23", "0.23", "1", "0.23", "1", "0.23", "0.8",
"0.23", "0.4", "0.23", "0.4", "0.23", "0.23", "0.23", "0.23",
"0.3", "0.23", "0.8", "0.23", "0.3", "0.23", "0.23"), resp_syst = c("526.08695652173913",
"NA", "131.16666666666669", "300.43478260869563", "131",
"114.34782608695652", "299.56521739130437", "322.17391304347819",
"295", "404", "1734.782608695652", "NA", "NA", "73.7", "1152.1739130434783",
"326.08695652173913", "965.21739130434776", "486.95652173913044",
"266", "155.80000000000001", "281.30434782608694", "365.21739130434781",
"400.86956521739131", "465.21739130434781", "86.133333333333326",
"NA", "NA", "565.21739130434776", "914", "NA", "NA", "344.3478260869565",
"NA", "285.6521739130435", "94.5", "258", "NA", "348.88888888888886",
"142.60869565217391", "695.6521739130435", "54.428571428571431",
"268.26086956521738", "NA", "377.39130434782606", "376.08695652173913",
"380", "143", "251.30434782608694", "NA", "385.21739130434776",
"409.99999999999994", "NA", "304.3478260869565", "107", "248.69565217391303",
"75.900000000000006", "643.47826086956513", "NA", "262.60869565217388",
"NA", "NA", "370", "327.39130434782606", "327.82608695652175",
"252.17391304347825", "201.7391304347826", "274.33333333333331",
"821.73913043478262", "165", "419.56521739130432", "373.33333333333337",
"291.30434782608694", "282.60869565217388"), resp_score = c(0,
NA, 3, 1, 3, 2, 2, 1, 2, 0, 0, NA, NA, 4, 0, 1, 0, 0, 2,
3, 2, 1, 0, 0, 4, NA, NA, 0, 0, NA, NA, 1, NA, 2, 4, 2, NA,
1, 2, 0, 4, 2, NA, 1, 1, 1, 3, 2, NA, 1, 0, NA, 1, 3, 2,
4, 0, NA, 2, NA, NA, 1, 1, 1, 2, 2, 2, 0, 2, 0, 1, 2, 2),
platelets = c("NA", "363000", "NA", "NA", "620000", "NA",
"419000", "277000", "NA", "NA", "277000", "255000", "NA",
"185000", "318000", "296000", "182000", "48000", "129000",
"260000", "254000", "213000", "132000", "293000", "NA", "99000",
"297000", "227000", "174000", "172000", "76000", "NA", "242000",
"181000", "90000", "NA", "NA", "264000", "331000", "237000",
"279000", "NA", "214000", "NA", "NA", "283000", "416000",
"349000", "NA", "243000", "635000", "100000", "165000", "343000",
"NA", "423000", "206000", "NA", "439000", "NA", "358000",
"253000", "130000", "NA", "498000", "415000", "236000", "440000",
"218000", "300000", "190000", "244000", "275000"), coag_score = c(NA,
0, NA, NA, 0, NA, 0, 0, NA, NA, 0, 0, NA, 0, 0, 0, 0, 3,
1, 0, 0, 0, 1, 0, NA, 2, 0, 0, 0, 0, 2, NA, 0, 0, 2, NA,
NA, 0, 0, 0, 0, NA, 0, NA, NA, 0, 0, 0, NA, 0, 0, 2, 0, 0,
NA, 0, 0, NA, 0, NA, 0, 0, 1, NA, 0, 0, 0, 0, 0, 0, 0, 0,
0), bilirrubin = c("NA", "0.4", "NA", "0.5", "0.3", "NA",
"0.9", "NA", "0.4", "NA", "0.5", "NA", "NA", "1.1000000000000001",
"NA", "0.3", "NA", "0.5", "NA", "0.3", "0.3", "NA", "NA",
"0.4", "NA", "0.5", "0.4", "0.4", "1", "0.5", "NA", "NA",
"NA", "NA", "NA", "0.3", "0.3", "1", "0.7", "0.3", "1.4",
"NA", "NA", "0.3", "0.3", "0.3", "0.7", "0.4", "NA", "NA",
"NA", "0.7", "0.6", "0.5", "NA", "NA", "0.3", "0.3", "NA",
"NA", "NA", "0.4", "0.3", "NA", "NA", "0.4", "1.1000000000000001",
"NA", "0.5", "1.4", "0.4", "0.6", "0.7"), liver_score = c(NA,
0, NA, 0, 0, NA, 0, NA, 0, NA, 0, NA, NA, 0, NA, 0, NA, 0,
NA, 0, 0, NA, NA, 0, NA, 0, 0, 0, 0, 0, NA, NA, NA, NA, NA,
0, 0, 0, 0, 0, 1, NA, NA, 0, 0, 0, 0, 0, NA, NA, NA, 0, 0,
0, NA, NA, 0, 0, NA, NA, NA, 0, 0, NA, NA, 0, 0, NA, 0, 0,
0, 0, 0), pam = c("NA", "80.666666666666671", "73.333333333333329",
"83.333333333333329", "84.666666666666671", "100.6666666666667",
"101", "100", "95", "69.333333333333329", "93.666666666666671",
"70", "91.666666666666671", "70.666666666666671", "81.666666666666671",
"71.333333333333329", "95.333333333333329", "92", "77.666666666666671",
"84.333333333333329", "90", "80", "96.333333333333329", "93.333333333333329",
"69.333333333333329", "57.333333333333343", "80", "63", "81.666666666666671",
"80", "76.666666666666671", "90", "62.666666666666657", "89.333333333333329",
"87.333333333333329", "72.333333333333329", "93.333333333333329",
"87.666666666666671", "105.3333333333333", "107.6666666666667",
"69.333333333333329", "111.3333333333333", "75.666666666666671",
"103", "85.333333333333329", "86.666666666666671", "64.333333333333329",
"93.333333333333329", "87.333333333333329", "100", "106.6666666666667",
"96.666666666666671", "102", "98.666666666666671", "83.333333333333329",
"73.666666666666671", "95.333333333333329", "81", "93.333333333333329",
"62.666666666666657", "83.333333333333329", "93", "92.333333333333329",
"73.333333333333329", "87.333333333333329", "74.333333333333329",
"95.333333333333329", "80.333333333333329", "83.333333333333329",
"96.333333333333329", "97.666666666666671", "91.666666666666671",
"85.333333333333329"), catecolamine = c("10 ml/h", "0,1 mcg/kg/min",
"0", "0", "0,1mcg/kg/min", "0", "0", "0", "0", "0,8 mcg/kg/min",
"0,1 mcg/kg/min", "0", "0", "0,3mcg/kg/min", "0,15 mcg/kg/min",
"0,13mcg/kg/min", "6ml/h", "0", "0", "0,03mcg/kg/min", "0",
"0", "0", "0", "9mL/h", "0", "0", "0.45", "5.5555555555555558E-3",
"0", "NA", "0", "0.2857142857142857", "0", "0.32258064516129031",
"0", "0.16", "0,05mcg/kg/min", "0", "0", "0", "0", "0", "0",
"0", "0", "0,1mcg/Kg/min", "0", "0", "0", "0", "0", "0",
"0", "0", "10ml/hr", "0", "0", "0", "30ml/h", "0", "0", "0",
"0", "0", "0", "0", "10 ml/h", "0", "0", "0", "0", "0"),
cardiovas_score = c(NA, 3, 0, 0, 3, 0, 0, 0, 0, 4, 3, 0,
0, 4, 4, 4, 3, 0, 0, 3, 0, 0, 0, 0, 3, 0, 0, 4, 4, 0, NA,
0, 4, 0, 4, 0, 4, 3, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0,
0, 0, 0, 0, 0, NA, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, NA,
0, 0, 0, 0, 0), creatinine = c("0.62", "2.21", "NA", "1.25",
"1.84", "0.94", "0.77", "0.41", "1.58", "NA", "2.4500000000000002",
"0.21", "NA", "1.65", "2.77", "2.1800000000000002", "1.1299999999999999",
"0.49", "0.53", "1.34", "1.23", "0.8", "0.65", "2.9", "0.45",
"1.05", "0.72", "5.14", "0.65", "0.47", "1.46", "NA", "2.77",
"2.21", "0.97", "0.35", "NA", "1.83", "0.78", "0.45", "1.23",
"NA", "0.59", "1.21", "0.61", "0.75", "1.23", "0.74", "NA",
"0.88", "0.65", "3.48", "0.7", "0.88", "NA", "1.1499999999999999",
"0.59", "0.6", "0.41", "NA", "0.66", "0.72", "0.69", "NA",
"NA", "1.29", "0.8", "0.94", "0.48", "1.1399999999999999",
"0.85", "0.74", "0.86"), renal_score = c(0, 2, NA, 1, 1,
0, 0, 0, 0, NA, 2, 0, NA, 1, 2, 2, 1, 0, 0, 1, 1, 0, 0, 2,
0, 0, 0, 4, 0, 0, 1, NA, 2, 2, 0, 0, NA, 1, 0, 0, 1, NA,
0, 1, 0, 0, 1, 0, NA, 0, 0, 3, 0, 0, NA, 0, 0, 0, 0, NA,
0, 0, 0, NA, NA, 1, 0, 0, 0, 0, 0, 0, 0), `SOFA SCORE` = c(0,
5, 3, 2, 7, 2, 2, 1, 2, 4, 5, 0, 0, 9, 6, 6, 4, 3, 3, 7,
3, 1, 0, 2, 7, 2, 0, 8, 4, 0, 3, 1, 6, 4, 10, 2, 4, 5, 2,
0, 7, 2, 0, 2, 1, 1, 7, 2, 0, 1, 0, 5, 1, 3, 2, 4, 0, 0,
2, 3, 0, 1, 1, 1, 2, 3, 2, 3, 2, 0, 1, 2, 2)), row.names = c(NA,
-73L), class = c("tbl_df", "tbl", "data.frame"))
I have tried
test <- glm(sofa_t0_deadoralive$outcome ~ resp_score + coag_score + liver_score + cardiovas_score + renal_score, family = binomial)
Which outputs
Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred
And when I use
glm(formula = sofa_t0_deadoralive$outcome ~ resp_score + coag_score +
liver_score + cardiovas_score + renal_score, family = binomial)
I get
Deviance Residuals:
Min 1Q Median 3Q Max
-1.9432 -0.5247 0.0000 0.5729 1.5111
Coefficients: (1 not defined because of singularities)
Estimate Std. Error z value Pr(>|z|)
(Intercept) 2.543e+00 1.429e+00 1.779 0.0752 .
resp_score1 -5.534e-02 1.381e+00 -0.040 0.9680
resp_score2 -8.189e-01 1.415e+00 -0.579 0.5627
resp_score3 -1.803e+00 1.664e+00 -1.084 0.2784
resp_score4 -1.639e+01 4.315e+03 -0.004 0.9970
resp_scoreNA -1.282e+00 1.460e+00 -0.878 0.3799
coag_score1 -1.889e+00 1.538e+00 -1.228 0.2193
coag_score2 -1.917e+01 4.706e+03 -0.004 0.9967
coag_score3 -2.211e+01 1.075e+04 -0.002 0.9984
coag_scoreNA -1.777e+00 9.772e-01 -1.819 0.0690 .
liver_score1 3.463e+01 1.159e+04 0.003 0.9976
liver_scoreNA -1.833e+00 9.257e-01 -1.980 0.0478 *
cardiovas_score1 NA NA NA NA
cardiovas_score3 -2.795e-01 1.722e+00 -0.162 0.8710
cardiovas_score4 -1.997e+01 2.782e+03 -0.007 0.9943
cardiovas_scoreNA -1.747e+01 6.423e+03 -0.003 0.9978
.
.
.
Why is R recognizing each score of resp_score, liver_score and cardiovas_score, in this example, as different categorical data instead of continuous? What can I do to fix it?
Any direction as to where to focus is greatly appreciated.