Rate of Change Comparisons Between SEACAR & Older Dataset

This analysis compares rate of change for each station+parameter as calculated from the old and new datasets. Only slopes with significant p-values for in both datasets are considered in this analysis.

define getRateOfChangeParameters
library(here)
getRateOfChangeParameters <- function(){
  # read filenames from data/exports/parameterRateOfChange*.csv
  seacar_files <- list.files(here("data/exports/parameterRateOfChange"), pattern = ".*\\.csv", full.names = TRUE)
  # extract parameter names from filename basename
  seacar_parameters <- basename(seacar_files)
  seacar_parameters <- sub(".csv", "", seacar_parameters)

  # read filenames from data/seasonal-mann-kendall-stats/*.csv
  old_files <- list.files(here("data/seasonal-mann-kendall-stats"), pattern = ".*\\.csv", full.names = TRUE)
  # extract parameter names from filenames
  old_parameters <- basename(old_files)
  old_parameters <- sub(".csv", "", old_parameters)

  # return list of parameters that exist in either dataset
  return(union(seacar_parameters, old_parameters))
}
calculate differences in rate of change at each station
library(dplyr)
library(glue)
source(here("SEACARProgramCompare/mapProgramNameToShortName.R"))

# create empty data frame to store results
rate_of_change_comparison <- data.frame()
missing_seacar_parameters <- c()
missing_old_parameters <- c()

for (parameter in getRateOfChangeParameters()){

  # Read in the rate of change files
  seacar_rate_of_change <- tryCatch({
    read.csv(here("data/exports/parameterRateOfChange", glue("{parameter}.csv"))) %>%
      mutate(
        ProgramLocationID = as.character(ProgramLocationID),
        ProgramName = mapProgramNameToShortName(ProgramName)
      ) %>%  
      filter(!is.na(significant_slope))
  }, error = function(e){
    missing_seacar_parameters <<- c(missing_seacar_parameters, parameter)
    # print(e)
    NULL
  })
  
  old_rate_of_change <- tryCatch({
    read.csv(here("data/seasonal-mann-kendall-stats", glue("{parameter}.csv"))) %>%
      mutate(
        ProgramLocationID = as.character(site),
        ProgramName = mapProgramNameToShortName(source)
      ) %>%  
      filter(!is.na(significant_slope))
  }, error = function(e){
    missing_old_parameters <<- c(missing_old_parameters, parameter)
    # print(e)
    NULL
  })

  # Skip if either file is missing
  if (is.null(seacar_rate_of_change) || is.null(old_rate_of_change)) {
    # cat('!')
    next
  }

  # Compare the rate of change at each station
  seacar_rate_of_change %>%
    inner_join(old_rate_of_change, by = c("ProgramLocationID", "ProgramName")) %>%
    mutate(
      slope.new = significant_slope.x,  # from seacar_rate_of_change
      pvalue.new = pvalue.x,
      n_values.new = n_values.x,

      slope.old = significant_slope.y,  # from old_rate_of_change
      pvalue.old = pvalue.y,
      n_values.old = n_values.y,
      
      rate_of_change_diff = significant_slope.x - significant_slope.y,
      # keep only columns we need
      ProgramName = ProgramName,
      ParameterName = parameter,
      ProgramLocationID = ProgramLocationID,
      .keep = "none"
    ) -> current_comparison

  # append to results
  rate_of_change_comparison <- rbind(rate_of_change_comparison, current_comparison)
  # cat('.')
}

cat('\n\nMissing SEACAR parameters:', paste(missing_seacar_parameters, collapse = ', '))


Missing SEACAR parameters: Ammonia, Un-ionized (NH3), Ammonium, Filtered (NH4)
calculate differences in rate of change at each station
cat('\n\nMissing old parameters:', paste(missing_old_parameters, collapse = ', '))


Missing old parameters: Ammonium (NH4), Colored Dissolved Organic Matter, Light Extinction Coefficient, Nitrogen, inorganic, Secchi Depth, Total Ammonia (N)

