The Tests Needed

We determined that the variable that we needed to test was IntermittentIceCover, which is a dichotomous variable. This means that the data did not have to meet the assumptions of normality.

Correlation Test

Before running a logistic regression, we wanted to analyze all of the numerical variables that were included in the data set in order to find any preexisting patterns that exist between them. The easiest way for us to do this was through the use of a correlation matrix, which is shown below.

setwd("C:/Users/Jude/Desktop/Datasets")
lake <- read.csv("lakeData.csv", stringsAsFactors = TRUE)
data <- na.omit(lake)
library(ggplot2)
library(dplyr)

# Correlation Table
source("http://www.sthda.com/upload/rquery_cormat.r")
attach(data)
data <- na.omit(data)
mydata2 <- data[, c(7,8,9,10,11,12,13,14,15,16,17,18,19)]
rquery.cormat(mydata2, type="flatten")

## $r
##                           row               column     cor       p
## 1  IntermittentIceCoverNumber  MeanAnnualAirTemp_c  0.2400 6.4e-04
## 2  IntermittentIceCoverNumber          Elevation_m -0.1500 3.7e-02
## 3         MeanAnnualAirTemp_c          Elevation_m -0.3600 1.3e-07
## 4  IntermittentIceCoverNumber    WatershedArea_km2  0.0011 9.9e-01
## 5         MeanAnnualAirTemp_c    WatershedArea_km2 -0.1600 2.4e-02
## 6                 Elevation_m    WatershedArea_km2  0.0720 3.1e-01
## 7  IntermittentIceCoverNumber   ShorelineLength_km -0.0200 7.8e-01
## 8         MeanAnnualAirTemp_c   ShorelineLength_km -0.2300 9.0e-04
## 9                 Elevation_m   ShorelineLength_km -0.1300 5.6e-02
## 10          WatershedArea_km2   ShorelineLength_km  0.5300 3.4e-16
## 11 IntermittentIceCoverNumber MeanDischarge_m3_sec  0.1000 1.4e-01
## 12        MeanAnnualAirTemp_c MeanDischarge_m3_sec -0.2500 3.6e-04
## 13                Elevation_m MeanDischarge_m3_sec  0.0290 6.8e-01
## 14          WatershedArea_km2 MeanDischarge_m3_sec  0.6700 2.3e-28
## 15         ShorelineLength_km MeanDischarge_m3_sec  0.4800 3.1e-13
## 16 IntermittentIceCoverNumber          MeanDepth_m  0.1600 2.6e-02
## 17        MeanAnnualAirTemp_c          MeanDepth_m -0.3000 9.8e-06
## 18                Elevation_m          MeanDepth_m  0.2200 1.4e-03
## 19          WatershedArea_km2          MeanDepth_m  0.3900 1.1e-08
## 20         ShorelineLength_km          MeanDepth_m  0.3300 1.1e-06
## 21       MeanDischarge_m3_sec          MeanDepth_m  0.7200 1.5e-33
## 22 IntermittentIceCoverNumber           Volume_mcm  0.0810 2.5e-01
## 23        MeanAnnualAirTemp_c           Volume_mcm -0.2600 1.3e-04
## 24                Elevation_m           Volume_mcm  0.0800 2.6e-01
## 25          WatershedArea_km2           Volume_mcm  0.4600 4.4e-12
## 26         ShorelineLength_km           Volume_mcm  0.4200 3.2e-10
## 27       MeanDischarge_m3_sec           Volume_mcm  0.8100 9.5e-49
## 28                MeanDepth_m           Volume_mcm  0.8700 2.6e-64
## 29 IntermittentIceCoverNumber      SurfaceArea_km2  0.1200 9.5e-02
## 30        MeanAnnualAirTemp_c      SurfaceArea_km2 -0.3700 4.6e-08
## 31                Elevation_m      SurfaceArea_km2 -0.0270 7.0e-01
## 32          WatershedArea_km2      SurfaceArea_km2  0.5100 9.9e-15
## 33         ShorelineLength_km      SurfaceArea_km2  0.5600 2.5e-18
## 34       MeanDischarge_m3_sec      SurfaceArea_km2  0.6000 4.6e-21
## 35                MeanDepth_m      SurfaceArea_km2  0.5200 7.9e-16
## 36                 Volume_mcm      SurfaceArea_km2  0.6500 1.7e-25
## 37 IntermittentIceCoverNumber       MaximumDepth_m  0.3300 1.2e-06
## 38        MeanAnnualAirTemp_c       MaximumDepth_m -0.3300 1.8e-06
## 39                Elevation_m       MaximumDepth_m  0.0280 6.9e-01
## 40          WatershedArea_km2       MaximumDepth_m  0.2900 2.2e-05
## 41         ShorelineLength_km       MaximumDepth_m  0.3500 2.5e-07
## 42       MeanDischarge_m3_sec       MaximumDepth_m  0.5600 6.9e-18
## 43                MeanDepth_m       MaximumDepth_m  0.7600 7.3e-40
## 44                 Volume_mcm       MaximumDepth_m  0.5800 4.8e-20
## 45            SurfaceArea_km2       MaximumDepth_m  0.5600 6.5e-18
## 46 IntermittentIceCoverNumber   ResidenceTime_days -0.0730 3.0e-01
## 47        MeanAnnualAirTemp_c   ResidenceTime_days -0.3000 1.8e-05
## 48                Elevation_m   ResidenceTime_days  0.0170 8.1e-01
## 49          WatershedArea_km2   ResidenceTime_days -0.0300 6.7e-01
## 50         ShorelineLength_km   ResidenceTime_days  0.2400 4.4e-04
## 51       MeanDischarge_m3_sec   ResidenceTime_days -0.0690 3.3e-01
## 52                MeanDepth_m   ResidenceTime_days  0.1300 5.8e-02
## 53                 Volume_mcm   ResidenceTime_days  0.1900 6.3e-03
## 54            SurfaceArea_km2   ResidenceTime_days  0.3700 3.8e-08
## 55             MaximumDepth_m   ResidenceTime_days  0.0990 1.6e-01
## 56 IntermittentIceCoverNumber          Latitude_dd -0.0590 4.0e-01
## 57        MeanAnnualAirTemp_c          Latitude_dd -0.6100 6.4e-22
## 58                Elevation_m          Latitude_dd -0.2700 8.0e-05
## 59          WatershedArea_km2          Latitude_dd  0.0770 2.7e-01
## 60         ShorelineLength_km          Latitude_dd  0.2900 2.6e-05
## 61       MeanDischarge_m3_sec          Latitude_dd  0.1300 6.8e-02
## 62                MeanDepth_m          Latitude_dd  0.1100 1.3e-01
## 63                 Volume_mcm          Latitude_dd  0.1300 6.4e-02
## 64            SurfaceArea_km2          Latitude_dd  0.2600 1.4e-04
## 65             MaximumDepth_m          Latitude_dd  0.2500 4.0e-04
## 66         ResidenceTime_days          Latitude_dd  0.2200 1.6e-03
## 67 IntermittentIceCoverNumber         Longitude_dd -0.0079 9.1e-01
## 68        MeanAnnualAirTemp_c         Longitude_dd -0.3500 3.7e-07
## 69                Elevation_m         Longitude_dd -0.1400 3.9e-02
## 70          WatershedArea_km2         Longitude_dd -0.0790 2.6e-01
## 71         ShorelineLength_km         Longitude_dd  0.0590 4.0e-01
## 72       MeanDischarge_m3_sec         Longitude_dd -0.0930 1.9e-01
## 73                MeanDepth_m         Longitude_dd -0.0940 1.8e-01
## 74                 Volume_mcm         Longitude_dd -0.1200 9.1e-02
## 75            SurfaceArea_km2         Longitude_dd  0.0210 7.7e-01
## 76             MaximumDepth_m         Longitude_dd -0.0400 5.7e-01
## 77         ResidenceTime_days         Longitude_dd  0.1200 7.8e-02
## 78                Latitude_dd         Longitude_dd  0.6200 2.0e-23
## 
## $p
## NULL
## 
## $sym
## NULL

