setwd("/Users/subasishdas1/Dropbox/---- TRB_2017 ----/SHRP2 Inclement")
aa <- read.csv("FINAL_4a.csv")
names(aa)
##  [1] "CR.A.AMSHNUM_AG" "ID_A"            "CRASHNUM1"      
##  [4] "DataType"        "HIGHESTINJ"      "Category"       
##  [7] "Category1"       "Vis_Score"       "SKIDNUMBER"     
## [10] "RCISLDWTH1"      "RCISLDWTH2"      "AVG_SH_WID"     
## [13] "RCIAADT"         "RCIAVGTFCT"      "RCIMAXSPD"      
## [16] "LIGHTCOND"       "WEATHCOND"       "DIV_UNDIV"      
## [19] "AGE_DRPED"       "RDSURFCOND"      "YEAR"           
## [22] "CNTOFVEH"        "ID"              "Airport_Na"     
## [25] "Airport_Nu"      "LATITUDE"        "LONGITUDE"      
## [28] "CRSHCAUSE1"      "CNTOFINJ"        "CNTOFFATL"      
## [31] "CNTOFSVINJ"      "RCIFUNCLAS"      "RCIACC"         
## [34] "CR_LATITUDE"     "CR_LONGITUDE"    "RCISLDWTH3"     
## [37] "RCIMEDWDTH"      "StartDate"       "Start_Time"     
## [40] "End_Date"        "End_Time"        "Duration"       
## [43] "HIGHESTINJ1"     "Vis_Score1"      "SKIDNUMBER1"    
## [46] "RCIAADT1"        "RCIAVGTFCT1"     "RCIMAXSPD1"     
## [49] "LIGHTCOND1"      "WEATHCOND1"      "DIV_UNDIV1"     
## [52] "AGE_DRPED1"      "RDSURFCOND1"     "CNTOFVEH1"      
## [55] "RCIFUNCLAS1"     "RCIMEDWDTH1"
aa1 <- aa[c(44, 43, 15, 13, 9, 12, 19, 14, 48, 46, 45, 49, 51, 52)]
names(aa1)
##  [1] "Vis_Score1"  "HIGHESTINJ1" "RCIMAXSPD"   "RCIAADT"     "SKIDNUMBER" 
##  [6] "AVG_SH_WID"  "AGE_DRPED"   "RCIAVGTFCT"  "RCIMAXSPD1"  "RCIAADT1"   
## [11] "SKIDNUMBER1" "LIGHTCOND1"  "DIV_UNDIV1"  "AGE_DRPED1"
summary(aa1)
##      Vis_Score1       HIGHESTINJ1      RCIMAXSPD        RCIAADT      
##  Excellent:11666   Fatal    :  181   Min.   :25.00   Min.   :     0  
##  Medium   : 9815   Injury   :11293   1st Qu.:40.00   1st Qu.: 26000  
##  Poor     : 2138   No Injury:12145   Median :45.00   Median : 40500  
##                                      Mean   :45.25   Mean   : 60909  
##                                      3rd Qu.:50.00   3rd Qu.: 60500  
##                                      Max.   :70.00   Max.   :304000  
##                                                                      
##    SKIDNUMBER      AVG_SH_WID       AGE_DRPED        RCIAVGTFCT    
##  Min.   : 0.00   Min.   : 0.000   Min.   : 15.00   Min.   : 0.000  
##  1st Qu.:33.00   1st Qu.: 1.000   1st Qu.: 25.00   1st Qu.: 3.300  
##  Median :36.00   Median : 3.000   Median : 38.00   Median : 4.530  
##  Mean   :35.29   Mean   : 3.844   Mean   : 39.57   Mean   : 5.171  
##  3rd Qu.:40.00   3rd Qu.: 6.000   3rd Qu.: 51.00   3rd Qu.: 6.260  
##  Max.   :62.00   Max.   :19.500   Max.   :108.00   Max.   :31.770  
##                                                                    
##  RCIMAXSPD1              RCIAADT1    SKIDNUMBER1  
##  >60  : 2600   >124,999      :3131   > 50 :  250  
##  0-30 : 1827   0-9999        : 871   20-30: 1738  
##  30-45:15013   10,000-34,999 :8127   30-40:15920  
##  45-60: 4179   35,000-54,999 :7226   40-50: 4702  
##                55,000-124,999:4050   NA's : 1009  
##                NA's          : 214                
##                                                   
##                  LIGHTCOND1        DIV_UNDIV1      AGE_DRPED1  
##  Dark(No Street light):  818   divided  :16111   20-29  :6190  
##  Dark(Street Light)   : 6417   undivided: 7192   30-39  :4555  
##  Dawn/Dusk            : 1195   unknown  :  316   40-49  :4358  
##  Daylight             :15189                     50-59  :3455  
##                                                  60-69  :1914  
##                                                  (Other):2686  
##                                                  NA's   : 461
aa2 <- aa1[c(1:8)]
names(aa2)
## [1] "Vis_Score1"  "HIGHESTINJ1" "RCIMAXSPD"   "RCIAADT"     "SKIDNUMBER" 
## [6] "AVG_SH_WID"  "AGE_DRPED"   "RCIAVGTFCT"
library(ordinal) 
m1 <- clm(Vis_Score1 ~HIGHESTINJ1+ RCIMAXSPD+ RCIAADT+ SKIDNUMBER+ RCIAVGTFCT+
            AVG_SH_WID+ AGE_DRPED,  data = aa2)