Change in the number of values used to calculate slopes

Slopes calculated with fewer values are less reliable. The new data source is expected to have a higher n_value at each station.

n_values old vs new correlation

A line with slope 1 would indicate no change in the number of values used to calculate slopes. Data points above this line indicate an increase in the number of values used to calculate slopes. Points are expected to be above the diagonal because the new dataset has more points than the old dataset.

plot scatter plot of old vs new n_values
library(ggplot2)

# Calculate the range for both axes
max_slope <- max(c(rate_of_change_comparison$n_values.old, rate_of_change_comparison$n_values.new), na.rm = TRUE)
min_slope <- min(c(rate_of_change_comparison$n_values.old, rate_of_change_comparison$n_values.new), na.rm = TRUE)

ggplot(rate_of_change_comparison, aes(x = n_values.old, y = n_values.new)) +
  geom_point(shape=4, alpha=.2) +
  coord_equal(xlim = c(min_slope, max_slope), ylim = c(min_slope, max_slope)) +
  labs(title = "Old vs New Number of Values",
       x = "Old Number of Values",
       y = "New Number of Values")

Some station points can form lines parallel to the 1:1 line. These lines represent a set of stations that have added a similar number of points to the time series. It is likely these points from the same data provider.

Rate of Changes from slope.old and slope.new

The slopes calculated are expected to form a normal distribution around 0, with little change between the old and new data.

violin plot of slope.old and slope.new
library(ggplot2)
library(tidyr)

# Reshape to long format
df_long <- pivot_longer(rate_of_change_comparison, cols = c(slope.old, slope.new), 
                        names_to = "version", values_to = "slope")

ggplot(df_long, aes(x = version, y = slope, fill = version)) +
  geom_violin(trim = FALSE, alpha = 0.7) +
  geom_boxplot(width = 0.1, outlier.shape = NA, alpha = 0.5) +
  scale_x_discrete(labels = c("slope.new" = "New", "slope.old" = "Old")) +
  labs(title = "Slope Comparison", x = NULL, y = "Slope") +
  theme_minimal() +
  theme(legend.position = "none")

New vs Old Slopes

New vs Old Slopes Correlation

Slopes calculated from the new and old data should be highly correlated. Slopes with lower n_values are more likely to be spurious.

plot scatter plot of old vs new rate of change
library(ggplot2)

# Calculate the range for both axes
max_slope <- max(c(rate_of_change_comparison$slope.old, rate_of_change_comparison$slope.new), na.rm = TRUE)
min_slope <- min(c(rate_of_change_comparison$slope.old, rate_of_change_comparison$slope.new), na.rm = TRUE)

# Calculate quartiles for color scale
color_min <- quantile(rate_of_change_comparison$n_values.new, 0.25, na.rm = TRUE)
color_max <- quantile(rate_of_change_comparison$n_values.new, 0.75, na.rm = TRUE)

ggplot(rate_of_change_comparison, aes(x = slope.old, y = slope.new)) +
  # color by n_values
  geom_point(aes(color = n_values.new), shape=4, alpha=.3) +
  scale_color_gradient(low = "red", high = "blue", limits = c(color_min, color_max)) +
  coord_equal(xlim = c(min_slope, max_slope), ylim = c(min_slope, max_slope)) +
  labs(title = "Old vs New Rate of Change",
       x = "Old Rate of Change",
       y = "New Rate of Change",
       color = "N Values \n(quartile bounded)")

New vs Old p-values

The p-values calculated from the new and old data should be highly correlated. The p-values should become more significant (lower) as more data is added, so the majority of points should be below the diagonal.

plot scatter plot of old vs new significances
library(ggplot2)

# Calculate the range for both axes
max_slope <- max(c(rate_of_change_comparison$pvalue.old, rate_of_change_comparison$pvalue.new), na.rm = TRUE)
min_slope <- min(c(rate_of_change_comparison$pvalue.old, rate_of_change_comparison$pvalue.new), na.rm = TRUE)