From this, we were able to predict what type of variables would likely have the most effect on each other when we reduced our logistic regressions

Logistic Regression

We ran a logistic regression to compare all numerical variables to IntermittentIceCover

# Logistic Regression of all Variables
GGG <- glm(IntermittentIceCover~MeanAnnualAirTemp_c+Latitude_dd+
             Longitude_dd+Elevation_m+SurfaceArea_km2+
             MeanDepth_m+MaximumDepth_m+
             WatershedArea_km2+ShorelineLength_km+
             ResidenceTime_days+MeanDischarge_m3_sec+
             Slope_degrees+ShorelineDevelopment+JFMCloudCover_perc+
             JFMPrecipitation_mm+DistanceToCoast_km+
             MaximumDistanceToLand_km, data=data, 
           family = binomial(link=logit))
summary(GGG)
## 
## Call:
## glm(formula = IntermittentIceCover ~ MeanAnnualAirTemp_c + Latitude_dd + 
##     Longitude_dd + Elevation_m + SurfaceArea_km2 + MeanDepth_m + 
##     MaximumDepth_m + WatershedArea_km2 + ShorelineLength_km + 
##     ResidenceTime_days + MeanDischarge_m3_sec + Slope_degrees + 
##     ShorelineDevelopment + JFMCloudCover_perc + JFMPrecipitation_mm + 
##     DistanceToCoast_km + MaximumDistanceToLand_km, family = binomial(link = logit), 
##     data = data)
## 
## Coefficients:
##                            Estimate Std. Error z value Pr(>|z|)
## (Intercept)              -8.695e+02  2.308e+05  -0.004    0.997
## MeanAnnualAirTemp_c       6.111e+01  2.163e+04   0.003    0.998
## Latitude_dd               8.031e-01  2.644e+03   0.000    1.000
## Longitude_dd              9.797e-01  1.154e+03   0.001    0.999
## Elevation_m              -2.352e-01  3.325e+02  -0.001    0.999
## SurfaceArea_km2           3.289e-01  5.123e+02   0.001    0.999
## MeanDepth_m              -2.095e+00  8.473e+02  -0.002    0.998
## MaximumDepth_m            2.195e+00  9.501e+02   0.002    0.998
## WatershedArea_km2        -3.612e-02  2.367e+01  -0.002    0.999
## ShorelineLength_km       -1.107e-01  1.247e+03   0.000    1.000
## ResidenceTime_days       -4.032e-02  2.252e+01  -0.002    0.999
## MeanDischarge_m3_sec      5.818e-01  2.362e+03   0.000    1.000
## Slope_degrees             5.263e+01  8.938e+03   0.006    0.995
## ShorelineDevelopment     -2.569e+01  3.154e+04  -0.001    0.999
## JFMCloudCover_perc        5.400e+00  4.311e+03   0.001    0.999
## JFMPrecipitation_mm      -9.397e-01  7.625e+02  -0.001    0.999
## DistanceToCoast_km       -9.089e-04  1.988e+02   0.000    1.000
## MaximumDistanceToLand_km  6.208e+01  4.549e+04   0.001    0.999
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1.2176e+02  on 203  degrees of freedom
## Residual deviance: 1.3102e-07  on 186  degrees of freedom
## AIC: 36
## 
## Number of Fisher Scoring iterations: 25
anova(GGG, test = "Chi")
## Analysis of Deviance Table
## 
## Model: binomial, link: logit
## 
## Response: IntermittentIceCover
## 
## Terms added sequentially (first to last)
## 
## 
##                          Df Deviance Resid. Df Resid. Dev  Pr(>Chi)    
## NULL                                       203    121.762              
## MeanAnnualAirTemp_c       1  14.3535       202    107.408 0.0001515 ***
## Latitude_dd               1   4.3622       201    103.046 0.0367449 *  
## Longitude_dd              1   0.2599       200    102.786 0.6101651    
## Elevation_m               1   1.4076       199    101.379 0.2354535    
## SurfaceArea_km2           1  11.1962       198     90.182 0.0008196 ***
## MeanDepth_m               1   3.7945       197     86.388 0.0514218 .  
## MaximumDepth_m            1  24.7842       196     61.604 6.412e-07 ***
## WatershedArea_km2         1   9.2727       195     52.331 0.0023260 ** 
## ShorelineLength_km        1   2.2404       194     50.091 0.1344501    
## ResidenceTime_days        1   2.3768       193     47.714 0.1231464    
## MeanDischarge_m3_sec      1   4.3476       192     43.366 0.0370616 *  
## Slope_degrees             1   7.7337       191     35.633 0.0054200 ** 
## ShorelineDevelopment      1   2.7666       190     32.866 0.0962505 .  
## JFMCloudCover_perc        1   5.5219       189     27.344 0.0187796 *  
## JFMPrecipitation_mm       1  27.3440       188      0.000 1.703e-07 ***
## DistanceToCoast_km        1   0.0000       187      0.000 0.9996442    
## MaximumDistanceToLand_km  1   0.0000       186      0.000 0.9997146    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
coef(GGG)
##              (Intercept)      MeanAnnualAirTemp_c              Latitude_dd 
##            -8.694605e+02             6.110844e+01             8.030856e-01 
##             Longitude_dd              Elevation_m          SurfaceArea_km2 
##             9.797457e-01            -2.352113e-01             3.289412e-01 
##              MeanDepth_m           MaximumDepth_m        WatershedArea_km2 
##            -2.095111e+00             2.194748e+00            -3.612144e-02 
##       ShorelineLength_km       ResidenceTime_days     MeanDischarge_m3_sec 
##            -1.106573e-01            -4.032433e-02             5.818277e-01 
##            Slope_degrees     ShorelineDevelopment       JFMCloudCover_perc 
##             5.263002e+01            -2.568664e+01             5.400217e+00 
##      JFMPrecipitation_mm       DistanceToCoast_km MaximumDistanceToLand_km 
##            -9.397280e-01            -9.088526e-04             6.208114e+01
exp(coef(GGG))
##              (Intercept)      MeanAnnualAirTemp_c              Latitude_dd 
##             0.000000e+00             3.459875e+26             2.232419e+00 
##             Longitude_dd              Elevation_m          SurfaceArea_km2 
##             2.663779e+00             7.904038e-01             1.389496e+00 
##              MeanDepth_m           MaximumDepth_m        WatershedArea_km2 
##             1.230566e-01             8.977742e+00             9.645232e-01 
##       ShorelineLength_km       ResidenceTime_days     MeanDischarge_m3_sec 
##             8.952455e-01             9.604779e-01             1.789306e+00 
##            Slope_degrees     ShorelineDevelopment       JFMCloudCover_perc 
##             7.193255e+22             6.989332e-12             2.214544e+02 
##      JFMPrecipitation_mm       DistanceToCoast_km MaximumDistanceToLand_km 
##             3.907341e-01             9.990916e-01             9.151568e+26