## Warning: (2) Model is nearly unidentifiable: very large eigenvalue
##  - Rescale variables? 
## In addition: Absolute and relative convergence criteria were met
summary(m1) 
## formula: 
## Vis_Score1 ~ HIGHESTINJ1 + RCIMAXSPD + RCIAADT + SKIDNUMBER + RCIAVGTFCT + AVG_SH_WID + AGE_DRPED
## data:    aa2
## 
##  link  threshold nobs  logLik    AIC      niter max.grad cond.H 
##  logit flexible  23619 -21934.08 43888.17 7(0)  6.38e-07 4.6e+12
## 
## Coefficients:
##                        Estimate Std. Error z value Pr(>|z|)    
## HIGHESTINJ1Injury     2.651e-01  1.515e-01   1.750   0.0801 .  
## HIGHESTINJ1No Injury  2.630e-01  1.514e-01   1.736   0.0825 .  
## RCIMAXSPD             8.029e-03  1.984e-03   4.048 5.17e-05 ***
## RCIAADT              -7.073e-07  2.789e-07  -2.536   0.0112 *  
## SKIDNUMBER           -6.498e-03  1.544e-03  -4.209 2.56e-05 ***
## RCIAVGTFCT            9.086e-04  4.623e-03   0.197   0.8442    
## AVG_SH_WID            2.722e-03  5.076e-03   0.536   0.5918    
## AGE_DRPED            -5.583e-03  7.675e-04  -7.273 3.50e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Threshold coefficients:
##                  Estimate Std. Error z value
## Excellent|Medium   0.1235     0.1710   0.722
## Medium|Poor        2.4617     0.1721  14.305
anova(m1, update(m1, scale = ~.-(RCIAVGTFCT+AVG_SH_WID)))
## Warning: (-2) Model failed to converge: degenerate Hessian with 1 negative eigenvalues 
## In addition: maximum number of consecutive Newton modifications reached
## Likelihood ratio tests of cumulative link models:
##  
##                                                    formula:                                                                                         
## m1                                                 Vis_Score1 ~ HIGHESTINJ1 + RCIMAXSPD + RCIAADT + SKIDNUMBER + RCIAVGTFCT + AVG_SH_WID + AGE_DRPED
## update(m1, scale = ~. - (RCIAVGTFCT + AVG_SH_WID)) Vis_Score1 ~ HIGHESTINJ1 + RCIMAXSPD + RCIAADT + SKIDNUMBER + RCIAVGTFCT + AVG_SH_WID + AGE_DRPED
##                                                    scale:                        
## m1                                                 ~1                            
## update(m1, scale = ~. - (RCIAVGTFCT + AVG_SH_WID)) ~. - (RCIAVGTFCT + AVG_SH_WID)
##                                                    link: threshold:
## m1                                                 logit flexible  
## update(m1, scale = ~. - (RCIAVGTFCT + AVG_SH_WID)) logit flexible  
## 
##                                                    no.par   AIC logLik
## m1                                                     10 43888 -21934
## update(m1, scale = ~. - (RCIAVGTFCT + AVG_SH_WID))     18 34803 -17383
##                                                    LR.stat df Pr(>Chisq)
## m1                                                                      
## update(m1, scale = ~. - (RCIAVGTFCT + AVG_SH_WID))  9101.6  8  < 2.2e-16
##                                                       
## m1                                                    
## update(m1, scale = ~. - (RCIAVGTFCT + AVG_SH_WID)) ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m2 <- clm(Vis_Score1 ~HIGHESTINJ1+ RCIMAXSPD+ RCIAADT+ SKIDNUMBER+ AGE_DRPED,  data = aa2)
## Warning: (2) Model is nearly unidentifiable: very large eigenvalue
##  - Rescale variables? 
## In addition: Absolute and relative convergence criteria were met
summary(m2) 
## formula: 
## Vis_Score1 ~ HIGHESTINJ1 + RCIMAXSPD + RCIAADT + SKIDNUMBER + AGE_DRPED
## data:    aa2
## 
##  link  threshold nobs  logLik    AIC      niter max.grad cond.H 
##  logit flexible  23619 -21934.26 43884.53 6(0)  6.71e-07 4.6e+12
## 
## Coefficients:
##                        Estimate Std. Error z value Pr(>|z|)    
## HIGHESTINJ1Injury     2.650e-01  1.515e-01   1.750  0.08017 .  
## HIGHESTINJ1No Injury  2.626e-01  1.514e-01   1.734  0.08289 .  
## RCIMAXSPD             8.688e-03  1.638e-03   5.305 1.13e-07 ***
## RCIAADT              -7.113e-07  2.727e-07  -2.609  0.00909 ** 
## SKIDNUMBER           -6.786e-03  1.467e-03  -4.627 3.72e-06 ***
## AGE_DRPED            -5.578e-03  7.675e-04  -7.268 3.65e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Threshold coefficients:
##                  Estimate Std. Error z value
## Excellent|Medium   0.1277     0.1707   0.748
## Medium|Poor        2.4658     0.1718  14.352
library(MASS)
m <- polr(Vis_Score1 ~HIGHESTINJ1+ RCIMAXSPD+ RCIAADT+ SKIDNUMBER+ RCIAVGTFCT+ AVG_SH_WID+ AGE_DRPED,  data = aa2, na.action = na.omit, Hess=TRUE)
m
## Call:
## polr(formula = Vis_Score1 ~ HIGHESTINJ1 + RCIMAXSPD + RCIAADT + 
##     SKIDNUMBER + RCIAVGTFCT + AVG_SH_WID + AGE_DRPED, data = aa2, 
##     na.action = na.omit, Hess = TRUE)
## 
## Coefficients:
##    HIGHESTINJ1Injury HIGHESTINJ1No Injury            RCIMAXSPD 
##         2.651082e-01         2.629668e-01         8.029317e-03 
##              RCIAADT           SKIDNUMBER           RCIAVGTFCT 
##        -7.072602e-07        -6.497780e-03         9.085730e-04 
##           AVG_SH_WID            AGE_DRPED 
##         2.721568e-03        -5.582666e-03 
## 
## Intercepts:
## Excellent|Medium      Medium|Poor 
##        0.1235173        2.4616696 
## 
## Residual Deviance: 43868.17 
## AIC: 43888.17
newdat <- cbind(aa1, predict(m, aa2[c(2:8)], type = "probs"))
head(newdat)
##   Vis_Score1 HIGHESTINJ1 RCIMAXSPD RCIAADT SKIDNUMBER AVG_SH_WID AGE_DRPED
## 1  Excellent   No Injury        35   34000         36        4.5        31
## 2  Excellent      Injury        30   21000         44        1.0        55
## 3  Excellent      Injury        30   21000         44        1.0        47
## 4  Excellent      Injury        45   22500         33        7.5        44
## 5  Excellent   No Injury        45   22500         33        6.0        32
## 6  Excellent   No Injury        45   22500         33        6.0        40
##   RCIAVGTFCT RCIMAXSPD1      RCIAADT1 SKIDNUMBER1            LIGHTCOND1
## 1       8.35      30-45 10,000-34,999       30-40 Dark(No Street light)
## 2       8.35       0-30 10,000-34,999       40-50    Dark(Street Light)
## 3       8.35       0-30 10,000-34,999       40-50    Dark(Street Light)
## 4       8.33      30-45 10,000-34,999       30-40              Daylight
## 5       8.33      30-45 10,000-34,999       30-40              Daylight
## 6       8.33      30-45 10,000-34,999       30-40              Daylight
##   DIV_UNDIV1 AGE_DRPED1 Excellent    Medium       Poor
## 1  undivided      30-39 0.4976801 0.4135601 0.08875980
## 2  undivided      50-59 0.5535496 0.3742370 0.07221346
## 3  undivided      40-49 0.5424877 0.3822488 0.07526348
## 4    divided      40-49 0.4862752 0.4212042 0.09252061
## 5    divided      30-39 0.4711119 0.4311374 0.09775064
## 6    divided      40-49 0.4822525 0.4238656 0.09388186
names(newdat)
##  [1] "Vis_Score1"  "HIGHESTINJ1" "RCIMAXSPD"   "RCIAADT"     "SKIDNUMBER" 
##  [6] "AVG_SH_WID"  "AGE_DRPED"   "RCIAVGTFCT"  "RCIMAXSPD1"  "RCIAADT1"   
## [11] "SKIDNUMBER1" "LIGHTCOND1"  "DIV_UNDIV1"  "AGE_DRPED1"  "Excellent"  
## [16] "Medium"      "Poor"
library(reshape2)
library(ggplot2)
lnewdat <- melt(newdat, id.vars = c("Vis_Score1",  "HIGHESTINJ1", "RCIMAXSPD",   "RCIAADT",     "SKIDNUMBER", "AVG_SH_WID",  "AGE_DRPED",   "RCIAVGTFCT",  "RCIMAXSPD1",  "RCIAADT1",   "SKIDNUMBER1", "LIGHTCOND1",  "DIV_UNDIV1",  "AGE_DRPED1"), variable.name = "Level", value.name="Probability")
head(lnewdat)
##   Vis_Score1 HIGHESTINJ1 RCIMAXSPD RCIAADT SKIDNUMBER AVG_SH_WID AGE_DRPED
## 1  Excellent   No Injury        35   34000         36        4.5        31
## 2  Excellent      Injury        30   21000         44        1.0        55
## 3  Excellent      Injury        30   21000         44        1.0        47
## 4  Excellent      Injury        45   22500         33        7.5        44
## 5  Excellent   No Injury        45   22500         33        6.0        32
## 6  Excellent   No Injury        45   22500         33        6.0        40
##   RCIAVGTFCT RCIMAXSPD1      RCIAADT1 SKIDNUMBER1            LIGHTCOND1
## 1       8.35      30-45 10,000-34,999       30-40 Dark(No Street light)
## 2       8.35       0-30 10,000-34,999       40-50    Dark(Street Light)
## 3       8.35       0-30 10,000-34,999       40-50    Dark(Street Light)
## 4       8.33      30-45 10,000-34,999       30-40              Daylight
## 5       8.33      30-45 10,000-34,999       30-40              Daylight
## 6       8.33      30-45 10,000-34,999       30-40              Daylight
##   DIV_UNDIV1 AGE_DRPED1     Level Probability
## 1  undivided      30-39 Excellent   0.4976801
## 2  undivided      50-59 Excellent   0.5535496
## 3  undivided      40-49 Excellent   0.5424877
## 4    divided      40-49 Excellent   0.4862752
## 5    divided      30-39 Excellent   0.4711119
## 6    divided      40-49 Excellent   0.4822525
names(lnewdat)[2] <- "Severity"
head(lnewdat)
##   Vis_Score1  Severity RCIMAXSPD RCIAADT SKIDNUMBER AVG_SH_WID AGE_DRPED
## 1  Excellent No Injury        35   34000         36        4.5        31
## 2  Excellent    Injury        30   21000         44        1.0        55
## 3  Excellent    Injury        30   21000         44        1.0        47
## 4  Excellent    Injury        45   22500         33        7.5        44
## 5  Excellent No Injury        45   22500         33        6.0        32
## 6  Excellent No Injury        45   22500         33        6.0        40
##   RCIAVGTFCT RCIMAXSPD1      RCIAADT1 SKIDNUMBER1            LIGHTCOND1
## 1       8.35      30-45 10,000-34,999       30-40 Dark(No Street light)
## 2       8.35       0-30 10,000-34,999       40-50    Dark(Street Light)
## 3       8.35       0-30 10,000-34,999       40-50    Dark(Street Light)
## 4       8.33      30-45 10,000-34,999       30-40              Daylight
## 5       8.33      30-45 10,000-34,999       30-40              Daylight
## 6       8.33      30-45 10,000-34,999       30-40              Daylight
##   DIV_UNDIV1 AGE_DRPED1     Level Probability
## 1  undivided      30-39 Excellent   0.4976801
## 2  undivided      50-59 Excellent   0.5535496
## 3  undivided      40-49 Excellent   0.5424877
## 4    divided      40-49 Excellent   0.4862752
## 5    divided      30-39 Excellent   0.4711119
## 6    divided      40-49 Excellent   0.4822525
## Max Speed
library(ggplot2)
m1 <- ggplot(lnewdat, aes(x = RCIMAXSPD, y = Probability, colour = Level)) +
  geom_point(alpha = 1/50, size=1) + facet_grid(~ Severity, labeller="label_both")+theme_bw()+
  aes(colour = Level) + stat_smooth()+labs(x="Max. Speed (mph) \n (a)")+
  theme(legend.position="none")+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 

