1. Read Data

t = "F:\\TAI LIEU THAM KHAO\\Thesis Thao\\du lieu.csv"
DL = read.csv(t, header = T)
head(DL)
##   Temp.pav Hour Depth Method Temp.env
## 1    31.00   24     4      1    32.61
## 2    34.75   24     4      2    32.61
## 3    30.25   24     4      3    32.61
## 4    30.75   24     8      1    32.61
## 5    35.75   24     8      2    32.61
## 6    31.50   24     8      3    32.61
fix(DL)
names(DL)
## [1] "Temp.pav" "Hour"     "Depth"    "Method"   "Temp.env"
str(DL)
## 'data.frame':    3159 obs. of  5 variables:
##  $ Temp.pav: num  31 34.8 30.2 30.8 35.8 ...
##  $ Hour    : num  24 24 24 24 24 24 24 24 24 1 ...
##  $ Depth   : num  4 4 4 8 8 8 12 12 12 4 ...
##  $ Method  : num  1 2 3 1 2 3 1 2 3 1 ...
##  $ Temp.env: Factor w/ 103 levels " -   ","26.9",..: 56 56 56 56 56 56 56 56 56 18 ...
dim(DL)
## [1] 3159    5
summary(DL)
##     Temp.pav          Hour          Depth        Method     Temp.env   
##  Min.   :29.25   Min.   : 1.0   Min.   : 4   Min.   :1   29.2   :  90  
##  1st Qu.:34.25   1st Qu.: 6.0   1st Qu.: 4   1st Qu.:1   30.1   :  81  
##  Median :36.75   Median :13.0   Median : 8   Median :2   30.9   :  81  
##  Mean   :37.63   Mean   :12.5   Mean   : 8   Mean   :2   28.3   :  72  
##  3rd Qu.:40.00   3rd Qu.:19.0   3rd Qu.:12   3rd Qu.:3   28.8   :  72  
##  Max.   :57.00   Max.   :24.0   Max.   :12   Max.   :3   31     :  72  
##                                                          (Other):2691
attach(DL)
DL = within(DL, {
  Temp.pav = as.numeric(Temp.pav)
  Hour = as.numeric(Hour)
  Depth = as.numeric(Depth)
  Method = factor(Method, labels = c("VD", "NT", "BB"))
  Temp.env = as.numeric(Temp.env)
    } )
head(DL)
##   Temp.pav Hour Depth Method Temp.env
## 1    31.00   24     4     VD       56
## 2    34.75   24     4     NT       56
## 3    30.25   24     4     BB       56
## 4    30.75   24     8     VD       56
## 5    35.75   24     8     NT       56
## 6    31.50   24     8     BB       56
str(DL)
## 'data.frame':    3159 obs. of  5 variables:
##  $ Temp.pav: num  31 34.8 30.2 30.8 35.8 ...
##  $ Hour    : num  24 24 24 24 24 24 24 24 24 1 ...
##  $ Depth   : num  4 4 4 8 8 8 12 12 12 4 ...
##  $ Method  : Factor w/ 3 levels "VD","NT","BB": 1 2 3 1 2 3 1 2 3 1 ...
##  $ Temp.env: num  56 56 56 56 56 56 56 56 56 18 ...

2. Descriptive analyse

# Descriptive analyse with package "table 1" - sort by Bus variable
  ## install.packages("table1", dependencies = T)