Reduced Logistic Regression

From the previous logistic regression, we were able to eliminate variables that were shown to have no significant effect on intermittent ice cover. We then ran a separate logistic regression to determine if the significance of any of the variables changed.

# Logistic regression with Removed Variables
IceCover <- glm(IntermittentIceCoverNumber~MeanAnnualAirTemp_c+Latitude_dd+
                  SurfaceArea_km2+MeanDepth_m+
                  MaximumDepth_m+WatershedArea_km2+
                  MeanDischarge_m3_sec+Slope_degrees+ShorelineDevelopment+
                  JFMPrecipitation_mm+JFMCloudCover_perc, 
                family = binomial(link=logit))
summary(IceCover)
## 
## Call:
## glm(formula = IntermittentIceCoverNumber ~ MeanAnnualAirTemp_c + 
##     Latitude_dd + SurfaceArea_km2 + MeanDepth_m + MaximumDepth_m + 
##     WatershedArea_km2 + MeanDischarge_m3_sec + Slope_degrees + 
##     ShorelineDevelopment + JFMPrecipitation_mm + JFMCloudCover_perc, 
##     family = binomial(link = logit))
## 
## Coefficients:
##                        Estimate Std. Error z value Pr(>|z|)    
## (Intercept)          -1.780e+01  7.955e+00  -2.237 0.025278 *  
## MeanAnnualAirTemp_c   1.783e+00  4.982e-01   3.578 0.000346 ***
## Latitude_dd           1.454e-01  1.157e-01   1.256 0.209022    
## SurfaceArea_km2       1.700e-02  1.073e-02   1.584 0.113082    
## MeanDepth_m          -1.231e-01  6.151e-02  -2.002 0.045276 *  
## MaximumDepth_m        7.263e-02  2.397e-02   3.030 0.002450 ** 
## WatershedArea_km2    -9.376e-04  4.373e-04  -2.144 0.032049 *  
## MeanDischarge_m3_sec  4.316e-02  3.173e-02   1.360 0.173829    
## Slope_degrees         9.475e-01  4.320e-01   2.193 0.028304 *  
## ShorelineDevelopment -6.710e-01  5.318e-01  -1.262 0.207022    
## JFMPrecipitation_mm  -1.733e-02  1.166e-02  -1.486 0.137371    
## JFMCloudCover_perc   -5.517e-02  1.134e-01  -0.486 0.626736    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 121.762  on 203  degrees of freedom
## Residual deviance:  40.785  on 192  degrees of freedom
## AIC: 64.785
## 
## Number of Fisher Scoring iterations: 9
anova(IceCover, test = "Chi")
## Analysis of Deviance Table
## 
## Model: binomial, link: logit
## 
## Response: IntermittentIceCoverNumber
## 
## Terms added sequentially (first to last)
## 
## 
##                      Df Deviance Resid. Df Resid. Dev  Pr(>Chi)    
## NULL                                   203    121.762              
## MeanAnnualAirTemp_c   1  14.3535       202    107.408 0.0001515 ***
## Latitude_dd           1   4.3622       201    103.046 0.0367449 *  
## SurfaceArea_km2       1  11.8812       200     91.165 0.0005670 ***
## MeanDepth_m           1   2.8588       199     88.306 0.0908763 .  
## MaximumDepth_m        1  25.1868       198     63.119 5.204e-07 ***
## WatershedArea_km2     1   5.9345       197     57.185 0.0148475 *  
## MeanDischarge_m3_sec  1   2.2426       196     54.942 0.1342536    
## Slope_degrees         1   8.0872       195     46.855 0.0044579 ** 
## ShorelineDevelopment  1   3.0672       194     43.788 0.0798892 .  
## JFMPrecipitation_mm   1   2.7570       193     41.031 0.0968270 .  
## JFMCloudCover_perc    1   0.2458       192     40.785 0.6200191    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Backwards Stepwise Regression