## AADT
library(ggplot2)
m2 <- ggplot(lnewdat, aes(x = RCIAADT, y = Probability, colour = Level)) +
  geom_point(alpha = 1/50, size=1) + facet_grid(~ Severity, labeller="label_both")+theme_bw()+
  aes(colour = Level) + stat_smooth()+labs(x="AADT (vpd) \n (b)")+
  theme(legend.position="none")+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 



## SKIDNUMBER
library(ggplot2)
m3 <- ggplot(lnewdat, aes(x = SKIDNUMBER, y = Probability, colour = Level)) +
  geom_point(alpha = 1/50, size=1) + facet_grid(~ Severity, labeller="label_both")+theme_bw()+
  aes(colour = Level) + stat_smooth()+ labs(x="Skid Number \n (c)")+
  theme(legend.position="none")+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 



## Age
library(ggplot2)
m4 <- ggplot(lnewdat, aes(x = AGE_DRPED, y = Probability, colour = Level)) +
  geom_point(alpha = 1/50, size=1) + facet_grid(~ Severity, labeller="label_both")+theme_bw()+
  aes(colour = Level) + stat_smooth()+ labs(x="Driver Age \n (d)")+
theme(legend.position="bottom", legend.text=element_text(size=20))+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 
library(grid)
grid.newpage()
pushViewport(viewport(layout = grid.layout(4, 1)))
vplayout <- function(x, y)
  viewport(layout.pos.row = x, layout.pos.col = y)
