setwd("C:/Users/theco/Desktop")
library(plotrix)
library(car)
## Warning: package 'car' was built under R version 3.3.3
Nutrients <- read.csv("nutrientsF.csv")
Nutrients
## Sample.ID Treatment chamber cockles
## 1 MARI301_Block1_Light_Black_Initial black Light no cockles
## 2 MARI301_Block1_Light_Blue_Initial blue Light cockles
## 3 MARI301_Block1_Light_Green_Initial green Light cockles
## 4 MARI301_Block1_Light_Yellow_Initial yellow Light no cockles
## 5 MARI301_Block1_Dark_Black_Initial black Dark no cockles
## 6 MARI301_Block1_Dark_Blue_Initial blue Dark cockles
## 7 MARI301_Block1_Dark_Green_Initial green Dark cockles
## 8 MARI301_Block1_Dark_Yellow_Initial yellow Dark no cockles
## 9 MARI301_Block2_Light_Black_Initial black Light no cockles
## 10 MARI301_Block2_Light_Blue_Initial blue Light cockles
## 11 MARI301_Block2_Light_Green_Initial green Light cockles
## 12 MARI301_Block2_Dark_Black_Initial black Dark no cockles
## 13 MARI301_Block2_Dark_Blue_Initial blue Dark cockles
## 14 MARI301_Block2_Dark_Green_Initial green Dark cockles
## 15 MARI301_Block3_Light_Black_Initial black Light no cockles
## 16 MARI301_Block3_Light_Blue_Initial blue Light cockles
## 17 MARI301_Block3_Light_Green_Initial green Light cockles
## 18 MARI301_Block3_Light_Yellow_Initial yellow Light no cockles
## 19 MARI301_Block3_Dark_Blue_Initial blue Dark cockles
## 20 MARI301_Block3_Dark_Green_Initial green Dark cockles
## 21 MARI301_Block3_Dark_Yellow_Initial yellow Dark no cockles
## 22 MARI301_Block4_Light_Black_Initial black Light no cockles
## 23 MARI301_Block4_Light_Blue_Initial blue Light cockles
## 24 MARI301_Block4_Light_Green_Initial green Light cockles
## 25 MARI301_Block4_Light_Yellow_Initial yellow Light no cockles
## 26 MARI301_Block4_Dark_Black_Initial black Dark no cockles
## 27 MARI301_Block4_Dark_Blue_Initial blue Dark cockles
## 28 MARI301_Block4_Dark_Green_Initial green Dark cockles
## 29 MARI301_Block4_Dark_Yellow_Initial yellow Dark no cockles
## 30 MARI301_Block5_Light_Black_Initial black Light no cockles
## 31 MARI301_Block5_Light_Blue_Initial blue Light cockles
## 32 MARI301_Block5_Light_Green_Initial green Light cockles
## 33 MARI301_Block5_Light_Yellow_Initial yellow Light no cockles
## 34 MARI301_Block5_Dark_Black_Initial black Dark no cockles
## 35 MARI301_Block5_Dark_Blue_Initial blue Dark cockles
## 36 MARI301_Block5_Dark_Green_Initial green Dark cockles
## 37 MARI301_Block5_Dark_Yellow_Initial yellow Dark no cockles
## 38 MARI301_Block6_Light_Black_Initial black Light no cockles
## 39 MARI301_Block6_Light_Green_Initial green Light cockles
## 40 MARI301_Block6_Light_Yellow_Initial yellow Light no cockles
## 41 MARI301_Block6_Dark_Black_Initial black Dark no cockles
## 42 MARI301_Block6_Dark_Green_Initial green Dark cockles
## 43 MARI301_Block6_Dark_Yellow_Initial yellow Dark no cockles
## 44 MARI301_Block7_Light_Black_Initial black Light no cockles
## 45 MARI301_Block7_Light_Blue_Initial blue Light cockles
## 46 MARI301_Block7_Light_Green_Initial green Light cockles
## 47 MARI301_Block7_Light_Yellow_Initial yellow Light no cockles
## 48 MARI301_Block7_Dark_Black_Initial black Dark no cockles
## 49 MARI301_Block7_Dark_Blue_Initial blue Dark cockles
## 50 MARI301_Block7_Dark_Green_Initial green Dark cockles
## 51 MARI301_Block7_Dark_Yellow_Initial yellow Dark no cockles
## ulva Analyte.Name Peak.Concentration..µg.L.1. Ammonia.Flux
## 1 Ammonia 34.12 11.281367
## 2 Ammonia 42.37 15.962624
## 3 ulva Ammonia 40.68 27.234721
## 4 ulva Ammonia 36.03 43.994549
## 5 Ammonia 99.95 -46.358353
## 6 Ammonia 40.57 7.721757
## 7 ulva Ammonia 41.26 15.137610
## 8 ulva Ammonia 39.45 60.670949
## 9 Ammonia 34.80 29.255541
## 10 Ammonia 30.14 193.034660
## 11 ulva Ammonia 42.36 12.949934
## 12 Ammonia 33.58 186.202805
## 13 Ammonia 23.35 94.533589
## 14 ulva Ammonia 33.19 7.072870
## 15 Ammonia 38.39 12.430824
## 16 Ammonia 35.98 49.815994
## 17 ulva Ammonia 43.16 349.092021
## 18 ulva Ammonia 36.29 113.416206
## 19 Ammonia 29.20 25.167552
## 20 ulva Ammonia 31.42 314.126273
## 21 ulva Ammonia 41.52 218.693512
## 22 no ulva Ammonia 41.14 133.948849
## 23 no ulva Ammonia 28.81 66.724140
## 24 ulva Ammonia 30.91 236.658416
## 25 ulva Ammonia 31.65 19.151441
## 26 no ulva Ammonia 37.68 114.343187
## 27 no ulva Ammonia 26.40 24.602093
## 28 ulva Ammonia 34.64 342.389944
## 29 ulva Ammonia 28.56 185.359252
## 30 no ulva Ammonia 27.93 57.407974
## 31 no ulva Ammonia 27.76 33.167404
## 32 ulva Ammonia 49.85 82.010067
## 33 ulva Ammonia 30.80 174.439408
## 34 no ulva Ammonia 27.26 45.051308
## 35 no ulva Ammonia 32.61 13.265107
## 36 ulva Ammonia 39.59 7.480742
## 37 ulva Ammonia 31.78 120.609583
## 38 no ulva Ammonia 26.94 14.201359
## 39 ulva Ammonia 28.36 254.586242
## 40 ulva Ammonia 23.51 52.958462
## 41 no ulva Ammonia 27.11 55.859915
## 42 ulva Ammonia 28.06 26.113073
## 43 ulva Ammonia 25.15 36.708474
## 44 no ulva Ammonia 26.53 15.193229
## 45 no ulva Ammonia 26.80 144.729646
## 46 ulva Ammonia 27.41 155.121110
## 47 ulva Ammonia 25.50 84.151395
## 48 no ulva Ammonia 31.78 24.685521
## 49 no ulva Ammonia 42.61 164.594863
## 50 ulva Ammonia 27.24 36.819711
## 51 ulva Ammonia 25.15 75.734401
## Analyte.Name.1 Peak.Concentration..µg.L.1..1 Phosphate.Flux
## 1 Phosphate 14.62 -2.21831769
## 2 Phosphate 15.41 -3.15764313
## 3 Phosphate 15.46 -2.55379106
## 4 Phosphate 14.14 5.90433138
## 5 Phosphate 13.28 -2.73830141
## 6 Phosphate 15.33 -3.59375852
## 7 Phosphate 15.01 -3.17861022
## 8 Phosphate 16.02 -0.46546931
## 9 Phosphate 15.18 -2.39024779
## 10 Phosphate 11.45 13.40216129
## 11 Phosphate 15.32 -3.04442087
## 12 Phosphate 14.55 9.70356734
## 13 Phosphate 11.84 0.04193417
## 14 Phosphate 13.29 -3.11990238
## 15 Phosphate 18.38 -4.67985357
## 16 Phosphate 10.88 -0.70449408
## 17 Phosphate 15.40 29.81938952
## 18 Phosphate 13.47 2.76765534
## 19 Phosphate 14.26 -2.76346192
## 20 Phosphate 14.22 19.08424156
## 21 Phosphate 15.26 5.62756585
## 22 Phosphate 19.51 0.84707027
## 23 Phosphate 13.87 -0.23902478
## 24 Phosphate 14.72 11.46060914
## 25 Phosphate 15.90 -2.93958544
## 26 Phosphate 21.48 3.89149114
## 27 Phosphate 13.37 -2.24347819
## 28 Phosphate 18.05 19.59583845
## 29 Phosphate 15.69 15.23049117
## 30 Phosphate 14.50 2.72572116
## 31 Phosphate 14.96 -0.07548151
## 32 Phosphate 26.12 -3.61891902
## 33 Phosphate 14.11 5.88336429
## 34 Phosphate 14.72 5.25435172
## 35 Phosphate 16.07 -3.06119454
## 36 Phosphate 20.16 -4.87694417
## 37 Phosphate 13.66 4.47856954
## 38 Phosphate 15.78 -0.88061761
## 39 Phosphate 15.52 10.80643606
## 40 Phosphate 16.10 4.33179994
## 41 Phosphate 15.97 -0.41934172
## 42 Phosphate 14.90 -2.16380326
## 43 Phosphate 17.11 -0.28095895
## 44 Phosphate 13.71 2.36508729
## 45 Phosphate 15.29 2.92700519
## 46 Phosphate 15.98 8.11845565
## 47 Phosphate 14.96 4.62953256
## 48 Phosphate 16.98 -0.11322226
## 49 Phosphate 19.36 7.86265720
## 50 Phosphate 14.38 -2.45314905
## 51 Phosphate 13.78 4.08858174
## Analyte.Name.2 Peak.Concentration..µg.L.1..2 NOx.Flux
## 1 NOx 15.65 -7.68467792
## 2 NOx 18.59 -13.21875840
## 3 NOx 17.05 -11.47603289
## 4 NOx 54.72 56.71273765
## 5 NOx 13.89 -8.73216719
## 6 NOx 13.95 -6.78550572
## 7 NOx 15.36 -9.58499031
## 8 NOx 60.35 15.87919575
## 9 NOx 22.55 -14.84097630
## 10 NOx 10.32 2.10424836
## 11 NOx 61.43 -50.82640415
## 12 NOx 15.37 -5.11693874
## 13 NOx 13.02 -4.91300277
## 14 NOx 18.75 -12.69964867
## 15 NOx 41.21 -32.23115215
## 16 NOx 27.04 -18.45620475
## 17 NOx 20.85 -1.26069505
## 18 NOx 11.16 -3.93967203
## 19 NOx 22.13 -7.25826636
## 20 NOx 8.48 -0.06488872
## 21 NOx 6.63 3.70792662
## 22 NOx 21.88 -8.44480288
## 23 NOx 16.08 -4.36608360
## 24 NOx 8.62 13.25583767
## 25 NOx 11.28 -3.17027726
## 26 NOx 15.32 -5.57115975
## 27 NOx 9.78 -2.17840689
## 28 NOx 10.22 0.88990239
## 29 NOx 10.21 36.31914124
## 30 NOx 5.50 -1.74272551
## 31 NOx 13.41 -6.64645847
## 32 NOx 39.68 -35.27165197
## 33 NOx 11.07 -9.76111683
## 34 NOx 10.78 14.41456474
## 35 NOx 12.62 1.44609138
## 36 NOx 18.11 -1.53878955
## 37 NOx 11.96 -0.64888716
## 38 NOx 13.77 -10.48416252
## 39 NOx 11.08 8.30575563
## 40 NOx 25.76 -21.09810247
## 41 NOx 13.77 -11.74485757
## 42 NOx 10.89 -2.14132762
## 43 NOx 32.32 -19.01239374
## 44 NOx 14.69 -5.96976186
## 45 NOx 30.12 -16.55589236
## 46 NOx 26.01 -10.96619298
## 47 NOx 15.00 11.61508014
## 48 NOx 17.56 -5.71947681
## 49 NOx 58.90 -29.36677883
## 50 NOx 25.33 -16.62078107
## 51 NOx 15.37 -6.93382278
summary(Nutrients)
## Sample.ID Treatment chamber
## MARI301_Block1_Dark_Black_Initial : 1 black :13 Dark :25
## MARI301_Block1_Dark_Blue_Initial : 1 blue :12 Light:26
## MARI301_Block1_Dark_Green_Initial : 1 green :14
## MARI301_Block1_Dark_Yellow_Initial: 1 yellow:12
## MARI301_Block1_Light_Black_Initial: 1
## MARI301_Block1_Light_Blue_Initial : 1
## (Other) :45
## cockles ulva Analyte.Name Peak.Concentration..µg.L.1.
## cockles :26 :11 Ammonia:51 Min. :23.35
## no cockles:25 no ulva:14 1st Qu.:27.59
## ulva :26 Median :31.78
## Mean :34.26
## 3rd Qu.:38.92
## Max. :99.95
##
## Ammonia.Flux Analyte.Name.1 Peak.Concentration..µg.L.1..1
## Min. :-46.36 Phosphate:51 Min. :10.88
## 1st Qu.: 21.88 1st Qu.:14.18
## Median : 52.96 Median :15.18
## Mean : 89.01 Mean :15.48
## 3rd Qu.:139.34 3rd Qu.:15.97
## Max. :349.09 Max. :26.12
##
## Phosphate.Flux Analyte.Name.2 Peak.Concentration..µg.L.1..2
## Min. :-4.87694 NOx:51 Min. : 5.50
## 1st Qu.:-2.50347 1st Qu.:11.22
## Median :-0.07548 Median :15.36
## Mean : 2.80145 Mean :20.11
## 3rd Qu.: 5.44096 3rd Qu.:22.34
## Max. :29.81939 Max. :61.43
##
## NOx.Flux
## Min. :-50.8264
## 1st Qu.:-11.6105
## Median : -5.9698
## Mean : -5.4979
## 3rd Qu.: -0.9548
## Max. : 56.7127
##
#detach(Nutrients)
attach(Nutrients)
# black = nothing; blue = +c-u, yellow = -c+u, green = +c+u
# Interaction effect insignificant; therefore -u and +u data can be combined. See "MARI301 R 2017.R"
# Light and Dark chambers significantly different, and should be separated
## Dark Chambers: Effect of adding cockles on ammonia, phosphate and NOx
NH4.yc.dark <- Ammonia.Flux[Nutrients$cockles=="cockles" & Nutrients$chamber=="Dark" & !is.na(Nutrients$Ammonia.Flux)]
NH4.nc.dark <- Ammonia.Flux[Nutrients$cockles!="cockles" & Nutrients$chamber=="Dark" & !is.na(Nutrients$Ammonia.Flux)]
NH4.means.dark <- c(mean(NH4.nc.dark), mean(NH4.yc.dark))
NH4.model.dark <- lm(Ammonia.Flux[Nutrients$chamber=="Dark"] ~ cockles[Nutrients$chamber=="Dark"])
summary(NH4.model.dark) # p = 0.8674
##
## Call:
## lm(formula = Ammonia.Flux[Nutrients$chamber == "Dark"] ~ cockles[Nutrients$chamber ==
## "Dark"])
##
## Residuals:
## Min 1Q Median 3Q Max
## -136.16 -65.11 -44.74 30.81 259.39
##
## Coefficients:
## Estimate Std. Error t value
## (Intercept) 83.002 27.892 2.976
## cockles[Nutrients$chamber == "Dark"]no cockles 6.795 40.258 0.169
## Pr(>|t|)
## (Intercept) 0.00676 **
## cockles[Nutrients$chamber == "Dark"]no cockles 0.86745
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 100.6 on 23 degrees of freedom
## Multiple R-squared: 0.001237, Adjusted R-squared: -0.04219
## F-statistic: 0.02849 on 1 and 23 DF, p-value: 0.8674
PO4.yc.dark <- Phosphate.Flux[Nutrients$cockles=="cockles" & Nutrients$chamber=="Dark" & !is.na(Nutrients$Phosphate.Flux)]
PO4.nc.dark <- Phosphate.Flux[Nutrients$cockles!="cockles" & Nutrients$chamber=="Dark" & !is.na(Nutrients$Phosphate.Flux)]
PO4.means.dark <- c(mean(PO4.nc.dark), mean(PO4.yc.dark))
PO4.model.dark <- lm(Phosphate.Flux[Nutrients$chamber=="Dark"] ~ cockles[Nutrients$chamber=="Dark"])
summary(PO4.model.dark) # p = 0.4422
##
## Call:
## lm(formula = Phosphate.Flux[Nutrients$chamber == "Dark"] ~ cockles[Nutrients$chamber ==
## "Dark"])
##
## Residuals:
## Min 1Q Median 3Q Max
## -6.426 -4.235 -3.715 1.566 18.124
##
## Coefficients:
## Estimate Std. Error t value
## (Intercept) 1.472 1.964 0.749
## cockles[Nutrients$chamber == "Dark"]no cockles 2.217 2.835 0.782
## Pr(>|t|)
## (Intercept) 0.461
## cockles[Nutrients$chamber == "Dark"]no cockles 0.442
##
## Residual standard error: 7.081 on 23 degrees of freedom
## Multiple R-squared: 0.0259, Adjusted R-squared: -0.01646
## F-statistic: 0.6114 on 1 and 23 DF, p-value: 0.4422
NOx.yc.dark <- NOx.Flux[Nutrients$cockles=="cockles" & Nutrients$chamber=="Dark" & !is.na(Nutrients$NOx.Flux)]
NOx.nc.dark <- NOx.Flux[Nutrients$cockles!="cockles" & Nutrients$chamber=="Dark" & !is.na(Nutrients$NOx.Flux)]
NOx.means.dark <- c(mean(NOx.nc.dark), mean(NOx.yc.dark))
NOx.model.dark <- lm(NOx.Flux[Nutrients$chamber=="Dark"] ~ cockles[Nutrients$chamber=="Dark"])
summary(NOx.model.dark) # p = 0.1341
##
## Call:
## lm(formula = NOx.Flux[Nutrients$chamber == "Dark"] ~ cockles[Nutrients$chamber ==
## "Dark"])
##
## Residuals:
## Min 1Q Median 3Q Max
## -22.381 -6.290 -0.272 5.447 35.749
##
## Coefficients:
## Estimate Std. Error t value
## (Intercept) -6.986 3.371 -2.072
## cockles[Nutrients$chamber == "Dark"]no cockles 7.556 4.866 1.553
## Pr(>|t|)
## (Intercept) 0.0496 *
## cockles[Nutrients$chamber == "Dark"]no cockles 0.1341
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 12.15 on 23 degrees of freedom
## Multiple R-squared: 0.0949, Adjusted R-squared: 0.05555
## F-statistic: 2.412 on 1 and 23 DF, p-value: 0.1341
# No measureable statistical effect on nutrients of adding cockles to dark chambers
all.means.dark <- c(NH4.means.dark, PO4.means.dark, NOx.means.dark)
mp.dark <- barplot(all.means.dark, legend = c("-c ", "+c "), axes=FALSE, axisnames=FALSE, ylim=c(-20,160), xlab="Type of Nutrient", ylab="Nutrient (mM/L)", col=c("white", "gray"))
axis(1, labels=c("NH4 -c", "NH4 +c", "PO4 -c", "PO4 +c", "NOx -c", "NOx +c"), at=mp.dark)
axis(2, at=seq(-20,160,by=10))
box()
all.means.dark.rounded <- round(all.means.dark, digits = 2)
text(mp.dark, 1:6, labels = all.means.dark.rounded, pos = 3)
SE.dark <- matrix(c(std.error(NH4.nc.dark), std.error(NH4.yc.dark), std.error(PO4.nc.dark), std.error(PO4.yc.dark), std.error(NOx.yc.dark), std.error(NOx.nc.dark)))
segments(mp.dark, all.means.dark-SE.dark, mp.dark, all.means.dark+SE.dark, lwd=2)
segments(mp.dark-0.1, all.means.dark-SE.dark, mp.dark+0.1, all.means.dark-SE.dark, lwd=2)
segments(mp.dark-0.1, all.means.dark+SE.dark, mp.dark+0.1, all.means.dark+SE.dark, lwd=2)
abline(h=0, lty=2)
abline(v=4.9, lty=2)
abline(v=2.5, lty=2)