We determined that the best test to use to eliminate variables would be a backwards stepwise regression, and the significant variables found through this test would then be graphed.

# Backwards stepwise regression
BSR <- glm(IntermittentIceCoverNumber~MeanAnnualAirTemp_c+Latitude_dd+
             Longitude_dd+Elevation_m+SurfaceArea_km2+
             MeanDepth_m+MaximumDepth_m+
             WatershedArea_km2+ShorelineLength_km+
             ResidenceTime_days+MeanDischarge_m3_sec+
             Slope_degrees+ShorelineDevelopment+JFMCloudCover_perc+
             JFMPrecipitation_mm+DistanceToCoast_km+
             MaximumDistanceToLand_km, data=data, 
           family = binomial(link=logit))
back_model <- step(BSR, direction = "backward", scope = formula(~ .))
## Start:  AIC=36
## IntermittentIceCoverNumber ~ MeanAnnualAirTemp_c + Latitude_dd + 
##     Longitude_dd + Elevation_m + SurfaceArea_km2 + MeanDepth_m + 
##     MaximumDepth_m + WatershedArea_km2 + ShorelineLength_km + 
##     ResidenceTime_days + MeanDischarge_m3_sec + Slope_degrees + 
##     ShorelineDevelopment + JFMCloudCover_perc + JFMPrecipitation_mm + 
##     DistanceToCoast_km + MaximumDistanceToLand_km
## 
##                            Df Deviance     AIC
## - MeanDischarge_m3_sec      1     0.00   34.00
## - Latitude_dd               1     0.00   34.00
## - ShorelineLength_km        1     0.00   34.00
## - Elevation_m               1     0.00   34.00
## - DistanceToCoast_km        1     0.00   34.00
## - SurfaceArea_km2           1     0.00   34.00
## - MeanDepth_m               1     0.00   34.00
## - Longitude_dd              1     0.00   34.00
## - ShorelineDevelopment      1     0.00   34.00
## - MaximumDistanceToLand_km  1     0.00   34.00
## - ResidenceTime_days        1     0.00   34.00
## - WatershedArea_km2         1     0.00   34.00
## <none>                            0.00   36.00
## - MeanAnnualAirTemp_c       1    17.21   51.21
## - MaximumDepth_m            1    30.80   64.80
## - JFMCloudCover_perc        1   360.44  394.44
## - JFMPrecipitation_mm       1   360.44  394.44
## - Slope_degrees             1  1153.40 1187.40
## 
## Step:  AIC=34
## IntermittentIceCoverNumber ~ MeanAnnualAirTemp_c + Latitude_dd + 
##     Longitude_dd + Elevation_m + SurfaceArea_km2 + MeanDepth_m + 
##     MaximumDepth_m + WatershedArea_km2 + ShorelineLength_km + 
##     ResidenceTime_days + Slope_degrees + ShorelineDevelopment + 
##     JFMCloudCover_perc + JFMPrecipitation_mm + DistanceToCoast_km + 
##     MaximumDistanceToLand_km
## 
##                            Df Deviance    AIC
## - Latitude_dd               1    0.000 32.000
## - Elevation_m               1    0.000 32.000
## - ShorelineDevelopment      1    0.000 32.000
## - ShorelineLength_km        1    0.000 32.000
## - Longitude_dd              1    0.000 32.000
## - JFMCloudCover_perc        1    0.000 32.000
## - MeanDepth_m               1    0.000 32.000
## - SurfaceArea_km2           1    0.000 32.000
## - MaximumDistanceToLand_km  1    0.000 32.000
## - DistanceToCoast_km        1    0.000 32.000
## - ResidenceTime_days        1    0.000 32.000
## - Slope_degrees             1    0.000 32.000
## - WatershedArea_km2         1    0.000 32.000
## <none>                           0.000 34.000
## - MeanAnnualAirTemp_c       1   20.249 52.249
## - JFMPrecipitation_mm       1   20.951 52.951
## - MaximumDepth_m            1   34.133 66.133
## 
## Step:  AIC=32
## IntermittentIceCoverNumber ~ MeanAnnualAirTemp_c + Longitude_dd + 
##     Elevation_m + SurfaceArea_km2 + MeanDepth_m + MaximumDepth_m + 
##     WatershedArea_km2 + ShorelineLength_km + ResidenceTime_days + 
##     Slope_degrees + ShorelineDevelopment + JFMCloudCover_perc + 
##     JFMPrecipitation_mm + DistanceToCoast_km + MaximumDistanceToLand_km
## 
##                            Df Deviance    AIC
## - Elevation_m               1    0.000 30.000
## - ShorelineDevelopment      1    0.000 30.000
## - ShorelineLength_km        1    0.000 30.000
## - JFMCloudCover_perc        1    0.000 30.000
## - Longitude_dd              1    0.000 30.000
## - SurfaceArea_km2           1    0.000 30.000
## - MeanDepth_m               1    0.000 30.000
## - DistanceToCoast_km        1    0.000 30.000
## - ResidenceTime_days        1    0.000 30.000
## <none>                           0.000 32.000
## - WatershedArea_km2         1   19.624 49.624
## - JFMPrecipitation_mm       1   21.117 51.117
## - MaximumDistanceToLand_km  1   25.071 55.071
## - Slope_degrees             1   31.265 61.265
## - MaximumDepth_m            1   41.056 71.056
## - MeanAnnualAirTemp_c       1   63.028 93.028
## 
## Step:  AIC=30
## IntermittentIceCoverNumber ~ MeanAnnualAirTemp_c + Longitude_dd + 
##     SurfaceArea_km2 + MeanDepth_m + MaximumDepth_m + WatershedArea_km2 + 
##     ShorelineLength_km + ResidenceTime_days + Slope_degrees + 
##     ShorelineDevelopment + JFMCloudCover_perc + JFMPrecipitation_mm + 
##     DistanceToCoast_km + MaximumDistanceToLand_km
## 
##                            Df Deviance    AIC
## - ShorelineDevelopment      1    0.000 28.000
## - JFMCloudCover_perc        1    0.000 28.000
## - Longitude_dd              1    0.000 28.000
## - ShorelineLength_km        1    0.000 28.000
## - SurfaceArea_km2           1    0.000 28.000
## - MeanDepth_m               1    0.000 28.000
## - ResidenceTime_days        1    0.000 28.000
## <none>                           0.000 30.000
## - WatershedArea_km2         1   20.529 48.529
## - DistanceToCoast_km        1   23.680 51.680
## - JFMPrecipitation_mm       1   27.373 55.373
## - MaximumDistanceToLand_km  1   27.630 55.630
## - Slope_degrees             1   32.552 60.552
## - MaximumDepth_m            1   41.785 69.785
## - MeanAnnualAirTemp_c       1   71.038 99.038
## 
## Step:  AIC=28
## IntermittentIceCoverNumber ~ MeanAnnualAirTemp_c + Longitude_dd + 
##     SurfaceArea_km2 + MeanDepth_m + MaximumDepth_m + WatershedArea_km2 + 
##     ShorelineLength_km + ResidenceTime_days + Slope_degrees + 
##     JFMCloudCover_perc + JFMPrecipitation_mm + DistanceToCoast_km + 
##     MaximumDistanceToLand_km
## 
##                            Df Deviance    AIC
## - JFMCloudCover_perc        1     0.00  26.00
## - Longitude_dd              1     0.00  26.00
## - ShorelineLength_km        1     0.00  26.00
## - SurfaceArea_km2           1     0.00  26.00
## - ResidenceTime_days        1     0.00  26.00
## <none>                            0.00  28.00
## - WatershedArea_km2         1    23.47  49.47
## - DistanceToCoast_km        1    23.70  49.70
## - JFMPrecipitation_mm       1    28.65  54.65
## - MaximumDistanceToLand_km  1    29.13  55.13
## - Slope_degrees             1    33.47  59.47
## - MaximumDepth_m            1    43.53  69.53
## - MeanAnnualAirTemp_c       1    76.03 102.03
## - MeanDepth_m               1   504.61 530.61
## 
## Step:  AIC=26
## IntermittentIceCoverNumber ~ MeanAnnualAirTemp_c + Longitude_dd + 
##     SurfaceArea_km2 + MeanDepth_m + MaximumDepth_m + WatershedArea_km2 + 
##     ShorelineLength_km + ResidenceTime_days + Slope_degrees + 
##     JFMPrecipitation_mm + DistanceToCoast_km + MaximumDistanceToLand_km
## 
##                            Df Deviance     AIC
## - Longitude_dd              1    0.000  24.000
## - SurfaceArea_km2           1    0.000  24.000
## - ShorelineLength_km        1    0.000  24.000
## <none>                           0.000  26.000
## - MeanDepth_m               1   14.608  38.608
## - ResidenceTime_days        1   17.151  41.151
## - WatershedArea_km2         1   23.532  47.532
## - DistanceToCoast_km        1   27.807  51.807
## - MaximumDistanceToLand_km  1   29.228  53.228
## - JFMPrecipitation_mm       1   33.227  57.227
## - Slope_degrees             1   34.110  58.110
## - MaximumDepth_m            1   44.173  68.173
## - MeanAnnualAirTemp_c       1   85.166 109.166
## 
## Step:  AIC=24
## IntermittentIceCoverNumber ~ MeanAnnualAirTemp_c + SurfaceArea_km2 + 
##     MeanDepth_m + MaximumDepth_m + WatershedArea_km2 + ShorelineLength_km + 
##     ResidenceTime_days + Slope_degrees + JFMPrecipitation_mm + 
##     DistanceToCoast_km + MaximumDistanceToLand_km
## 
##                            Df Deviance     AIC
## - SurfaceArea_km2           1    0.000  22.000
## - ShorelineLength_km        1    0.000  22.000
## <none>                           0.000  24.000
## - MeanDepth_m               1   15.690  37.690
## - ResidenceTime_days        1   17.519  39.519
## - WatershedArea_km2         1   23.538  45.538
## - MaximumDistanceToLand_km  1   29.241  51.241
## - DistanceToCoast_km        1   31.326  53.326
## - Slope_degrees             1   34.839  56.839
## - JFMPrecipitation_mm       1   38.119  60.119
## - MaximumDepth_m            1   49.462  71.462
## - MeanAnnualAirTemp_c       1   85.198 107.198
## 
## Step:  AIC=22
## IntermittentIceCoverNumber ~ MeanAnnualAirTemp_c + MeanDepth_m + 
##     MaximumDepth_m + WatershedArea_km2 + ShorelineLength_km + 
##     ResidenceTime_days + Slope_degrees + JFMPrecipitation_mm + 
##     DistanceToCoast_km + MaximumDistanceToLand_km
## 
##                            Df Deviance     AIC
## - ShorelineLength_km        1    0.000  20.000
## <none>                           0.000  22.000
## - MeanDepth_m               1   16.038  36.038
## - ResidenceTime_days        1   17.519  37.519
## - WatershedArea_km2         1   29.321  49.321
## - DistanceToCoast_km        1   31.384  51.384
## - Slope_degrees             1   35.266  55.266
## - MaximumDistanceToLand_km  1   38.448  58.448
## - JFMPrecipitation_mm       1   38.994  58.994
## - MaximumDepth_m            1   51.809  71.809
## - MeanAnnualAirTemp_c       1   87.683 107.683
## 
## Step:  AIC=20
## IntermittentIceCoverNumber ~ MeanAnnualAirTemp_c + MeanDepth_m + 
##     MaximumDepth_m + WatershedArea_km2 + ResidenceTime_days + 
##     Slope_degrees + JFMPrecipitation_mm + DistanceToCoast_km + 
##     MaximumDistanceToLand_km
## 
##                            Df Deviance     AIC
## <none>                           0.000  20.000
## - MeanDepth_m               1   16.926  34.926
## - ResidenceTime_days        1   18.528  36.528
## - DistanceToCoast_km        1   32.259  50.259
## - Slope_degrees             1   37.205  55.205
## - WatershedArea_km2         1   38.009  56.009
## - MaximumDistanceToLand_km  1   38.491  56.491
## - JFMPrecipitation_mm       1   41.845  59.845
## - MaximumDepth_m            1   51.814  69.814
## - MeanAnnualAirTemp_c       1   92.431 110.431
summary(back_model)
## 
## Call:
## glm(formula = IntermittentIceCoverNumber ~ MeanAnnualAirTemp_c + 
##     MeanDepth_m + MaximumDepth_m + WatershedArea_km2 + ResidenceTime_days + 
##     Slope_degrees + JFMPrecipitation_mm + DistanceToCoast_km + 
##     MaximumDistanceToLand_km, family = binomial(link = logit), 
##     data = data)
## 
## Coefficients:
##                            Estimate Std. Error z value Pr(>|z|)
## (Intercept)              -1.204e+03  9.920e+04  -0.012    0.990
## MeanAnnualAirTemp_c       1.643e+02  1.330e+04   0.012    0.990
## MeanDepth_m              -5.507e+00  5.901e+02  -0.009    0.993
## MaximumDepth_m            5.226e+00  4.228e+02   0.012    0.990
## WatershedArea_km2        -4.973e-02  4.036e+00  -0.012    0.990
## ResidenceTime_days       -6.047e-02  5.827e+00  -0.010    0.992
## Slope_degrees             8.985e+01  8.428e+03   0.011    0.991
## JFMPrecipitation_mm      -3.498e+00  2.869e+02  -0.012    0.990
## DistanceToCoast_km       -3.528e-01  2.885e+01  -0.012    0.990
## MaximumDistanceToLand_km  2.016e+02  1.667e+04   0.012    0.990
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1.2176e+02  on 203  degrees of freedom
## Residual deviance: 3.6514e-07  on 194  degrees of freedom
## AIC: 20
## 
## Number of Fisher Scoring iterations: 25