print(m1, vp = vplayout(1, 1))
## Warning: Computation failed in `stat_smooth()`:
## x has insufficient unique values to support 10 knots: reduce k.
print(m2, vp = vplayout(2, 1))
print(m3, vp = vplayout(3, 1))
print(m4, vp = vplayout(4, 1))

ex <- subset(aa1, Vis_Score1=="Excellent")
md <- subset(aa1, Vis_Score1=="Medium")
pr <- subset(aa1, Vis_Score1=="Poor")

dim(ex)
## [1] 11666    14
dim(md)
## [1] 9815   14
dim(pr)
## [1] 2138   14
names(ex)
##  [1] "Vis_Score1"  "HIGHESTINJ1" "RCIMAXSPD"   "RCIAADT"     "SKIDNUMBER" 
##  [6] "AVG_SH_WID"  "AGE_DRPED"   "RCIAVGTFCT"  "RCIMAXSPD1"  "RCIAADT1"   
## [11] "SKIDNUMBER1" "LIGHTCOND1"  "DIV_UNDIV1"  "AGE_DRPED1"
table(ex$RCIAADT)
## 
##      0    550   1100   1300   1365   1500   1600   1800   2000   2035 
##    107      1      2      5      1      1      1      2      1      4 
##   2100   2400   2700   2800   2900   3100   3200   3300   3400   3500 
##      5      5      1      2      2      7      2      3      2      1 
##   3600   3681   3700   3734   3800   3900   3950   4000   4100   4200 
##      5      4      5      1      1      8      2      4      3      2 
##   4300   4600   4700   4800   4900   5000   5100   5200   5300   5400 
##     14      5     10      3      5      9      2      4      2      4 
##   5450   5500   5600   5800   5900   6000   6080   6100   6139   6200 
##      3      8      1      1      3      6      4      8      1      1 
##   6229   6300   6366   6400   6500   6600   6735   6744   6800   6900 
##      2      4      4      1      1      7      2      3      1      5 
##   7000   7100   7200   7300   7400   7433   7500   7600   7700   7800 
##      1      7      9      3      3      1      2      2      7      4 
##   7900   8000   8100   8160   8200   8300   8400   8420   8500   8600 
##      3      8      5      1     11     16      2      2     19      4 
##   8700   8800   8900   9000   9100   9200   9300   9400   9500   9600 
##      3     17      9      4     11      8      7     13      6     20 
##   9632   9700   9746   9800   9900  10000  10100  10200  10300  10400 
##      3      4      2      2     13     18     12      9      4     11 
##  10500  10600  10700  10800  10900  11000  11100  11200  11300  11400 
##     29      3      6      7      6     16      1      2      5      9 
##  11500  11600  11624  11700  11800  11848  11900  12000  12100  12300 
##     21      2      2      8      7      1      8     24      4      8 
##  12400  12415  12500  12600  12700  12800  12900  12928  13000  13015 
##      1      3     48     13      7      8      8      1     31      1 
##  13100  13138  13188  13200  13300  13400  13500  13600  13700  13800 
##      5      4      2      2     26      5     27     19      7     24 
##  13900  14000  14100  14200  14300  14400  14500  14600  14700  14800 
##      3     34      6      5      2      5     23      7     13      3 
##  14900  15000  15100  15200  15300  15400  15500  15600  15700  15900 
##     11     31     14     11     11      7     24     13     14     12 
##  16000  16100  16200  16300  16400  16500  16600  16700  16800  16900 
##     18      9      5     14     20     62     14     14     18      9 
##  17000  17100  17200  17277  17300  17400  17500  17600  17700  17800 
##     38      5     11      2     14     10     45     30      8     40 
##  17900  18000  18100  18200  18300  18400  18500  18600  18700  18800 
##      8     13     24     22     16      7     19     15      7     15 
##  18900  19000  19100  19200  19300  19400  19499  19500  19600  19700 
##     16     25     13      7     14     14      2     19     21     14 
##  19800  19900  20000  20100  20200  20300  20400  20500  20600  20800 
##     17     22     23     13      7     13      5     39      2      2 
##  20900  21000  21200  21400  21500  21938  22000  22182  22200  22301 
##      2     85     10      3    107      2     76      2      2      2 
##  22500  22935  23000  23180  23300  23500  24000  24112  24500  24604 
##     81      2     80      2      1     84     94      1     76      1 
##  24867  25000  25300  25400  25500  25533  26000  26400  26500  26513 
##      4     72      2      2     92      2     69      1     73      2 
##  26626  26893  26997  27000  27141  27167  27500  27598  27729  27781 
##      1      4      1    106      4      1     59      5      1      1 
##  28000  28500  29000  29065  29398  29500  30000  30500  31000  31500 
##     57     91     76      2      1     94    100     72     72     80 
##  32000  32500  32728  32742  32975  33000  33012  33500  33628  33860 
##    107    101      2      6      3    102      3    104      2      1 
##  34000  34325  34500  35000  35500  36000  36394  36500  36564  36579 
##    160      4    104    118    141     71      6    112      2      8 
##  37000  37345  37500  38000  38017  38035  38102  38500  39000  39500 
##     94      9    125     45      2      1      4    101    125     93 
##  40000  40500  41000  41500  41792  42000  42500  43000  43300  43500 
##    111    121     99     86      2     62    123    119      2     90 
##  43700  44000  44500  44907  44967  45000  45500  46000  46278  46449 
##      1    143     82      2      2    135     85     66      2     14 
##  46470  46500  46773  47000  47500  47571  48000  48475  48500  49000 
##      3     49      2     95     74      5     67      2     93     55 
##  49500  50000  50065  50500  50877  51000  51300  51500  51700  51900 
##     69     88      3     66      6     58      8     41      1      1 
##  52000  52500  53000  53040  53500  54000  54400  54500  55000  55500 
##     82     68     88      2     54     46      2     75     81     46 
##  56000  56500  56966  57000  57073  57500  57596  58000  58426  58500 
##     57     23      9     81      2     61      5     55      2     50 
##  58590  59000  59133  59500  60000  60440  60500  61000  61500  62000 
##      7     25     11     39     19      1     38     46      1     25 
##  62500  63000  63500  64000  64205  64500  64973  65000  65054  65125 
##     34     74     32     53      3     23      3     19      3      2 
##  65500  66000  66139  66500  66952  67000  67500  68000  68500  69000 
##     16     14      1     38      4      6      8     37     22     10 
##  69100  69500  70000  70500  71500  72000  72500  73000  73300  73500 
##      1     14     21      5     21     12     17     10      2      1 
##  74000  74500  74915  75000  75500  76000  77000  77500  78000  78500 
##     19     17      1     13      3     19     22      7      5     28 
##  79000  79500  80000  80500  81000  81500  82000  82500  83000  83500 
##     14      7      9      4      1     16     25      1     23      8 
##  84000  84500  86000  86500  87000  88000  88900  89000  89500  90000 
##      6     16     19     12     13      3      3      4      6      7 
##  90500  91000  91500  92000  93500  94000  94500  95500  97000  98000 
##      5      8      8     11     12      6      7     11      6      6 
##  98500  99500  99800 100000 100500 100800 101000 102000 102500 103000 
##      1     19      2      5      5      6      2      9      2      3 
## 104000 104500 105000 105500 106000 106200 107000 108000 108500 109000 
##      3      7      4      1      2      2     27     20      3      1 
## 109500 110000 110500 110600 111000 111700 112000 112500 113000 113500 
##      2     12      3      2     24      1     27     16      8     10 
## 114500 114800 115779 116500 117000 117716 118470 118776 119000 119500 
##      5      1      4     11      4     10      2      3      2      3 
## 120000 121000 122457 122500 123000 123500 123696 123731 125000 125427 
##      2      7      3     10      7      6      2      9      1      2 
## 125500 126500 127500 129000 130325 130575 131000 131500 132000 132500 
##      1      1     23      2      2      6      3      3      8      3 
## 133500 134000 134500 134764 135000 136407 136500 137000 138000 138500 
##      2      6      3      2      7      1     13      6     27      4 
## 139000 139500 140000 141000 141500 142000 142500 143500 144000 147000 
##     16      8     11      8     28     11      2     10      1      2 
## 147500 148000 148500 149000 149500 150000 150500 151000 151500 152000 
##     11      4      6     10      8      1     13      2      2      2 
## 152500 153000 154500 155500 156500 157000 158000 158500 160000 161000 
##      3      2      3      9     25      6      7      9     22      4 
## 163000 163500 164000 164500 165000 165028 166000 166198 167000 168500 
##      9      6      7      2      6      2      2      5      2     10 
## 169000 170500 171000 171500 172000 172500 173000 173500 174500 175000 
##      7     15      2      2     10      4      7      8      1      9 
## 175500 176500 177000 177500 178500 179500 180500 181500 183000 184000 
##     17     11      7      7      5     10     13      5     33     17 
## 184500 185000 186000 187500 189500 190000 190500 191500 192000 192443 
##     16      4      4      1     10      7     52     16      1      1 
## 192500 193000 193478 193500 194000 194500 194657 195000 195500 196000 
##      3      9     14     16      2     15      7      4      5      4 
## 197000 197500 198000 198500 199000 200000 203000 204000 205000 205500 
##     32     16     19      6      2     14      5      3     14      5 
## 206000 207000 209000 210000 213000 214000 217000 219000 222000 224000 
##      2     18     15      6      3      3     20     12      6     14 
## 225000 227000 229000 230000 231000 235000 236000 238626 239000 239351 
##      6      3      5     20     17     21      6     12      5      2 
## 240000 241000 244000 245000 247000 248000 252000 253000 254000 255000 
##      4      2      8     15      2     10     18     16      4      7 
## 256000 258000 261000 262000 263000 264000 265000 266000 268000 270000 
##     10     13     21     17     24     25     12      2     24      7 
## 273000 274000 275000 277000 278000 279000 281000 287000 294000 296000 
##      7     10     31      6     11     16     26      4      1      6 
## 299000 301000 304000 
##     15      4      5
hist(ex$RCIAADT)

