We will be using sleep75 dataset, from wooldridge library.
Loading and peeking at data:
## Rows: 706
## Columns: 34
## $ age <int> 32, 31, 44, 30, 64, 41, 35, 47, 32, 30, 43, 23, 24, 48, 33, 23, 46, 37, 53, 45, 4…
## $ black <int> 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, …
## $ case <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23…
## $ clerical <dbl> 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, …
## $ construc <dbl> 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, …
## $ educ <int> 12, 14, 17, 12, 14, 12, 12, 13, 17, 15, 8, 16, 16, 5, 12, 12, 17, 14, 12, 17, 17,…
## $ earns74 <dbl> 0, 9500, 42500, 42500, 2500, 0, 8250, 0, 18750, 11750, 21250, 1000, 1000, 18750, …
## $ gdhlth <int> 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ inlf <int> 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, …
## $ leis1 <int> 3529, 2140, 4595, 3211, 4052, 4812, 4787, 3544, 4359, 4211, 2090, 6415, 3844, 437…
## $ leis2 <int> 3479, 2140, 4505, 3211, 4007, 4797, 4157, 3469, 4359, 4061, 1677, 6355, 3844, 437…
## $ leis3 <int> 3479, 2140, 4227, 3211, 4007, 4797, 4157, 3439, 4121, 4061, 1677, 6230, 3794, 437…
## $ smsa <int> 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, …
## $ lhrwage <dbl> 1.955861, 0.357674, 3.021887, 2.263844, 1.011601, 2.957511, 0.364643, 2.708717, 1…
## $ lothinc <dbl> 10.075380, 0.000000, 0.000000, 0.000000, 9.328213, 10.657280, 8.987322, 10.657280…
## $ male <int> 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ marr <int> 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, …
## $ prot <int> 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, …
## $ rlxall <int> 3163, 2920, 3038, 3083, 3493, 4078, 3810, 3033, 3606, 3168, 1988, 3480, 3848, 300…
## $ selfe <int> 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, …
## $ sleep <int> 3113, 2920, 2670, 3083, 3448, 4063, 3180, 2928, 3368, 3018, 1575, 3295, 3798, 300…
## $ slpnaps <int> 3163, 2920, 2760, 3083, 3493, 4078, 3810, 3003, 3368, 3168, 1988, 3355, 3798, 300…
## $ south <int> 0, 1, 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, …
## $ spsepay <dbl> 0, 0, 20000, 5000, 2400, 0, 12000, 0, 0, 6000, 0, 3000, 3000, 6000, 9000, 5000, 3…
## $ spwrk75 <int> 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, …
## $ totwrk <int> 3438, 5020, 2815, 3786, 2580, 1205, 2113, 3608, 2353, 2851, 6415, 370, 2438, 2693…
## $ union <int> 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, …
## $ worknrm <int> 3438, 5020, 2815, 3786, 2580, 0, 2113, 3608, 2353, 2851, 6415, 370, 2438, 2693, 2…
## $ workscnd <int> 0, 0, 0, 0, 0, 1205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ exper <int> 14, 11, 21, 12, 44, 23, 17, 28, 9, 9, 29, 1, 2, 37, 15, 5, 23, 17, 35, 22, 23, 21…
## $ yngkid <int> 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ yrsmarr <int> 13, 0, 0, 12, 33, 23, 0, 24, 11, 7, 23, 4, 4, 0, 9, 4, 21, 17, 26, 22, 0, 0, 31, …
## $ hrwage <dbl> 7.070004, 1.429999, 20.529997, 9.619998, 2.750000, 19.249998, 1.440000, 15.010007…
## $ agesq <int> 1024, 961, 1936, 900, 4096, 1681, 1225, 2209, 1024, 900, 1849, 529, 576, 2304, 10…
Checking for NA.
Imputing NA with 0 (since those people do not work, they earn 0$/hour).
Changing boolean data stored as int to boolean.
## Rows: 706
## Columns: 34
## $ age <int> 32, 31, 44, 30, 64, 41, 35, 47, 32, 30, 43, 23, 24, 48, 33, 23, 46, 37, 53, 45, 4…
## $ black <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALS…
## $ case <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23…
## $ clerical <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALS…
## $ construc <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALS…
## $ educ <int> 12, 14, 17, 12, 14, 12, 12, 13, 17, 15, 8, 16, 16, 5, 12, 12, 17, 14, 12, 17, 17,…
## $ earns74 <dbl> 0, 9500, 42500, 42500, 2500, 0, 8250, 0, 18750, 11750, 21250, 1000, 1000, 18750, …
## $ gdhlth <lgl> FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TR…
## $ inlf <lgl> TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRU…
## $ leis1 <int> 3529, 2140, 4595, 3211, 4052, 4812, 4787, 3544, 4359, 4211, 2090, 6415, 3844, 437…
## $ leis2 <int> 3479, 2140, 4505, 3211, 4007, 4797, 4157, 3469, 4359, 4061, 1677, 6355, 3844, 437…
## $ leis3 <int> 3479, 2140, 4227, 3211, 4007, 4797, 4157, 3439, 4121, 4061, 1677, 6230, 3794, 437…
## $ smsa <lgl> FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, T…
## $ lhrwage <dbl> 1.955861, 0.357674, 3.021887, 2.263844, 1.011601, 2.957511, 0.364643, 2.708717, 1…
## $ lothinc <dbl> 10.075380, 0.000000, 0.000000, 0.000000, 9.328213, 10.657280, 8.987322, 10.657280…
## $ male <lgl> TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, T…
## $ marr <lgl> TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TR…
## $ prot <lgl> TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE…
## $ rlxall <int> 3163, 2920, 3038, 3083, 3493, 4078, 3810, 3033, 3606, 3168, 1988, 3480, 3848, 300…
## $ selfe <lgl> FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FA…
## $ sleep <int> 3113, 2920, 2670, 3083, 3448, 4063, 3180, 2928, 3368, 3018, 1575, 3295, 3798, 300…
## $ slpnaps <int> 3163, 2920, 2760, 3083, 3493, 4078, 3810, 3003, 3368, 3168, 1988, 3355, 3798, 300…
## $ south <lgl> FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE…
## $ spsepay <dbl> 0, 0, 20000, 5000, 2400, 0, 12000, 0, 0, 6000, 0, 3000, 3000, 6000, 9000, 5000, 3…
## $ spwrk75 <lgl> FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, TRU…
## $ totwrk <int> 3438, 5020, 2815, 3786, 2580, 1205, 2113, 3608, 2353, 2851, 6415, 370, 2438, 2693…
## $ union <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE…
## $ worknrm <int> 3438, 5020, 2815, 3786, 2580, 0, 2113, 3608, 2353, 2851, 6415, 370, 2438, 2693, 2…
## $ workscnd <int> 0, 0, 0, 0, 0, 1205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ exper <int> 14, 11, 21, 12, 44, 23, 17, 28, 9, 9, 29, 1, 2, 37, 15, 5, 23, 17, 35, 22, 23, 21…
## $ yngkid <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE…
## $ yrsmarr <int> 13, 0, 0, 12, 33, 23, 0, 24, 11, 7, 23, 4, 4, 0, 9, 4, 21, 17, 26, 22, 0, 0, 31, …
## $ hrwage <dbl> 7.070004, 1.429999, 20.529997, 9.619998, 2.750000, 19.249998, 1.440000, 15.010007…
## $ agesq <int> 1024, 961, 1936, 900, 4096, 1681, 1225, 2209, 1024, 900, 1849, 529, 576, 2304, 10…
Checking for variables that are too correlated with response variable.
Removing variables that are computed using sleep.
All variables that correlate with sleep to well were removed.
## Reordering variables and trying again:
First model, using male, south and totwrk.
Average residual over mean:
## [1] 0.09621059
Residuals average is smaller than ~10% of the response variable.
Second model, using earns74, gdhlth, smsa, male, marr, south, totwrk, yrsmarr, agesq.
Average residual over mean:
## [1] 0.09496449
Residuals average is again smaller than ~10% of the response variable.
Third model, using totwork and expert.
Average residual over mean:
## [1] 0.09667747
Residuals average is again smaller than ~10% of the response variable.