Graphing and Data Analysis

Each of the dignificant variables form the backwards stepwise regression were graphed

# Mean Annual Air Temp *
ggplot(data, aes(MeanAnnualAirTemp_c, IntermittentIceCoverNumber)) + 
  geom_smooth(method = "glm", se = TRUE, color = "black",
              method.args = list(family = "binomial")) +
  geom_jitter(shape = 1, col = "royalblue", size = 3,
              height = 0.02, width = 0.5) + 
  labs(x = "Mean Annual Air Temp", y = "Probability of Intermittent Ice Cover") + 
  theme_classic()

# Longitude
ggplot(data, aes(Longitude_dd, IntermittentIceCoverNumber)) + 
  geom_smooth(method = "glm", se = TRUE, color = "black",
              method.args = list(family = "binomial")) +
  geom_jitter(shape = 1, col = "royalblue", size = 3,
              height = 0.02, width = 0.5) + 
  labs(x = "Longitude", y = "Probability of Intermittent Ice Cover") + 
  theme_classic()

# Surface Area *
ggplot(data, aes(SurfaceArea_km2, IntermittentIceCoverNumber)) + 
  geom_smooth(method = "glm", se = TRUE, color = "black",
              method.args = list(family = "binomial")) +
  geom_jitter(shape = 1, col = "royalblue", size = 3,
              height = 0.02, width = 0.5) + 
  labs(x = "Surface Area (km2)", y = "Probability of Intermittent Ice Cover") + 
  theme_classic()