library(scales)
library(ggplot2)
m1 <-ggplot(ex, aes(x=SKIDNUMBER)) + geom_histogram(colour = "#4E2A1E", fill = "#046C9A")+theme_bw()+scale_y_continuous(limits=c(0,2200))+labs(title="Excellent")+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 
m2 <- ggplot(md, aes(x=SKIDNUMBER)) + geom_histogram(colour = "#4E2A1E", fill = "#5BBCD6")+theme_bw()+scale_y_continuous(limits=c(0,2200))+labs(title="Medium")+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 
m3 <- ggplot(pr, aes(x=SKIDNUMBER)) + geom_histogram(colour = "#4E2A1E", fill = "#3F5151")+theme_bw()+scale_y_continuous(limits=c(0,2200))+labs(title="Poor")+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 

ex0 <- subset(ex, RCIAADT > 5000)
dim(ex0)
## [1] 11430    14
dim(ex)
## [1] 11666    14
md0 <- subset(md, RCIAADT > 500)
pr0 <- subset(pr, RCIAADT > 500)

ex1 <- ggplot(ex, aes(x=RCIAADT))
md1 <- ggplot(md, aes(x=RCIAADT))
pr1 <- ggplot(pr, aes(x=RCIAADT))
m01 <- ex1+ geom_histogram(aes(y = (..count..)/sum(..count..)), colour = "#4E2A1E",   fill = "#046C9A", breaks=c(0, 50000, 100000, 150000, 200000, 250000, 300000))+ scale_y_continuous(labels=percent, limits=c(0,0.7))+
  labs(x=" \n (d)", y="Percentage") +
  theme(text = element_text(size=30)) + theme_bw()+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 