## Light chambers; Effect of adding cockles on ammonia, phosphate and NOx
NH4.yc.light <- Ammonia.Flux[Nutrients$cockles=="cockles" & Nutrients$chamber=="Light" & !is.na(Nutrients$Ammonia.Flux)]
NH4.nc.light <- Ammonia.Flux[Nutrients$cockles!="cockles" & Nutrients$chamber=="Light" & !is.na(Nutrients$Ammonia.Flux)]
NH4.means.light <- c(mean(NH4.nc.light), mean(NH4.yc.light))
NH4.model.light <- lm(Ammonia.Flux[Nutrients$chamber=="Light"] ~ cockles[Nutrients$chamber=="Light"])
summary(NH4.model.light) # p = 0.0583
##
## Call:
## lm(formula = Ammonia.Flux[Nutrients$chamber == "Light"] ~ cockles[Nutrients$chamber ==
## "Light"])
##
## Residuals:
## Min 1Q Median 3Q Max
## -111.75 -47.03 -21.98 48.72 224.39
##
## Coefficients:
## Estimate Std. Error
## (Intercept) 124.70 23.51
## cockles[Nutrients$chamber == "Light"]no cockles -66.10 33.24
## t value Pr(>|t|)
## (Intercept) 5.305 1.92e-05 ***
## cockles[Nutrients$chamber == "Light"]no cockles -1.988 0.0583 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 84.75 on 24 degrees of freedom
## Multiple R-squared: 0.1414, Adjusted R-squared: 0.1057
## F-statistic: 3.954 on 1 and 24 DF, p-value: 0.05829
PO4.yc.light <- Phosphate.Flux[Nutrients$cockles=="cockles" & Nutrients$chamber=="Light" & !is.na(Nutrients$Phosphate.Flux)]
PO4.nc.light <- Phosphate.Flux[Nutrients$cockles!="cockles" & Nutrients$chamber=="Light" & !is.na(Nutrients$Phosphate.Flux)]
PO4.means.light <- c(mean(PO4.nc.light), mean(PO4.yc.light))
PO4.model.light <- lm(Phosphate.Flux[Nutrients$chamber=="Light"] ~ cockles[Nutrients$chamber=="Light"])
summary(PO4.model.light) # p = 0.2204
##
## Call:
## lm(formula = Phosphate.Flux[Nutrients$chamber == "Light"] ~ cockles[Nutrients$chamber ==
## "Light"])
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.476 -5.055 -1.170 3.345 24.962
##
## Coefficients:
## Estimate Std. Error
## (Intercept) 4.857 2.023
## cockles[Nutrients$chamber == "Light"]no cockles -3.600 2.861
## t value Pr(>|t|)
## (Intercept) 2.401 0.0245 *
## cockles[Nutrients$chamber == "Light"]no cockles -1.258 0.2204
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.293 on 24 degrees of freedom
## Multiple R-squared: 0.06189, Adjusted R-squared: 0.0228
## F-statistic: 1.583 on 1 and 24 DF, p-value: 0.2204
NOx.yc.light <- NOx.Flux[Nutrients$cockles=="cockles" & Nutrients$chamber=="Light" & !is.na(Nutrients$NOx.Flux)]
NOx.nc.light <- NOx.Flux[Nutrients$cockles!="cockles" & Nutrients$chamber=="Light" & !is.na(Nutrients$NOx.Flux)]
NOx.means.light <- c(mean(NOx.nc.light), mean(NOx.yc.light))
NOx.model.light <- lm(NOx.Flux[Nutrients$chamber=="Light"] ~ cockles[Nutrients$chamber=="Light"])
summary(NOx.model.light) # p = 0.3439
##
## Call:
## lm(formula = NOx.Flux[Nutrients$chamber == "Light"] ~ cockles[Nutrients$chamber ==
## "Light"])
##
## Residuals:
## Min 1Q Median 3Q Max
## -39.643 -6.377 -1.164 6.247 60.639
##
## Coefficients:
## Estimate Std. Error
## (Intercept) -11.183 5.314
## cockles[Nutrients$chamber == "Light"]no cockles 7.257 7.516
## t value Pr(>|t|)
## (Intercept) -2.104 0.046 *
## cockles[Nutrients$chamber == "Light"]no cockles 0.966 0.344
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 19.16 on 24 degrees of freedom
## Multiple R-squared: 0.03739, Adjusted R-squared: -0.002716
## F-statistic: 0.9323 on 1 and 24 DF, p-value: 0.3439
# No measureable statistical effect on nutrients of adding cockles to light chambers
all.means.light <- c(NH4.means.light, PO4.means.light, NOx.means.light)
mp.light <- barplot(all.means.light, legend = c("-c ", "+c "), axes=FALSE, axisnames=FALSE, ylim=c(-20,160), xlab="Type of Nutrient", ylab="Nutrient (mM/L)", col=c("white", "gray"))
axis(1, labels=c("NH4 -c", "NH4 +c", "PO4 -c", "PO4 +c", "NOx -c", "NOx +c"), at=mp.light)
axis(2, at=seq(-20,160,by=10))
box()
all.means.light.rounded <- round(all.means.light, digits = 2)
text(mp.light, 1:6, labels = all.means.light.rounded, pos = 3)
SE.light <- matrix(c(std.error(NH4.nc.light), std.error(NH4.yc.light), std.error(PO4.nc.light), std.error(PO4.yc.light), std.error(NOx.yc.light), std.error(NOx.nc.light)))
segments(mp.light, all.means.light-SE.light, mp.light, all.means.light+SE.light, lwd=2)
segments(mp.light-0.1, all.means.light-SE.light, mp.light+0.1, all.means.light-SE.light, lwd=2)
segments(mp.light-0.1, all.means.light+SE.light, mp.light+0.1, all.means.light+SE.light, lwd=2)
abline(h=0, lty=2)
abline(v=4.9, lty=2)
abline(v=2.5, lty=2)