# Mean Depth *
ggplot(data, aes(MeanDepth_m, IntermittentIceCoverNumber)) + 
  geom_smooth(method = "glm", se = TRUE, color = "black",
              method.args = list(family = "binomial")) +
  geom_jitter(shape = 1, col = "royalblue", size = 3,
              height = 0.02, width = 0.5) + 
  labs(x = "Mean Depth (m)", y = "Probability of Intermittent Ice Cover") + 
  theme_classic()

# Maximum Depth
ggplot(data, aes(MaximumDepth_m, IntermittentIceCoverNumber)) + 
  geom_smooth(method = "glm", se = TRUE, color = "black",
              method.args = list(family = "binomial")) +
  geom_jitter(shape = 1, col = "royalblue", size = 3,
              height = 0.02, width = 0.5) + 
  labs(x = "Maximum Depth (m)", y = "Probability of Intermittent Ice Cover") + 
  theme_classic()

# Shoreline Length *
ggplot(data, aes(ShorelineLength_km, IntermittentIceCoverNumber)) + 
  geom_smooth(method = "glm", se = TRUE, color = "black",
              method.args = list(family = "binomial")) +
  geom_jitter(shape = 1, col = "royalblue", size = 3,
              height = 0.02, width = 0.5) + 
  labs(x = "Shoreline Length (km)", y = "Probability of Intermittent Ice Cover") + 
  theme_classic()