m02 <- md1+ geom_histogram(aes(y = (..count..)/sum(..count..)), colour = "#4E2A1E",   fill = "#5BBCD6", breaks=c(0, 50000, 100000, 150000, 200000, 250000, 300000))+ scale_y_continuous(labels=percent, limits=c(0,0.7))+
  labs(x="AADT (vpd) \n (e)", y="Percentage") +
  theme(text = element_text(size=30)) + theme_bw()+labs(y=" ")+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 
  
m03 <- pr1+ geom_histogram(aes(y = (..count..)/sum(..count..)), colour = "#4E2A1E",   fill = "#C93312", breaks=c(0, 50000, 100000, 150000, 200000, 250000, 300000))+ scale_y_continuous(labels=percent, limits=c(0,0.7))+
  labs(x=" \n (f)", y="Percentage") +
  theme(text = element_text(size=30)) + theme_bw()+labs(y=" ")+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 





ex1 <- ggplot(ex, aes(x=RCIMAXSPD))
md1 <- ggplot(md, aes(x=RCIMAXSPD))
pr1 <- ggplot(pr, aes(x=RCIMAXSPD))
m1 <- ex1+ geom_bar(aes(y = (..count..)/sum(..count..)), colour = "#4E2A1E",   fill = "#046C9A")+ scale_y_continuous(labels=percent, limits=c(0,0.15))+
  labs(x=" \n (a)", y="Percentage") +
  theme(text = element_text(size=30)) + theme_bw()+labs(title="Excellent")+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 
