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.
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
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
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
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
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)
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)
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)
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)