# Slope Degrees *
ggplot(data, aes(Slope_degrees, IntermittentIceCoverNumber)) + 
  geom_smooth(method = "glm", se = TRUE, color = "black",
              method.args = list(family = "binomial")) +
  geom_jitter(shape = 1, col = "royalblue", size = 3,
              height = 0.02, width = 0.5) + 
  labs(x = "Slope Degrees", y = "Probability of Intermittent Ice Cover") + 
  theme_classic()

From these graphs and the regression analysis, we determined that the most significant variables were maximum depth, mean annual temperature, and longitude. ### Maximum Depth Analysis Strip chart with mean and standard deviation and a graph with 95% confidence intervals for maximum depth

#Calculating the mean and SE for Maximum Depth
mean_values <- data %>%
  group_by(IntermittentIceCover) %>%
  summarise(
    MeanMaximumDepth = mean(MaximumDepth_m, na.rm = TRUE),
    StdError = sd(MaximumDepth_m, na.rm = TRUE) / sqrt(n()),
    .groups = 'drop'  # Cleanly drops grouping structure
  )
print(mean_values)
## # A tibble: 2 × 3
##   IntermittentIceCover MeanMaximumDepth StdError
##   <fct>                           <dbl>    <dbl>
## 1 N                                35.5     2.86
## 2 Y                               100.     29.7
#Creating the plot for maximum depth
plot <- ggplot() +
  geom_jitter(data = data, aes(x = IntermittentIceCover, y = MaximumDepth_m), position = position_jitter(0.01), color = "royalblue") +
  geom_point(data = mean_values, aes(x = IntermittentIceCover, y = MeanMaximumDepth), color = "red", size = 3) +
  geom_errorbar(data = mean_values, aes(x = IntermittentIceCover, ymin = MeanMaximumDepth - StdError, ymax = MeanMaximumDepth + StdError), width = 0.1) +
  theme_classic() +
  scale_x_discrete(limits = c("Y", "N")) +
  xlab("Intermittent Ice Cover (Y/N)") +
  ylab("Maximum Depth (m)")  + theme(axis.title=element_text(size=20), axis.text=element_text(size=20))