m2 <- md1+ geom_bar(aes(y = (..count..)/sum(..count..)), colour = "#4E2A1E",   fill = "#5BBCD6")+ scale_y_continuous(labels=percent, limits=c(0,0.15))+
  labs(x="Max. Speed (mph) \n (b)", y="Percentage") +
  theme(text = element_text(size=30)) + theme_bw()+labs(y=" ")+labs(title="Medium")+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 
m3 <- pr1+ geom_bar(aes(y = (..count..)/sum(..count..)), colour = "#4E2A1E",   fill = "#C93312")+ scale_y_continuous(labels=percent, limits=c(0,0.15))+
  labs(x=" \n (c)", y="Percentage") +
  theme(text = element_text(size=30)) + theme_bw()+labs(y=" ")+labs(title="Poor")+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 

exx <- subset(ex, SKIDNUMBER >20)
mdd <- subset(md, SKIDNUMBER >20)
prr <- subset(pr, SKIDNUMBER >20)
ex3 <- ggplot(exx, aes(x=SKIDNUMBER))
md3 <- ggplot(mdd, aes(x=SKIDNUMBER))
pr3 <- ggplot(prr, aes(x=SKIDNUMBER))
m4 <- ex3+ geom_histogram(aes(y = (..count..)/sum(..count..)), colour = "#4E2A1E",   fill = "#046C9A")+ scale_y_continuous(labels=percent, limits=c(0,0.20))+
  labs(x=" \n (g)", y="Percentage") +
  theme(text = element_text(size=30)) + theme_bw()+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 
m5 <- md3+ geom_histogram(aes(y = (..count..)/sum(..count..)), colour = "#4E2A1E",   fill = "#5BBCD6")+ scale_y_continuous(labels=percent, limits=c(0,0.20))+
  labs(x="Skid Number \n (h)", y="Percentage") +
  theme(text = element_text(size=30)) + theme_bw()+labs(y=" ")+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 
m6 <- pr3+ geom_histogram(aes(y = (..count..)/sum(..count..)), colour = "#4E2A1E",   fill = "#C93312")+ scale_y_continuous(labels=percent, limits=c(0,0.20))+
  labs(x=" \n (i)", y="Percentage") +
  theme(text = element_text(size=30)) + theme_bw()+labs(y=" ")+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 