# Thus no measurable effect on nutrients of adding cockles to chambers
## Light v Dark (lvd) differences for nutrients
# I'm choosing to treat light v dark chambers as if they were an independent variable
NH4.model.lvd <- lm(Ammonia.Flux ~ chamber)
summary(NH4.model.lvd) # p = 0.8389
##
## Call:
## lm(formula = Ammonia.Flux ~ chamber)
##
## Residuals:
## Min 1Q Median 3Q Max
## -132.62 -67.77 -38.69 47.69 257.44
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 86.263 18.815 4.585 3.16e-05 ***
## chamberLight 5.387 26.352 0.204 0.839
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 94.08 on 49 degrees of freedom
## Multiple R-squared: 0.0008522, Adjusted R-squared: -0.01954
## F-statistic: 0.04179 on 1 and 49 DF, p-value: 0.8389
PO4.model.lvd <- lm(Phosphate.Flux ~ chamber)
summary(PO4.model.lvd) # p = 0.7972
##
## Call:
## lm(formula = Phosphate.Flux ~ chamber)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.737 -5.287 -2.649 2.772 26.762
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.5355 1.4413 1.759 0.0848 .
## chamberLight 0.5217 2.0186 0.258 0.7972
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.206 on 49 degrees of freedom
## Multiple R-squared: 0.001361, Adjusted R-squared: -0.01902
## F-statistic: 0.06678 on 1 and 49 DF, p-value: 0.7972
NOx.model.lvd <- lm(NOx.Flux ~ chamber)
summary(NOx.model.lvd) # p = 0.3606
##
## Call:
## lm(formula = NOx.Flux ~ chamber)
##
## Residuals:
## Min 1Q Median 3Q Max
## -43.272 -5.945 -1.554 4.317 64.267
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -3.359 3.246 -1.035 0.306
## chamberLight -4.196 4.546 -0.923 0.361
##
## Residual standard error: 16.23 on 49 degrees of freedom
## Multiple R-squared: 0.01708, Adjusted R-squared: -0.002976
## F-statistic: 0.8516 on 1 and 49 DF, p-value: 0.3606
# Maybe theres an interaction effect
NH4.model2.lvdcox <- lm(Ammonia.Flux ~ cockles + chamber + cockles:chamber)
Anova(NH4.model2.lvdcox, type="III") # p-value: 0.8557, 0.2579, 0.1678
## Anova Table (Type III tests)
##
## Response: Ammonia.Flux
## Sum Sq Df F value Pr(>F)
## (Intercept) 89561 1 10.3939 0.002301 **
## cockles 288 1 0.0334 0.855702
## chamber 11301 1 1.3115 0.257914
## cockles:chamber 16915 1 1.9631 0.167753
## Residuals 404986 47
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
NH4.model3.lvdcox <- lm(Ammonia.Flux~cockles+chamber)
Anova(NH4.model3.lvdcox, type="II") # p-value: 0.2529, 0.8204
## Anova Table (Type II tests)
##
## Response: Ammonia.Flux
## Sum Sq Df F value Pr(>F)
## cockles 11770 1 1.3390 0.2529
## chamber 458 1 0.0521 0.8204
## Residuals 421902 48
PO4.model2.lvdcox <- lm(Phosphate.Flux ~ cockles + chamber + cockles:chamber)
Anova(PO4.model2.lvdcox, type="III") # p-value: 0.445, 0.236, 0.156
## Anova Table (Type III tests)
##
## Response: Phosphate.Flux
## Sum Sq Df F value Pr(>F)
## (Intercept) 28.15 1 0.5445 0.4642
## cockles 30.66 1 0.5930 0.4451
## chamber 74.50 1 1.4409 0.2360
## cockles:chamber 107.69 1 2.0831 0.1556
## Residuals 2429.87 47
PO4.model3.lvdcox <- lm(Phosphate.Flux~cockles + chamber)
Anova(PO4.model3.lvdcox, type="II") # p-value: 0.7140, 0.7933
## Anova Table (Type II tests)
##
## Response: Phosphate.Flux
## Sum Sq Df F value Pr(>F)
## cockles 7.18 1 0.1359 0.7140
## chamber 3.67 1 0.0694 0.7933
## Residuals 2537.56 48
NOx.model2.lvdcox <- lm(NOx.Flux ~ cockles + chamber + cockles:chamber)
Anova(NOx.model2.lvdcox, type="III") # p-value: 0.2475, 0.5100, 0.9737
## Anova Table (Type III tests)
##
## Response: NOx.Flux
## Sum Sq Df F value Pr(>F)
## (Intercept) 634.4 1 2.4422 0.1248
## cockles 356.3 1 1.3714 0.2475
## chamber 114.5 1 0.4408 0.5100
## cockles:chamber 0.3 1 0.0011 0.9737
## Residuals 12209.7 47
NOx.model3.lvdcox <- lm(NOx.Flux~cockles + chamber)
Anova(NOx.model3.lvdcox, type="II") # p-value: 0.1041, 0.3359
## Anova Table (Type II tests)
##
## Response: NOx.Flux
## Sum Sq Df F value Pr(>F)
## cockles 698.3 1 2.7451 0.1041
## chamber 240.4 1 0.9449 0.3359
## Residuals 12210.0 48
# No effect, so chamber color and cockles have no measurable effect on nutrient flux
## Does ulva affect nutrients?
NH4.model.ulva <- lm(Ammonia.Flux ~ ulva)
summary(NH4.model.ulva) # p-value: 0.0783
##
## Call:
## lm(formula = Ammonia.Flux ~ ulva)
##
## Residuals:
## Min 1Q Median 3Q Max
## -110.34 -54.16 -31.67 53.27 231.68
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 52.64 27.19 1.936 0.0588 .
## ulvano ulva 12.20 36.33 0.336 0.7385
## ulvaulva 64.77 32.44 1.997 0.0515 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 90.18 on 48 degrees of freedom
## Multiple R-squared: 0.1007, Adjusted R-squared: 0.06321
## F-statistic: 2.687 on 2 and 48 DF, p-value: 0.07833
PO4.model.ulva <- lm(Phosphate.Flux ~ ulva)
summary(PO4.model.ulva) # p-value: 0.1292
##
## Call:
## lm(formula = Phosphate.Flux ~ ulva)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.613 -4.041 -1.421 1.481 25.084
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.08196 2.10515 0.039 0.969
## ulvano ulva 1.26383 2.81312 0.449 0.655
## ulvaulva 4.65386 2.51129 1.853 0.070 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.982 on 48 degrees of freedom
## Multiple R-squared: 0.08174, Adjusted R-squared: 0.04348
## F-statistic: 2.137 on 2 and 48 DF, p-value: 0.1292
NOx.model.ulva <- lm(NOx.Flux ~ ulva)
summary(NOx.model.ulva) # p-value: 0.3844
##
## Call:
## lm(formula = NOx.Flux ~ ulva)
##
## Residuals:
## Min 1Q Median 3Q Max
## -48.121 -6.968 0.918 4.677 59.418
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -10.648 4.889 -2.178 0.0343 *
## ulvano ulva 4.011 6.533 0.614 0.5422
## ulvaulva 7.943 5.832 1.362 0.1795
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 16.21 on 48 degrees of freedom
## Multiple R-squared: 0.03905, Adjusted R-squared: -0.0009907
## F-statistic: 0.9753 on 2 and 48 DF, p-value: 0.3844
## Interaction effects, 3way anova
# 3-way anova code taken from www.quantide.com/wp-content/uploads/2017/02/Three-way-Anova-with-R.pdf
NH4.m1 <- aov(Ammonia.Flux~cockles*ulva*chamber, data=Nutrients)
summary(NH4.m1)
## Df Sum Sq Mean Sq F value Pr(>F)
## cockles 1 11682 11682 1.266 0.267
## ulva 2 41808 20904 2.265 0.117
## chamber 1 701 701 0.076 0.784
## cockles:ulva 2 701 350 0.038 0.963
## cockles:chamber 1 15669 15669 1.698 0.200
## ulva:chamber 2 304 152 0.016 0.984
## cockles:ulva:chamber 2 3194 1597 0.173 0.842
## Residuals 39 359983 9230
NH4.m2 <- update(NH4.m1, . ~ . - cockles:ulva:chamber)
Anova(NH4.m1, NH4.m2, type="III")
## Anova Table (Type III tests)
##
## Response: Ammonia.Flux
## Sum Sq Df F value Pr(>F)
## (Intercept) 5412 1 0.5863 0.4484
## cockles 904 1 0.0979 0.7560
## ulva 9688 2 0.5248 0.5958
## chamber 2877 1 0.3117 0.5798
## cockles:ulva 871 2 0.0472 0.9540
## cockles:chamber 6152 1 0.6665 0.4192
## ulva:chamber 1572 2 0.0852 0.9185
## cockles:ulva:chamber 3194 2 0.1730 0.8418
## Residuals 363177 41
# p-value: 0.7560, 0.5958, 0.5798, 0.9540, 0.4192, 0.9185, 0.8418
plot(NH4.m2) # residuals