print(plot)

Mean Annual Temperature Analysis

Strip chart with mean and standard deviation and a graph with 95% confidence intervals for mean annual temperature

# Calculate mean and standard error for each group for annual air temp
mean_values <- data %>%
  group_by(IntermittentIceCover) %>%
  summarise(
  MeanAirTemp = mean(MeanAnnualAirTemp_c, na.rm = TRUE),StdError = sd(MeanAnnualAirTemp_c, na.rm = TRUE) / sqrt(n()),
  .groups = 'drop')
print(mean_values)
## # A tibble: 2 × 3
##   IntermittentIceCover MeanAirTemp StdError
##   <fct>                      <dbl>    <dbl>
## 1 N                           3.84    0.214
## 2 Y                           6.36    0.727
# Plotting for annual air temp
plot <- ggplot() +
      geom_jitter(data = data, aes(x = IntermittentIceCover, y = MeanAnnualAirTemp_c), position = position_jitter(0.01), color = "royalblue") +
      geom_point(data = mean_values, aes(x = IntermittentIceCover, y = MeanAirTemp), color = "red", size = 3) +
      geom_errorbar(data = mean_values, aes(x = IntermittentIceCover, ymin = MeanAirTemp - StdError, ymax = MeanAirTemp + StdError), width = 0.1) +
      theme_classic() +
      scale_x_discrete(limits = c("Y", "N")) +
      xlab("Intermittent Ice Cover (Y/N)") +
      ylab("Mean Annual Air Temperature (°C)") + theme(axis.title=element_text(size=20), axis.text=element_text(size=20))
print(plot)

Longitude Analysis

Strip chart with mean and standard deviation and a graph with 95% confidence intervals for longitude

# Calculate mean and standard error for each group and Longitude
mean_values <- data %>%
  group_by(IntermittentIceCover) %>%
  summarise(MeanLongitude = mean(Longitude_dd, na.rm = TRUE),
            StdError = sd(Longitude_dd, na.rm = TRUE) / sqrt(n()))
print(mean_values)
## # A tibble: 2 × 3
##   IntermittentIceCover MeanLongitude StdError
##   <fct>                        <dbl>    <dbl>
## 1 N                            -42.1     4.58
## 2 Y                            -43.9    18.0
#Creating the plot for Longitude
plot <- ggplot() +
  geom_jitter(data = data, aes(x = IntermittentIceCover, y = Longitude_dd), position = position_jitter(0.01), color = "royalblue") +
  geom_point(data = mean_values, aes(x = IntermittentIceCover, y = MeanLongitude), color = "red", size = 3) +
  geom_errorbar(data = mean_values, aes(x = IntermittentIceCover, ymin = MeanLongitude - StdError, ymax = MeanLongitude + StdError), width = 0.1) +
  theme_classic() +
  scale_x_discrete(limits = c("Y", "N")) +
  xlab("Intermittent Ice Cover (Y/N)") +
  ylab("Longitude (dd)")  + theme(axis.title=element_text(size=20), axis.text=element_text(size=20))
print(plot)

Multiple Regression Graph of Maximum Depth and Mean Annual Temperature

From this, we determined that the two most important variables were maximum depth and mean annual temperature. The best way to analyze these variables side by side would be through a multiple regression graph.

# Multiple Regressions (Maximum Depth and Mean Annual Temp)
require(moonBook)
require(ggplot2)
require(ggiraph)
require(ggiraphExtra)
require(plyr)

fit6=glm(IntermittentIceCoverNumber~MeanAnnualAirTemp_c+MaximumDepth_m,data=data,family=binomial)
summary(fit6)
## 
## Call:
## glm(formula = IntermittentIceCoverNumber ~ MeanAnnualAirTemp_c + 
##     MaximumDepth_m, family = binomial, data = data)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)         -9.47369    1.69297  -5.596 2.19e-08 ***
## MeanAnnualAirTemp_c  0.95063    0.20534   4.630 3.66e-06 ***
## MaximumDepth_m       0.03476    0.00734   4.735 2.19e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 121.762  on 203  degrees of freedom
## Residual deviance:  68.362  on 201  degrees of freedom
## AIC: 74.362
## 
## Number of Fisher Scoring iterations: 7
ggPredict(fit6,se=TRUE,interactive=FALSE,digits=3)