ex3 <- ggplot(ex, aes(x=AGE_DRPED))
md3 <- ggplot(md, aes(x=AGE_DRPED))
pr3 <- ggplot(pr, aes(x=AGE_DRPED))
m4a <- ex3+ geom_histogram(aes(y = (..count..)/sum(..count..)), colour = "#4E2A1E",   fill = "#046C9A")+ scale_y_continuous(labels=percent, limits=c(0,0.125))+
  labs(x=" \n (j)", y="Percentage") +
  theme(text = element_text(size=30)) + theme_bw()+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 
m5a <- md3+ geom_histogram(aes(y = (..count..)/sum(..count..)), colour = "#4E2A1E",   fill = "#5BBCD6")+ scale_y_continuous(labels=percent, limits=c(0,0.125))+
  labs(x="Driver Age \n (k)", y="Percentage") +
  theme(text = element_text(size=30)) + theme_bw()+labs(y=" ")+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 
m6a <- pr3+ geom_histogram(aes(y = (..count..)/sum(..count..)), colour = "#4E2A1E",   fill = "#C93312")+ scale_y_continuous(labels=percent, limits=c(0,0.125))+
  labs(x=" \n (l)", y="Percentage") +
  theme(text = element_text(size=30)) + theme_bw()+labs(y=" ")+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 

ex4 <- ggplot(ex, aes(x=RCIAVGTFCT))
md4 <- ggplot(md, aes(x=RCIAVGTFCT))
pr4 <- ggplot(pr, aes(x=RCIAVGTFCT))
m4b <- ex4+ geom_histogram(aes(y = (..count..)/sum(..count..)), colour = "#4E2A1E",   fill = "#046C9A")+ scale_y_continuous(labels=percent, limits=c(0,0.125))+
  labs(x=" \n (m)", y="Percentage") +
  theme(text = element_text(size=30)) + theme_bw()+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 
m5b <- md4+ geom_histogram(aes(y = (..count..)/sum(..count..)), colour = "#4E2A1E",   fill = "#5BBCD6")+ scale_y_continuous(labels=percent, limits=c(0,0.125))+
  labs(x="Percentage of Trucks \n (n)", y="Percentage") +
  theme(text = element_text(size=30)) + theme_bw()+labs(y=" ")+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 
m6b <- pr4+ geom_histogram(aes(y = (..count..)/sum(..count..)), colour = "#4E2A1E",   fill = "#C93312")+ scale_y_continuous(labels=percent, limits=c(0,0.125))+
  labs(x=" \n (o)", y="Percentage") +
  theme(text = element_text(size=30)) + theme_bw()+labs(y=" ")+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 

ex4t <- ggplot(ex, aes(x=AVG_SH_WID))
md4t <- ggplot(md, aes(x=AVG_SH_WID))
pr4t <- ggplot(pr, aes(x=AVG_SH_WID))
m4c <- ex4t+ geom_histogram(aes(y = (..count..)/sum(..count..)), colour = "#4E2A1E",   fill = "#046C9A")+ scale_y_continuous(labels=percent, limits=c(0,0.125))+
  labs(x=" \n (p)", y="Percentage") +
  theme(text = element_text(size=30)) + theme_bw()+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 
m5c <- md4t+ geom_histogram(aes(y = (..count..)/sum(..count..)), colour = "#4E2A1E",   fill = "#5BBCD6")+ scale_y_continuous(labels=percent, limits=c(0,0.125))+
  labs(x="Avg. Shoulder Width (ft.) \n (q)", y="Percentage") +
  theme(text = element_text(size=30)) + theme_bw()+labs(y=" ")+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 
m6c <- pr4t+ geom_histogram(aes(y = (..count..)/sum(..count..)), colour = "#4E2A1E",   fill = "#C93312")+ scale_y_continuous(labels=percent, limits=c(0,0.125))+
  labs(x=" \n (r)", y="Percentage") +
  theme(text = element_text(size=30)) + theme_bw()+labs(y=" ")+theme(text = element_text(size=16), axis.text = element_text(size = 16), strip.text = element_text(size = 17, colour = "#550307")) 



library(grid)
grid.newpage()
pushViewport(viewport(layout = grid.layout(6, 3)))
vplayout <- function(x, y)
  viewport(layout.pos.row = x, layout.pos.col = y)
print(m1, vp = vplayout(1, 1))
print(m2, vp = vplayout(1, 2))
print(m3, vp = vplayout(1, 3))
print(m01, vp = vplayout(2, 1))
print(m02, vp = vplayout(2, 2))
print(m03, vp = vplayout(2, 3))
print(m4, vp = vplayout(3, 1))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
print(m5, vp = vplayout(3, 2))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
print(m6, vp = vplayout(3, 3))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
print(m4a, vp = vplayout(4, 1))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
print(m5a, vp = vplayout(4, 2))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
print(m6a, vp = vplayout(4, 3))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
print(m4b, vp = vplayout(5, 1))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
print(m5b, vp = vplayout(5, 2))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
print(m6b, vp = vplayout(5, 3))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
print(m4c, vp = vplayout(6, 1))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
print(m5c, vp = vplayout(6, 2))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
print(m6c, vp = vplayout(6, 3))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.