ggplot(rate_of_change_comparison, aes(x = pvalue.old, y = pvalue.new)) +
  geom_point(shape = 4, alpha=.2) +
  coord_equal(xlim = c(min_slope, max_slope), ylim = c(min_slope, max_slope)) +
  labs(title = "Old vs New p Values",
       x = "Old p values",
       y = "New p values")

Rate of Change Differences

The rate of change differences should be normally distributed around 0.

plot distribution of rate of change differences
library(ggplot2)

ggplot(rate_of_change_comparison, aes(x = rate_of_change_diff)) +
  geom_histogram(bins = 50) +
  labs(title = "Distribution of Rate of Change Differences",
       x = "Rate of Change Difference",
       y = "Count")

Rate of Change Change Across Facets

Rate of change differences may be related to differences from a subset of the data.

Rate of Change Change Across ProgramName Facet

violin plot of new vs old rate of change facet programName
library(ggplot2)

ggplot(rate_of_change_comparison, aes(x = ProgramName, y = rate_of_change_diff)) +
  geom_violin() +
  labs(title = "Rate of Change Differences",
       x = "Parameter",
       y = "Rate of Change Difference")

Rate of Change Change Across ParameterName Facet

violin plot of new vs old rate of change facet parameterName
library(ggplot2)

ggplot(rate_of_change_comparison, aes(x = ParameterName, y = rate_of_change_diff)) +
  geom_violin() +
  theme(axis.text.x = element_text(angle = 45 , hjust = 1)) +
  labs(title = "Rate of Change Differences",
       x = "Parameter",
       y = "Rate of Change Difference")

Top Differences

The most different rate of change differences are plotted below. New data is plotted in red and old data in blue.

plot time series of top differences
library(here)
source(here("R", "getStationData.R"))
source(here("R", "plotStationParameterTimeSeriesComparison.R"))

# get top differences
subset_to_plot <- rate_of_change_comparison %>%
  ungroup() %>%
  arrange(desc(abs(rate_of_change_diff))) %>%
  head(10) 

# for each top diff, load the data and plot
for (i in 1:nrow(subset_to_plot)) {
  station <- subset_to_plot$ProgramLocationID[i]
  parameter_name <- subset_to_plot$ParameterName[i]
  program_name <- subset_to_plot$ProgramName[i]

  # Get data for the station+parameter
  df_station <- getStationData(station) %>%
    filter(
      ParameterName == parameter_name
    )

  # get ParameterUnits for source = "SEACAR_STD"
  seacar_units <- df_station %>% 
      filter(source == "SEACAR_STD") %>% 
      pull(ParameterUnits) %>% 
      unique() %>% 
      first()

  # get ParameterUnits for source = "OLD_STD"
  old_units <- df_station %>% 
      filter(source == "OLD_STD") %>% 
      pull(ParameterUnits) %>% 
      unique() %>% 
      first()


  # Create plot
  print(ggplot(df_station, aes(x = SampleDate, y = ResultValue, color = source)) +
      # point data
      geom_point(alpha = 0.4, shape=4) +
      labs(
      title = paste(program_name, "\n", station),
      x = "Sample Date",
      y = paste(parameter_name, "[", seacar_units, "||", old_units, "]")
      ) +
      theme_minimal() +
      theme(legend.position = "none")
  )
}

print station+parameter pairs with highest differences
library(dplyr)

rate_of_change_comparison %>%
  arrange(desc(abs(rate_of_change_diff))) %>%
  head(100) %>%
  print()
    ProgramName ProgramLocationID   slope.new   pvalue.new n_values.new