PO4.m1 <- aov(Phosphate.Flux~cockles*ulva*chamber, data=Nutrients)
summary(PO4.m1)
## Df Sum Sq Mean Sq F value Pr(>F)
## cockles 1 7.0 6.98 0.126 0.725
## ulva 2 205.7 102.83 1.849 0.171
## chamber 1 5.2 5.24 0.094 0.760
## cockles:ulva 2 9.9 4.94 0.089 0.915
## cockles:chamber 1 99.5 99.47 1.789 0.189
## ulva:chamber 2 7.3 3.65 0.066 0.936
## cockles:ulva:chamber 2 45.1 22.55 0.406 0.669
## Residuals 39 2168.5 55.60
PO4.m2 <- update(PO4.m1, . ~ . - cockles:ulva:chamber)
Anova(PO4.m1, PO4.m2, type="III")
## Anova Table (Type III tests)
##
## Response: Phosphate.Flux
## Sum Sq Df F value Pr(>F)
## (Intercept) 13.29 1 0.2391 0.6276
## cockles 37.47 1 0.6738 0.4167
## ulva 62.16 2 0.5589 0.5763
## chamber 41.90 1 0.7535 0.3907
## cockles:ulva 16.68 2 0.1500 0.8612
## cockles:chamber 93.83 1 1.6876 0.2016
## ulva:chamber 23.80 2 0.2141 0.8082
## cockles:ulva:chamber 45.11 2 0.4056 0.6693
## Residuals 2213.65 41
# p-value: 0.4167, 0.5763, 0.3907, 0.8612, 0.2016, 0.8082, 0.6693
plot(PO4.m2)