library(table1)
## 
## Attaching package: 'table1'
## The following objects are masked from 'package:base':
## 
##     units, units<-
table1 (~ Temp.pav + Hour + Depth + Temp.env| Method , data = DL)
VD
(n=1053)
NT
(n=1053)
BB
(n=1053)
Overall
(n=3159)
Temp.pav
Mean (SD) 37.0 (4.40) 40.6 (5.31) 35.3 (2.86) 37.6 (4.84)
Median [Min, Max] 36.3 [29.3, 51.5] 39.3 [31.5, 57.0] 35.3 [29.3, 42.8] 36.8 [29.3, 57.0]
Hour
Mean (SD) 12.5 (7.00) 12.5 (7.00) 12.5 (7.00) 12.5 (7.00)
Median [Min, Max] 13.0 [1.00, 24.0] 13.0 [1.00, 24.0] 13.0 [1.00, 24.0] 13.0 [1.00, 24.0]
Depth
Mean (SD) 8.00 (3.27) 8.00 (3.27) 8.00 (3.27) 8.00 (3.27)
Median [Min, Max] 8.00 [4.00, 12.0] 8.00 [4.00, 12.0] 8.00 [4.00, 12.0] 8.00 [4.00, 12.0]
Temp.env
Mean (SD) 46.7 (25.8) 46.7 (25.8) 46.7 (25.8) 46.7 (25.8)
Median [Min, Max] 42.0 [1.00, 103] 42.0 [1.00, 103] 42.0 [1.00, 103] 42.0 [1.00, 103]
table1 (~ Temp.pav + Hour + Depth + Temp.env + Method , data = DL)
Overall
(n=3159)
Temp.pav
Mean (SD) 37.6 (4.84)
Median [Min, Max] 36.8 [29.3, 57.0]
Hour
Mean (SD) 12.5 (7.00)
Median [Min, Max] 13.0 [1.00, 24.0]
Depth
Mean (SD) 8.00 (3.27)
Median [Min, Max] 8.00 [4.00, 12.0]
Temp.env
Mean (SD) 46.7 (25.8)
Median [Min, Max] 42.0 [1.00, 103]
Method
VD 1053 (33.3%)
NT 1053 (33.3%)
BB 1053 (33.3%)
# Descriptive analyse with package "compareGroups" - sort by Bus variable (hon table1 la cung cap them tri so p. Doi voi bien phan loai, tri so p cung duoc tinh theo Chi-Square)
library(compareGroups)
## Loading required package: SNPassoc
## Loading required package: haplo.stats
## Loading required package: survival
## Loading required package: mvtnorm
## Loading required package: parallel
## Registered S3 method overwritten by 'SNPassoc':
##   method            from       
##   summary.haplo.glm haplo.stats
t = compareGroups(Method ~ Temp.pav + Hour + Depth + Temp.env, data = DL)
createTable(t)
## 
## --------Summary descriptives table by 'Method'---------
## 
## ______________________________________________________ 
##              VD          NT          BB      p.overall 
##            N=1053      N=1053      N=1053              
## ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ 
## Temp.pav 37.0 (4.40) 40.6 (5.31) 35.3 (2.86)  <0.001   
## Hour     12.5 (7.00) 12.5 (7.00) 12.5 (7.00)   1.000   
## Depth    8.00 (3.27) 8.00 (3.27) 8.00 (3.27)   1.000   
## Temp.env 46.7 (25.8) 46.7 (25.8) 46.7 (25.8)   1.000   
## ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

3. Descriptive analyse by graphs

library(magrittr)
library(tidyverse)
## -- Attaching packages -------------------------------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.2.1     v purrr   0.3.3
## v tibble  2.1.3     v dplyr   0.8.3
## v tidyr   1.0.0     v stringr 1.4.0
## v readr   1.3.1     v forcats 0.4.0
## -- Conflicts ----------------------------------------------------------------- tidyverse_conflicts() --
## x tidyr::extract()   masks magrittr::extract()
## x dplyr::filter()    masks stats::filter()
## x dplyr::lag()       masks stats::lag()
## x purrr::set_names() masks magrittr::set_names()
library(ggplot2)
library(car)
## Loading required package: carData
## Registered S3 methods overwritten by 'car':
##   method                          from
##   influence.merMod                lme4
##   cooks.distance.influence.merMod lme4
##   dfbeta.influence.merMod         lme4
##   dfbetas.influence.merMod        lme4
## 
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
## 
##     recode
## The following object is masked from 'package:purrr':
## 
##     some
# Correlation 
## All variables
library(psych)
## 
## Attaching package: 'psych'
## The following object is masked from 'package:car':
## 
##     logit
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
attach(DL)
## The following objects are masked from DL (pos = 23):
## 
##     Depth, Hour, Method, Temp.env, Temp.pav
vars = cbind(Temp.pav, Hour, Depth, Method, Temp.env)
pairs.panels(vars)
pairs.panels(DL)

## Only continuous variables
vars1 = cbind(Temp.pav, Hour, Depth, Temp.env)
pairs.panels(vars1)

# Statistic Analysis by boxplot (continuous variales)
DL %>%
  group_by(Temp.pav, Method) %>%
  count() %>% 
  ggplot(aes(x = Method, y = Temp.pav, fill = Method)) +
  geom_boxplot() +
  xlab("Method") +
  ylab("Temperature of pavement") +
  ggtitle("Boxplot of Temperature of Pavement ~ Method")

DL %>%
  group_by(Temp.env, Method) %>%
  count() %>% 
  ggplot(aes(x = Method, y = Temp.env, fill = Method)) +
  geom_boxplot() +
  xlab("Method") +
  ylab("Temperature of environment") +
  ggtitle("Boxplot of Temperature of environment ~ Method")