1     PalmBeach               31B -0.37500000 3.733642e-02           30
2          DERM              AC03  1.18813853 1.156481e-97          747
3         FKNMS               296  0.03478214 1.758528e-02          195
4     PalmBeach               31B  0.19692308 3.769572e-03           32
5     PalmBeach               31B -0.13333333 2.865573e-02           30
6     PalmBeach                24 -0.69250000 2.189570e-02           29
7     PalmBeach               31E -0.60000000 1.656744e-02           30
8     PalmBeach                15 -0.46666667 4.160131e-02           29
9     PalmBeach               12A -0.50000000 4.160131e-02           29
10    PalmBeach               31B  0.19687500 9.774176e-04           33
11         DERM              BB55 -0.80000000 2.314381e-07           43
12         DERM              BB42  0.45000000 2.492670e-05          171
13  AOML_SFPSSS                22  0.04005731 2.573111e-05          263
14         DERM              GL02  0.38250000 2.945696e-02          259
15  AOML_SFPSSS                 3  0.10566666 4.869302e-09          268
16  AOML_SFPSSS                 1  0.14490208 1.128928e-10          271
17    PalmBeach                13  0.47083333 1.017093e-02           51
18         DERM              FC15 -0.30000000 3.588784e-03           66
19  AOML_SFPSSS                21  0.07062500 7.494628e-03          191
20  AOML_SFPSSS                 2  0.07156087 2.835646e-08          276
21  AOML_SFPSSS                20  0.03178947 6.522667e-03          258
22      BROWARD                 4  0.20000000 4.426658e-02           26
23  AOML_SFPSSS                23  0.02252354 1.251856e-02          261
24  AOML_SFPSSS                 7  0.02968750 4.507703e-02          284
25  AOML_SFPSSS                 8  0.01700000 3.022601e-02          261
26         DERM              MR04  0.22500000 1.381325e-02           32
27  AOML_SFPSSS                 4  0.04451354 2.324120e-02          242
28    PalmBeach               31B -0.09250000 6.644280e-04           30
29  AOML_SFPSSS                 1 -0.04338462 3.388746e-07          201
30         DERM              GL02  0.20714052 3.525187e-07          726
31         DERM              CM02  0.20000000 2.786322e-03           69
32         DERM              GL02  0.19000000 2.764148e-08          259
33    PalmBeach                22 -0.14000000 4.403622e-02           26
34  AOML_SFPSSS                28  0.07550000 3.160677e-02          171
35  AOML_SFPSSS                22 -0.01949164 3.123551e-07          196
36  AOML_SFPSSS                 9  0.01290476 1.491174e-02          333
37    PalmBeach                24 -0.11000000 2.906539e-02           29
38  AOML_SFPSSS                13  0.05611579 1.563411e-04          171
39         DERM              BB29  0.14846154 1.440238e-13          560
40  AOML_SFPSSS                29  0.05575000 4.947948e-02          166
41  AOML_SFPSSS                11  0.05044139 1.709283e-03          171
42  AOML_SFPSSS                34  0.07531208 1.662166e-12          331
43         DERM              BB03  0.13333333 5.576888e-06          552
44         DERM              FC15  0.13153846 7.753564e-28          754
45  AOML_SFPSSS                14  0.05318182 2.062367e-03          180
46    PalmBeach               27B  0.08250000 2.865573e-02           30
47         DERM              MR08  0.12500000 1.145081e-03           68
48  AOML_SFPSSS                26  0.13311111 3.007368e-03          162
49         DERM              WC04  0.11857143 4.661859e-03          220
50  AOML_SFPSSS                37  0.31975143 5.140652e-05          122
51    PalmBeach               27A -0.08000000 3.104057e-02           30
52  AOML_SFPSSS                 2 -0.01109091 2.135373e-03          219
53  AOML_SFPSSS                 4  0.06769956 2.219730e-03          160
54  AOML_SFPSSS                14  0.05318182 2.062367e-03          180
55  AOML_SFPSSS                27  0.12508036 1.300924e-03          156
56         DERM              MR04  0.11000000 1.181496e-03          558
57    PalmBeach               31C -0.05666667 4.160131e-02           29
58  AOML_SFPSSS                67  0.13833333 3.186589e-02           57
59  AOML_SFPSSS                66  0.13416667 1.793400e-02           56
60  AOML_SFPSSS                51 -0.02300000 6.299113e-03          243
61  AOML_SFPSSS                 2  0.07156087 2.835646e-08          276
62         DERM              AC03  0.10300000 3.027643e-31          750
63  AOML_SFPSSS                62  0.14888889 2.933131e-02           60
64         DERM              MR07  0.10000000 5.795600e-03           66
65         DERM              TM08  0.10000000 1.308750e-02           70
66         DERM              BB23  0.10000000 1.278343e-06          561
67         DERM              WC04  0.09363889 4.254205e-03          223
68  AOML_SFPSSS                20 -0.03315385 3.140008e-10          192
69  AOML_SFPSSS                68  0.11416667 4.993830e-02           61
70         DERM              MR07  0.08909091 1.007033e-40          764
71  AOML_SFPSSS                36  0.31650000 3.403107e-05          140
72         DERM              MR07  0.08588875 5.995517e-04          267
73         DERM              MR08  0.08500000 6.504370e-26          778
74         DERM              MR04  0.08483333 3.265883e-14          519
75    PalmBeach                15  0.11670588 3.631866e-02           86
76  AOML_SFPSSS                58  0.01347208 1.797456e-02          179
77  AOML_SFPSSS                10  0.03300000 4.919382e-03          271
78  AOML_SFPSSS                35  0.21016364 8.247092e-04          127
79    PalmBeach               18D  0.40000000 1.191694e-02           51
80  AOML_SFPSSS                12  0.03461538 8.954981e-03          225
81  AOML_SFPSSS                 7 -0.01686563 1.458830e-11          357
82  AOML_SFPSSS                24  0.07022157 2.569533e-05          177
83    PalmBeach                11  0.03000000 1.186584e-03           64
84  AOML_SFPSSS                13  0.02706018 6.482980e-03          259
85  AOML_SFPSSS                 3 -0.01566667 1.890889e-04          204
86         DERM              AC03 -0.06545455 5.128685e-03           48
87  AOML_SFPSSS                15  0.04893333 4.049203e-03          173
88         DERM              GL02 -0.06153846 2.676790e-09          255
89  AOML_SFPSSS                38  0.24245000 2.883084e-03          128
90         DERM              BB23 -0.06000000 7.483378e-07          182
91         DERM              MR07  0.06000000 4.501427e-02          260
92         DERM              BB07  0.06000000 1.536776e-06          552
93  AOML_SFPSSS                 1  0.06672000 6.443087e-05          186
94         DERM              GL02  0.05916667 3.600818e-08          694
95         DERM              FC15  0.05750000 2.949569e-18          786
96  AOML_SFPSSS                 9  0.04597059 1.677202e-03          243
97         DERM              CM02  0.05708333 2.916861e-03           45
98         DERM              OL03  0.05625000 6.722318e-19          804
99    PalmBeach               38B  0.15576923 2.003488e-03           88
100        DERM              FC03  0.05470588 2.081847e-14          711
      slope.old   pvalue.old n_values.old rate_of_change_diff