NOx.m1 <- aov(NOx.Flux~cockles*ulva*chamber, data=Nutrients)
summary(NOx.m1)
## Df Sum Sq Mean Sq F value Pr(>F)
## cockles 1 682 682.3 2.473 0.124
## ulva 2 540 270.0 0.979 0.385
## chamber 1 220 220.3 0.799 0.377
## cockles:ulva 2 755 377.6 1.369 0.266
## cockles:chamber 1 1 1.3 0.005 0.946
## ulva:chamber 2 36 18.1 0.066 0.937
## cockles:ulva:chamber 2 140 69.8 0.253 0.778
## Residuals 39 10758 275.8
NOx.m2 <- update(NOx.m1, . ~ . - cockles:ulva:chamber)
Anova(NOx.m1, NOx.m2, type="III")
## Anova Table (Type III tests)
##
## Response: NOx.Flux
## Sum Sq Df F value Pr(>F)
## (Intercept) 119.8 1 0.4343 0.5138
## cockles 0.4 1 0.0016 0.9683
## ulva 36.5 2 0.0661 0.9361
## chamber 18.8 1 0.0681 0.7955
## cockles:ulva 114.9 2 0.2082 0.8129
## cockles:chamber 40.5 1 0.1467 0.7038
## ulva:chamber 59.6 2 0.1081 0.8978
## cockles:ulva:chamber 139.5 2 0.2529 0.7778
## Residuals 10897.5 41
# p-value: 0.9683, 0.9361, 0.7955, 0.8129, 0.7038, 0.8978, 0.7778
plot(NOx.m2)




# No interaction effects between cockles, ulva and chamber
# It appears that nutrients are not affected by cockles, ulva or chamber