DL %>%
  group_by(Hour, Method) %>%
  count() %>% 
  ggplot(aes(x = Method, y = Hour, fill = Method)) +
  geom_boxplot() +
  xlab("Method") +
  ylab("Hour of day") +
  ggtitle("Boxplot of Hour of date ~ Method")

DL %>%
  group_by(Depth, Method) %>%
  count() %>% 
  ggplot(aes(x = Method, y = Depth, fill = Method)) +
  geom_boxplot() +
  xlab("Method") +
  ylab("Depth") +
  ggtitle("Boxplot of Depth ~ Method")

# Statistic Analysis by Histogram (Countinuous Variables) 
ggplot(DL, aes(x=Temp.pav, fill = Method, color = Method)) +
  geom_histogram (position = "dodge") +
  xlab("Temperature of pavement") +
  ylab("Count") +
  ggtitle("Histogram of Temperature of pavement")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

ggplot(DL, aes(x=Temp.env, fill = Method, color = Method)) +
  geom_histogram (position = "dodge") +
  xlab("Temperature of environment") +
  ylab("Count") +
  ggtitle("Histogram of Temperature of environment")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

# Statistic Analysis by geom_point - Correlation with a couple of variables (Tuong quan don gian = Tan xa)
ggplot(DL, aes(x = Temp.env, y = Temp.pav, fill = Method)) +
  geom_point(aes(col = Method, size = 0.000001)) +
  geom_smooth(method = "lm", formula = y ~ x + I(x^2)) +
  xlab("Temperature of environment") +
  ylab("Temperature of pavement") +
  ggtitle("Temperature of Pavement ~ Temperature of environment")

ggplot(DL, aes(x = Temp.env, y = Hour, fill = Method)) +
  geom_point(aes(col = Method, size = 0.000001)) +
  geom_smooth(method = "lm") +
  xlab("Temperature of environment") +
  ylab("Hour") +
  ggtitle("Hour ~ Temperature of environment")

ggplot(DL, aes(x = Hour, y = Temp.pav)) +
  geom_point(aes(col = Method, size = 0.000001)) +
  xlab("Hour") +
  ylab("Temperature of pavement") +
  ggtitle("Temperature of Pavement ~ Hour")

ggplot(DL, aes(x = Depth, y = Temp.pav)) +
  geom_point(aes(col = Method, size = 0.000001)) +
  xlab("Depth") +
  ylab("Temperature of pavement") +
  ggtitle("Temperature of Pavement ~ Depth")

library(car)
attach(DL)
## The following objects are masked from DL (pos = 3):
## 
##     Depth, Hour, Method, Temp.env, Temp.pav
## The following objects are masked from DL (pos = 24):
## 
##     Depth, Hour, Method, Temp.env, Temp.pav
scatterplot(Temp.pav ~ Temp.env)

scatterplot(Temp.pav ~ Temp.env, main = "Temperature of pavement ~ Temperature of environment", xlab = "Temperature of environment", ylab = "Temperature of pavement")

Test the differences of Temperature of pavement between different methoths

# F-test (T-test voi 2 nhom)
## Dung anova
av <- aov(Temp.pav ~ as.factor(Method))
av
## Call:
##    aov(formula = Temp.pav ~ as.factor(Method))
## 
## Terms:
##                 as.factor(Method) Residuals
## Sum of Squares           15288.70  58643.85
## Deg. of Freedom                 2      3156
## 
## Residual standard error: 4.31065
## Estimated effects may be unbalanced
summary(av)
##                     Df Sum Sq Mean Sq F value Pr(>F)    
## as.factor(Method)    2  15289    7644   411.4 <2e-16 ***
## Residuals         3156  58644      19                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
TukeyHSD(av) # Dieu chinh p theo pp Tukey
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = Temp.pav ~ as.factor(Method))
## 
## $`as.factor(Method)`
##            diff       lwr       upr p adj
## NT-VD  3.520418  3.079913  3.960923     0
## BB-VD -1.773029 -2.213535 -1.332524     0
## BB-NT -5.293447 -5.733952 -4.852942     0
## Dung pairwise.t.test va dieu chinh p d ss nhieu nhom
pairwise.t.test(Temp.pav, Method, p.adjust.method = "bonferroni")
## 
##  Pairwise comparisons using t tests with pooled SD 
## 
## data:  Temp.pav and Method 
## 
##    VD     NT    
## NT <2e-16 -     
## BB <2e-16 <2e-16
## 
## P value adjustment method: bonferroni