1    1.17000000 2.657776e-02           23         -1.54500000
2    0.00000000 4.950655e-02          693          1.18813853
3    1.00833750 4.920279e-02           16         -0.97355536
4    1.17000000 2.657776e-02           23         -0.97307692
5    0.80000000 3.434167e-02           26         -0.93333333
6    0.20545455 2.337349e-05           84         -0.89795455
7    0.10200000 4.990093e-02           78         -0.70200000
8    0.17619048 4.884063e-03           79         -0.64285714
9    0.10612500 2.408973e-02           82         -0.60612500
10   0.80000000 3.434167e-02           26         -0.60312500
11  -0.30000000 5.908711e-05           43         -0.50000000
12   0.00000000 2.775608e-02          171          0.45000000
13   0.43645455 3.606127e-04          119         -0.39639724
14   0.00000000 3.030412e-03          672          0.38250000
15   0.44076250 1.811641e-03          127         -0.33509584
16   0.47885865 8.614401e-05          134         -0.33395657
17   0.15750000 2.114199e-02          144          0.31333333
18   0.00000000 8.470419e-22          230         -0.30000000
19   0.36980000 5.066682e-04          120         -0.29917500
20   0.36526434 1.933060e-03          121         -0.29370347
21   0.31020417 2.507107e-03          118         -0.27841469
22  -0.07692308 2.485380e-05          127          0.27692308
23   0.29342000 1.379429e-02          119         -0.27089646
24   0.29487659 1.263164e-03          133         -0.26518909
25   0.27048500 1.907554e-04          120         -0.25348500
26   0.00000000 4.863736e-04          171          0.22500000
27   0.26929333 3.905903e-02          120         -0.22477979
28   0.12000000 2.657776e-02           23         -0.21250000
29   0.16578571 2.007155e-04          120         -0.20917033
30   0.00000000 3.030412e-03          672          0.20714052
31   0.00000000 7.654482e-05          125          0.20000000
32   0.00000000 3.332684e-03          635          0.19000000
33   0.05000000 6.499729e-04           77         -0.19000000
34   0.26333929 5.461467e-03          117         -0.18783929
35   0.14385714 4.977060e-06          110         -0.16334878
36   0.17257750 8.017375e-03          126         -0.15967274
37   0.04658654 3.210523e-06           82         -0.15658654
38   0.20562500 1.628271e-02           54         -0.14950921
39   0.00000000 1.688245e-02          561          0.14846154
40   0.19561000 1.683339e-02          112         -0.13986000
41   0.18900000 2.376802e-02           55         -0.13855861
42  -0.06014091 4.709357e-04          113          0.13545299
43   0.00000000 3.197671e-02          552          0.13333333
44   0.00000000 2.082759e-02          694          0.13153846
45  -0.07441000 4.130871e-02          129          0.12759182
46  -0.04458333 2.757286e-02           67          0.12708333
47   0.00000000 9.261008e-26          248          0.12500000
48   0.25201167 8.004106e-03          118         -0.11890056
49   0.00000000 7.490556e-08          499          0.11857143
50   0.20389000 2.605673e-03          111          0.11586143
51   0.03375000 1.173477e-03           80         -0.11375000
52   0.10166667 3.944336e-06          111         -0.11275758
53   0.17942857 1.217996e-02           44         -0.11172901
54   0.16377778 7.257987e-03           55         -0.11059596
55   0.23528571 5.868701e-03          113         -0.11020536
56   0.00000000 3.918773e-03          558          0.11000000
57   0.05250000 6.515665e-05           75         -0.10916667
58   0.24566667 8.382393e-03           53         -0.10733333
59   0.24041667 2.928813e-03           52         -0.10625000
60  -0.12720000 3.376337e-03           56          0.10420000
61  -0.03166667 4.790038e-02           55          0.10322754
62   0.00000000 2.639379e-02          700          0.10300000
63   0.25058333 3.243892e-03           56         -0.10169444
64   0.00000000 1.736871e-24          235          0.10000000
65   0.00000000 1.061149e-27          253          0.10000000
66   0.00000000 9.736670e-07          561          0.10000000
67   0.00000000 1.000929e-07          503          0.09363889
68   0.05950000 5.718036e-03          109         -0.09265385
69   0.20350000 2.215731e-02           55         -0.08933333
70   0.00000000 1.072612e-02          704          0.08909091
71   0.22917500 9.125826e-04          129          0.08732500
72   0.00000000 8.118009e-03          746          0.08588875
73   0.00000000 4.518166e-02          721          0.08500000
74   0.00000000 2.342833e-03          519          0.08483333
75   0.20000000 4.134643e-03           77         -0.08329412
76   0.09452083 3.906780e-03           53         -0.08104875
77   0.11174000 4.730608e-02          117         -0.07874000
78   0.13150000 5.676177e-03          117          0.07866364
79   0.47750000 7.637197e-06          117         -0.07750000
80   0.11029875 3.614617e-05           55         -0.07568337
81  -0.09000665 2.244348e-07          127          0.07314102
82   0.14232143 3.775850e-02           57         -0.07209986
83  -0.04000000 1.456614e-08          141          0.07000000
84   0.09605084 3.654004e-02          120         -0.06899066
85   0.05025000 1.014978e-02          119         -0.06591667
86   0.00000000 2.650028e-02           43         -0.06545455
87   0.11225000 6.956505e-04           55         -0.06331667
88   0.00000000 6.853459e-12          239         -0.06153846
89   0.18234744 4.745449e-03          117          0.06010256
90   0.00000000 4.994773e-02          182         -0.06000000
91   0.00000000 1.072612e-02          704          0.06000000
92   0.00000000 1.808247e-02          553          0.06000000
93   0.12666667 4.790038e-02           55         -0.05994667
94   0.00000000 3.332684e-03          635          0.05916667
95   0.00000000 1.252331e-02          735          0.05750000
96   0.10316667 1.634339e-03           57         -0.05719608
97   0.00000000 3.024422e-03           57          0.05708333
98   0.00000000 3.276080e-04          514          0.05625000
99   0.10000000 4.694628e-02           80          0.05576923
100  0.00000000 4.231642e-02          665          0.05470588
                              ParameterName