Regression Model

# Simple linear regression models
summary(lm(Temp.pav ~ Hour, data = DL))
## 
## Call:
## lm(formula = Temp.pav ~ Hour, data = DL)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -9.6184 -3.2289 -0.7289  2.0503 19.2742 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  35.1936     0.1691  208.14   <2e-16 ***
## Hour          0.1948     0.0118   16.51   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.643 on 3157 degrees of freedom
## Multiple R-squared:  0.07947,    Adjusted R-squared:  0.07918 
## F-statistic: 272.5 on 1 and 3157 DF,  p-value: < 2.2e-16
summary(lm(Temp.pav ~ Depth, data = DL))
## 
## Call:
## lm(formula = Temp.pav ~ Depth, data = DL)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -8.2452 -3.3792 -0.9952  2.3708 19.5048 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 37.36119    0.22774 164.050   <2e-16 ***
## Depth        0.03351    0.02636   1.271    0.204    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.838 on 3157 degrees of freedom
## Multiple R-squared:  0.0005117,  Adjusted R-squared:  0.0001951 
## F-statistic: 1.616 on 1 and 3157 DF,  p-value: 0.2037
summary(lm(Temp.pav ~ factor(Method), data = DL))
## 
## Call:
## lm(formula = Temp.pav ~ factor(Method), data = DL)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -9.0672 -3.2737 -0.5672  2.6828 16.4328 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       37.0468     0.1328 278.883   <2e-16 ***
## factor(Method)NT   3.5204     0.1879  18.739   <2e-16 ***
## factor(Method)BB  -1.7730     0.1879  -9.438   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.311 on 3156 degrees of freedom
## Multiple R-squared:  0.2068, Adjusted R-squared:  0.2063 
## F-statistic: 411.4 on 2 and 3156 DF,  p-value: < 2.2e-16
summary(lm(Temp.pav ~ Temp.env, data = DL))
## 
## Call:
## lm(formula = Temp.pav ~ Temp.env, data = DL)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -9.1116 -2.6014 -0.1022  2.0891 15.1144 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 32.067132   0.137643  232.97   <2e-16 ***
## Temp.env     0.119006   0.002578   46.16   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.739 on 3157 degrees of freedom
## Multiple R-squared:  0.403,  Adjusted R-squared:  0.4028 
## F-statistic:  2131 on 1 and 3157 DF,  p-value: < 2.2e-16
# Multiple variables regression model
m1 <- summary(lm(Temp.pav ~ Hour + Depth + factor(Method)+ Temp.env, data = DL))
m1
## 
## Call:
## lm(formula = Temp.pav ~ Hour + Depth + factor(Method) + Temp.env, 
##     data = DL)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -8.4733 -2.1042 -0.0814  1.9489 12.4180 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      30.275010   0.197993 152.909   <2e-16 ***
## Hour              0.098435   0.007700  12.784   <2e-16 ***
## Depth             0.033505   0.016058   2.087    0.037 *  
## factor(Method)NT  3.520418   0.128461  27.405   <2e-16 ***
## factor(Method)BB -1.773029   0.128461 -13.802   <2e-16 ***
## Temp.env          0.112818   0.002089  54.001   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.948 on 3153 degrees of freedom
## Multiple R-squared:  0.6295, Adjusted R-squared:  0.6289 
## F-statistic:  1071 on 5 and 3153 DF,  p-value: < 2.2e-16
## Xet them tuong tac giua bien Temp.env va Hour
m2 <- summary(lm(Temp.pav ~ Hour + Depth + factor(Method)+ Temp.env + Hour:Temp.env, data = DL))
m2
## 
## Call:
## lm(formula = Temp.pav ~ Hour + Depth + factor(Method) + Temp.env + 
##     Hour:Temp.env, data = DL)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -10.7633  -1.8774  -0.0705   1.7678  12.4405 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      33.1318927  0.2443428 135.596   <2e-16 ***
## Hour             -0.1865645  0.0171791 -10.860   <2e-16 ***
## Depth             0.0335055  0.0152664   2.195   0.0283 *  
## factor(Method)NT  3.5204179  0.1221314  28.825   <2e-16 ***
## factor(Method)BB -1.7730294  0.1221314 -14.517   <2e-16 ***
## Temp.env          0.0054494  0.0061826   0.881   0.3782    
## Hour:Temp.env     0.0091412  0.0004985  18.338   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.802 on 3152 degrees of freedom
## Multiple R-squared:  0.6652, Adjusted R-squared:  0.6645 
## F-statistic:  1044 on 6 and 3152 DF,  p-value: < 2.2e-16
m3 <- summary(lm(Temp.pav ~ Depth + factor(Method)+ Temp.env, data = DL))
m3
## 
## Call:
## lm(formula = Temp.pav ~ Depth + factor(Method) + Temp.env, data = DL)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -7.4132 -2.1510 -0.1583  2.0947 12.3105 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      31.216625   0.188455 165.645   <2e-16 ***
## Depth             0.033505   0.016466   2.035    0.042 *  
## factor(Method)NT  3.520418   0.131727  26.725   <2e-16 ***
## factor(Method)BB -1.773029   0.131727 -13.460   <2e-16 ***
## Temp.env          0.119006   0.002084  57.105   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.023 on 3154 degrees of freedom
## Multiple R-squared:  0.6103, Adjusted R-squared:  0.6098 
## F-statistic:  1235 on 4 and 3154 DF,  p-value: < 2.2e-16
# Find Parsimonious model - Tìm mô hình tối ưu
library(BMA)
## Loading required package: leaps
## Loading required package: robustbase
## 
## Attaching package: 'robustbase'
## The following object is masked from 'package:survival':
## 
##     heart
## Loading required package: inline
## Loading required package: rrcov
## Scalable Robust Estimators with High Breakdown Point (version 1.4-9)
xvars <- cbind (DL$Hour, DL$Depth, DL$Method, DL$Temp.env)
y <- DL$Temp.pav
bma.search <- bicreg (xvars, y, strict = F, OR = 20)
summary(bma.search)
## 
## Call:
## bicreg(x = xvars, y = y, strict = F, OR = 20)
## 
## 
##   2  models were selected
##  Best  2  models (cumulative posterior probability =  1 ): 
## 
##            p!=0    EV        SD        model 1     model 2   
## Intercept  100.0  32.879632  0.238622   3.290e+01   3.263e+01
## X1         100.0   0.098435  0.009425   9.843e-02   9.843e-02
## X2           7.1   0.002364  0.010043       .       3.351e-02
## X3         100.0  -0.886515  0.078615  -8.865e-01  -8.865e-01
## X4         100.0   0.112818  0.002557   1.128e-01   1.128e-01
##                                                              
## nVar                                      3           4      
## r2                                      0.445       0.445    
## BIC                                    -1.833e+03  -1.828e+03
## post prob                               0.929       0.071
m4 <- summary(lm(Temp.pav ~ Hour + factor(Method)+ Temp.env, data = DL))
m4
## 
## Call:
## lm(formula = Temp.pav ~ Hour + factor(Method) + Temp.env, data = DL)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -8.473 -2.114 -0.109  1.959 12.284 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      30.543054   0.150743  202.62   <2e-16 ***
## Hour              0.098435   0.007704   12.78   <2e-16 ***
## factor(Method)NT  3.520418   0.128529   27.39   <2e-16 ***
## factor(Method)BB -1.773029   0.128529  -13.79   <2e-16 ***
## Temp.env          0.112818   0.002090   53.97   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.949 on 3154 degrees of freedom
## Multiple R-squared:  0.629,  Adjusted R-squared:  0.6285 
## F-statistic:  1337 on 4 and 3154 DF,  p-value: < 2.2e-16
m5 <- summary(lm(Temp.pav ~ Hour + factor(Method)+ Temp.env + Hour:Temp.env, data = DL))
m5
## 
## Call:
## lm(formula = Temp.pav ~ Hour + factor(Method) + Temp.env + Hour:Temp.env, 
##     data = DL)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -10.7633  -1.8787  -0.0879   1.8055  12.3065 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      33.3999364  0.2117582 157.727   <2e-16 ***
## Hour             -0.1865645  0.0171895 -10.853   <2e-16 ***
## factor(Method)NT  3.5204179  0.1222053  28.807   <2e-16 ***
## factor(Method)BB -1.7730294  0.1222053 -14.509   <2e-16 ***
## Temp.env          0.0054494  0.0061864   0.881    0.378    
## Hour:Temp.env     0.0091412  0.0004988  18.327   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.804 on 3153 degrees of freedom
## Multiple R-squared:  0.6647, Adjusted R-squared:  0.6641 
## F-statistic:  1250 on 5 and 3153 DF,  p-value: < 2.2e-16