1                         Water Temperature
2                                  Salinity
3                                  Salinity
4                         Water Temperature
5                                 Turbidity
6                          Dissolved Oxygen
7                         Water Temperature
8                         Water Temperature
9                         Water Temperature
10                                Turbidity
11                                Turbidity
12                                 Salinity
13                                 Salinity
14                                 Salinity
15                                 Salinity
16                                 Salinity
17  Chlorophyll a, Corrected for Pheophytin
18                                Turbidity
19                                 Salinity
20                                 Salinity
21                                 Salinity
22                                Turbidity
23                                 Salinity
24                                 Salinity
25                                 Salinity
26                                Turbidity
27                                 Salinity
28                                       pH
29                          NO2+3, Filtered
30                                 Salinity
31                                Turbidity
32                         Dissolved Oxygen
33                                       pH
34                                 Salinity
35                          NO2+3, Filtered
36                                 Salinity
37                                       pH
38                        Water Temperature
39                                 Salinity
40                                 Salinity
41                        Water Temperature
42  Chlorophyll a, Corrected for Pheophytin
43                                 Salinity
44                         Dissolved Oxygen
45                        Water Temperature
46                  Total Kjeldahl Nitrogen
47                                Turbidity
48                                 Salinity
49                                 Salinity
50                                 Salinity
51                                       pH
52                          NO2+3, Filtered
53                        Water Temperature
54                        Water Temperature
55                                 Salinity
56                                 Salinity
57                                       pH
58                        Water Temperature
59                        Water Temperature
60  Chlorophyll a, Corrected for Pheophytin
61                                 Salinity
62                        Water Temperature
63                        Water Temperature
64                                Turbidity
65                                Turbidity
66                                 Salinity
67                        Water Temperature
68                          NO2+3, Filtered
69                        Water Temperature
70                         Dissolved Oxygen
71                                 Salinity
72                        Water Temperature
73                         Dissolved Oxygen
74                         Dissolved Oxygen
75                         Dissolved Oxygen
76                                 Salinity
77                                 Salinity
78                                 Salinity
79  Chlorophyll a, Corrected for Pheophytin
80                        Water Temperature
81  Chlorophyll a, Corrected for Pheophytin
82                        Water Temperature
83                  Total Kjeldahl Nitrogen
84                                 Salinity
85                          NO2+3, Filtered
86                  Total Kjeldahl Nitrogen
87                        Water Temperature
88                                Turbidity
89                                 Salinity
90                                Turbidity
91                         Dissolved Oxygen
92                                 Salinity
93                        Water Temperature
94                         Dissolved Oxygen
95                        Water Temperature
96                        Water Temperature
97                  Total Kjeldahl Nitrogen
98                                 Salinity
99                         Dissolved Oxygen
100                       Water Temperature