In July and August, 2024, the thaw slump monitoring station installed at Takhini Slump #2 (the new, small slump) recorded multiple ground sensor exposures from rapid RTS headwall regression. This provides us the opportunity to inspect the baseline air and ground temperature patterns at the site, see what an exposure looks like in the ground temperature data, and begin designing algorithms for detecting exposures using these data.
The objectives of this document are to:
Inspect the temperature data characteristics before, during, and after sensor exposure.
Use this exposure data to construct algorithms for detecting these exposures post hoc, with the intention for them to be applied to real-time exposure detection in the future.
Section 1 is a first-round visual inspection of the data from the RTS monitoring station at the small Takhini slump.
Subsection 1.1 is not really pertinent for the reader understanding anything, but these code blocks are necessary for constructing graphs later.
# 1) PACKAGES
library(pacman)
pacman::p_load(data.table,dplyr,ggplot2,lubridate,mgcv,numDeriv,plotly,readxl,splines,stats,stringr,tidyr,tidyverse,webshot2)
# 2) DATA IMPORT
data <- read_csv("Data/AH1456_Stn2_Jul-Aug2024.csv")
## Rows: 1488 Columns: 18
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): DateTime
## dbl (17): Air, GT_1.25m, GT_2.5m, GT_3.75m, GT_5m, GT_6.25m, GT_7.5m, GT_9.7...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# 3) FORMATTING
data$DateTime <- mdy_hm(data$DateTime)
# 4) SUBSETTING
data_exposed <- list(
data_all = data,
data_21m = data |> select(DateTime, Air, GT_21m),
data_19.75m = data |> select(DateTime, Air, GT_19.75m),
data_18.5m = data |> select(DateTime, Air, GT_18.5m),
data_17.25m = data |> select(DateTime, Air, GT_17.25m),
data_16m = data |> select(DateTime, Air, GT_16m)
)
# 5) MELTING
data_exposed_long <- lapply(data_exposed, function(x) {
pivot_longer(x, colnames(x)[-1])
})
Subsection 1.2 looks at the July & August ground sensor exposures.
Black dashed lines in the following plots indicate the approximate time of exposure.
plot_sensor_21m <- ggplot(data_exposed_long$data_21m, aes(x = DateTime, y = value, group = name, colour = name)) +
geom_line() +
scale_x_datetime(name = "Time", breaks = "1 day") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-07-12 10:00:00")),
linewidth = 0.5, linetype = "dashed", color = "black")
ggplotly(plot_sensor_21m)
Before Exposure
Prior to the exposure, ground temperature behaved as expected:
Amplitudes of the diurnal temperature swings were smaller than air temperature.
The cooling cycles were more gradual than the warming cycle.
The ground temperature dataset is smoother than the air temperature dataset.
The ground temperature local minima and maxima lagged behind the local minima and maxima of the air temperature.
LocMin-GT lagged behind LocMin-AT by a very consistent 3hr (06:00 -> 09:00)
LocMax-GT lag time was more variable, with a mode of 2hr.
Anomaly on July 9 at 14:00
Not sure what this ground temperature spike is from. My guess is a wire or connection got stretched by tension in the ground leading up to failure, causing the resistivity to increase until the tension in the wire or connection relaxed as the thermistor cable lost some cohesion with the surrounding soil. If this is true, receiving an alarm from such an event may actually be useful, because it tells us the strain in the ground is increasing.
Exposure (July 12, 10:00)
Occurred at bottom of ground temperature trough.
Following warming rate (3.1°C/hr) is faster than previous warming periods.
Exposure occurs right when the air temperature curve would be crossing the ground temperature curve. So, triggering an alarm based on a comparison between ground and air temperature would not work for this event.
plot_sensor_19.75m <- ggplot(data_exposed_long$data_19.75m, aes(x = DateTime, y = value, group = name, colour = name)) +
geom_line() +
scale_x_datetime(name = "Time", breaks = "1 day") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-08-06 10:00:00")),
linewidth = 0.5, linetype = "dashed", color = "black")
ggplotly(plot_sensor_19.75m)
Before Exposure
Prior to the exposure, ground temperature behaved as expected:
Amplitudes of the diurnal temperature swings were smaller than air temperature.
The cooling cycles were more gradual than the warming cycle.
The ground temperature dataset is smoother than the air temperature dataset.
The ground temperature local minima and maxima lagged behind the local minima and maxima of the air temperature.
LocMin-GT lagged behind LocMin-AT by 2-3hr (usually 2).
LocMax-GT lagged behind LocMax-AT by 2-3hr
The GT fluctuation magnitude prior to exposure is ~4°C.
Exposure (Aug 6, 2024 10:00)
After Exposure
GT sensor fluctuation magnitude was ~13°C.
Morning temperature climbs were steep, but got slower as the peaked.
On days with very warm maximum air temperature, the exposed GT sensor didn’t fully peak to the same temperature, though the local GT sensor minimums matched the local AT minimums very closely. This may be because the exposed sensor had a bit of mud still clinging to the outside or because it was heavily shaded by the RTS headwall overhang.
From Aug 11 onward, the local (night time) minimums of the exposed sensor were usually colder than that of the air temperature. This may be because the exposed sensor is so well shaded by the headwall overhang that it’s not able to absorb thermal energy from the sun during the day to offset its thermal loss in the evening and night, particularly if there is a bid of mud covering it that absorbs some of the new heat before the sensor casing itself can absorb heat.
plot_sensor_18.5m <- ggplot(data_exposed_long$data_18.5m, aes(x = DateTime, y = value, group = name, colour = name)) +
geom_line() +
scale_x_datetime(name = "Time", breaks = "1 day") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-08-12 03:00:00")),
linewidth = 0.5, linetype = "dashed", color = "black")
ggplotly(plot_sensor_18.5m)
Before Exposure
Prior to the exposure, ground temperature behaved as expected:
Amplitudes of the diurnal temperature swings were smaller than air temperature.
The cooling cycles were more gradual than the warming cycle.
The ground temperature dataset is smoother than the air temperature dataset.
The ground temperature local minima and maxima lagged behind the local minima and maxima of the air temperature.
LocMin-GT lagged behind LocMin-AT by 3-4hr
LocMax-GT lagged behind LocMax-AT by 1-4hr
Diurnal fluctuation magnitude of GT sensor ~3.2°C
Exposure (Aug 12, 2024 03:00)
Exposure happened at the same time as the 17.25m and 16m sensors.
The datetime of exposure is inferred by the precipitous drop in temperature on Aug 12 at 03:00.
The GT sensor shows an increase in noise a few hours before the exposure.
After Exposure
Diurnal fluctuation magnitude of the exposed GT sensor is highly variable, but averages ~10.4°C for the first several days after exposure.
For the first several days after exposure, the exposed GT sensor values have much more noise that before exposure.
On particularly warm days, the local maximum of the GT sensor does not quite reach that of the air temperature, while the local GT and AT minimums are very similar. This is a similar patter to the 19.75m sensor after exposure and is likely attributable to the same causes: shading by the headwall overhang and mud sticking to the sensor casing.
plot_sensor_17.25m <- ggplot(data_exposed_long$data_17.25m, aes(x = DateTime, y = value, group = name, colour = name)) +
geom_line() +
scale_x_datetime(name = "Time", breaks = "1 day") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-08-12 03:00:00")),
linewidth = 0.5, linetype = "dashed", color = "black")
ggplotly(plot_sensor_17.25m)
The patterns observed for the 17.25m sensor are the same as for the 18.5m sensor. (The 18.5m, 17.25m, and 16m sensors were all exposed at the same time by a very large mass-wasting event at the headwall).
plot_sensor_16m <- ggplot(data_exposed_long$data_16m, aes(x = DateTime, y = value, group = name, colour = name)) +
geom_line() +
scale_x_datetime(name = "Time", breaks = "1 day") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-08-12 03:00:00")),
linewidth = 0.5, linetype = "dashed", color = "black")
ggplotly(plot_sensor_16m)
The 16m sensor was exposed at the same time as the 17.25m and 18.5m sensors during a large mass wasting event at the RTS headwall on Aug 12 at 03:00. The details before, during, and after exposure for the 16m sensor are the same as that for these other two sensors.
plot_all_sensors <- ggplot(data_exposed_long$data_all |>
filter(!(name %in% c("Air", "GT_21m", "GT_19.75m", "GT_18.5m", "GT_17.25m", "GT_16m"))),
aes(DateTime, value, group = name, colour = name)) +
geom_line() +
scale_x_datetime(name = "Time")
ggplotly(plot_all_sensors)
Section 2 is concerned with a form of time series analysis called Change Point Detection (CPD). Change point detection is a statistical treatment for identifying points in time when the statistical properties of a time series changes abruptly. These points of sudden change are known as … you guessed it … “change points”.
Rather than a rigorous literature review of know methods for CPD, the following is a discussion of methods I’ve come up with so far on my own, augmented by some external reading here and there.
Figure 2.1 shows a chart of the different types of CPD methods I’ve explored for detecting thermistor exposure. How these methods function will be explained in more detail below.
Ground-to-Ground — Ground-to-ground methods are those methods that compare the temperature from the ground sensor of interest to one or more of the other ground sensors that comprise the thermistor string. The idea is that, as long as the ground sensors share a similar overlying and surrounding environmental parameters, their temperature readings should be very similar. Therefore, if a sensor is exposed, it will begin recording temperatures of a drastic enough temperature from the other ground sensors to be statistically differentiable.
Instantaneous ground-to-ground methods (IGGs) compare the temperature “newest point of acquisition” (NPA) – the most recent data point to be downloaded – of the ground sensor under investigation to one or more readings taken from other ground temperature sensors at the same time stamp (Fig 2.2).
Window ground-to-ground methods (WGGs) compare the NPA temperature of the test sensor to some parameter derived by analyzing a window of data belonging to one or more other ground sensors (Fig 2.3).
Ground-to-Air — Ground-to-air methods are those methods that compare the temperature from the ground sensor of interest to the air temperature measured at the Met station. The idea is that if the temperature of the ground sensor is close enough to the air temperature, this indicates the sensor has been exposed.
Instantaneous ground-to-air methods (IGAs) compare the temperature of the test sensor to that of the air sensor at a single time stamp (Fig 2.4).
Window ground-to-air methods (WGAs) compare {…}
This method compares the value of a ground temperature sensor to the average of three reference ground temperature sensors sensors. This method should be valid if the environmental characteristics (burial depth, vegetative shading, soil type, soil moisture, soil compaction, etc.) are the same for the test and reference sensors.
Function Argument | Argument Description |
dat |
|
refsensors |
|
testsensor |
|
threshold |
|
method |
|
|
IGG <- function(dat,refsensors,testsensor,threshold,method) {
if(method == "SC") {
workData <- dat |> select(all_of(refsensors), testsensor)
output <- workData |> rowwise() |> mutate(Diff = abs(!!sym(refsensors) - !!sym(testsensor)),
Threshold = Diff >= threshold)
output <- cbind(DateTime = dat$DateTime, output)
return(output)
} else if (method == "MCMSD"){
workData <- dat |> select(all_of(refsensors), testsensor)
output <- workData |> rowwise() |> mutate(Mean = mean(c(!!!syms(refsensors))),
SD = sd(c(!!!syms(refsensors))),
Z_Score = abs(Mean - !!sym(testsensor)) / SD,
Threshold = Z_Score >= threshold
)
output <- cbind(DateTime = dat$DateTime, output)
return(output)
} else if (method == "MC") {
IGG_test_list <- list()
for (i in refsensors) {
workData <- dat |> select(all_of(i), testsensor)
out <- workData |> rowwise() |> mutate(Diff = abs(!!sym(i) - !!sym(testsensor)),
Threshold = Diff >= threshold)
IGG_test_list[[length(IGG_test_list) + 1]] <- out
}
return(IGG_test_list)
}
}
The following tests the Instantaneous Ground-to-Ground CPD method on each of the sensors that experienced exposure during the July-Aug 2024 period. The choice to use the 1.25m ground sensor (the ground sensor closest to the Met station) as the control was more-or-less arbitrary, but is considered a valid choice due to the similar vegetation, soil, and shading characteristics at both 1.25m and the rest of the thermistor string.
Executes the IGG test using the
IGG
function previously defined to assess the exposure status on the exposed sensors using the closest sensor to the Met station (1.25m) as a control:
IGG_result_21m <- IGG(dat = data, refsensors = "GT_1.25m", testsensor = "GT_21m", threshold = 5, method = "SC")
## Warning: Using an external vector in selections was deprecated in tidyselect 1.1.0.
## ℹ Please use `all_of()` or `any_of()` instead.
## # Was:
## data %>% select(testsensor)
##
## # Now:
## data %>% select(all_of(testsensor))
##
## See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
IGG_result_19.75m <- IGG(dat = data, refsensors = "GT_1.25m", testsensor = "GT_19.75m", threshold = 4.2, method = "SC")
IGG_result_18.5m <- IGG(dat = data, refsensors = "GT_1.25m", testsensor = "GT_18.5m", threshold = 3.3, method = "SC")
IGG_result_17.25m <- IGG(dat = data, refsensors = "GT_1.25m", testsensor = "GT_17.25m", threshold = 4, method = "SC")
IGG_result_16m <- IGG(dat = data, refsensors = "GT_1.25m", testsensor = "GT_16m", threshold = 4, method = "SC")
Plots the results of the IGG tests using
ggplot
andplotly
:
# Define graphs plotting the absolute value difference between the test and control sensors
IGG_plot_21m <- ggplot(IGG_result_21m, aes(DateTime, Diff)) +
ggtitle("Example Plot 1: IGG Evaluation of the 21m Sensor
Relative to 1.25m Reference Sensor") +
geom_line() +
scale_x_datetime(name = "Time", breaks = "days") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-07-12 10:00:00")), color = "red", linetype = "dashed", linewidth = 0.5) +
geom_vline(xintercept = IGG_result_21m |>
filter(Threshold == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linetype = "solid", linewidth = 0.05
)
IGG_plot_19.75m <- ggplot(IGG_result_19.75m, aes(DateTime, Diff)) +
ggtitle("Example Plot 2: IGG Evaluation of the 19.75m Sensor
Relative to 1.25m Reference Sensor") +
geom_line() +
scale_x_datetime(name = "Time", breaks = "days") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-08-06 10:00:00")), color = "red", linetype = "dashed", linewidth = 0.5) +
geom_vline(xintercept = IGG_result_19.75m |>
filter(Threshold == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linetype = "solid", linewidth = 0.05
)
IGG_plot_18.5m <- ggplot(IGG_result_18.5m, aes(DateTime, Diff)) +
ggtitle("Example Plot 3: IGG Evaluation of the 18.5m Sensor
Relative to 1.25m Reference Sensor") +
geom_line() +
scale_x_datetime(name = "Time", breaks = "days") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-08-12 03:00:00")), color = "red", linetype = "dashed", linewidth = 0.5) +
geom_vline(xintercept = IGG_result_18.5m |>
filter(Threshold == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linetype = "solid", linewidth = 0.05
)
IGG_plot_17.25m <- ggplot(IGG_result_17.25m, aes(DateTime, Diff)) +
ggtitle("Example Plot 4: IGG Evaluation of the 17.25m Sensor
Relative to 1.25m Reference Sensor") +
geom_line() +
scale_x_datetime(name = "Time", breaks = "days") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-08-12 03:00:00")), color = "red", linetype = "dashed", linewidth = 0.5) +
geom_vline(xintercept = IGG_result_17.25m |>
filter(Threshold == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linetype = "solid", linewidth = 0.05
)
IGG_plot_16m <- ggplot(IGG_result_16m, aes(DateTime, Diff)) +
ggtitle("Example Plot 5: IGG Evaluation of the 16m Sensor
Relative to 1.25m Reference Sensor") +
geom_line() +
scale_x_datetime(name = "Time", breaks = "days") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-08-12 03:00:00")), color = "red", linetype = "dashed", linewidth = 0.5) +
geom_vline(xintercept = IGG_result_16m |>
filter(Threshold == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linetype = "solid", linewidth = 0.05
)
# IGG_plot2_16m <- ggplot(IGG_result_16m |>
# select(DateTime, GT_1.25m, GT_16m) |>
# pivot_longer(cols = c(GT_1.25m, GT_16m)),
# aes(DateTime, value, group = name, colour = name)) +
# ggtitle("Example Plot 6: A closer look at the 16m sensor")
# geom_line()
ggplotly(IGG_plot_21m)
ggplotly(IGG_plot_19.75m)
ggplotly(IGG_plot_18.5m)
ggplotly(IGG_plot_17.25m)
ggplotly(IGG_plot_16m)
# ggplotly(IGG_plot2_16m)
In Example Plots 1-5, the black line is the absolute value difference
between the test sensor and the control sensor (1.25m). The thin, solid,
red, vertical lines are calculated change points produced by the
IGG
function. The red, dashed, vertical line is the
exposure time stamp, estimated by visual inspection.
The IGG method overall was successful at identifying change points at the correct exposure time stamp. The notable exception was the 16m sensor. The unique thresholds used were determined by visual inspection for each of the sensors prior to the IGG test. This process was time consuming and the static nature of these thresholds means they may not work well for a real-time monitoring application.
Example Plot 1 shows the IGG test conducted on the 21m sensor with a threshold of 5. The algorithm correctly identifies change points associated with the July 9th temperature spike associated with sensor error. We also don’t get any change points until immediately following exposure. Change point swarms are associated with the coldest and warmest periods of the night/day and are inversely absent during temperature cross-over points.
Example Plot 2 shows the IGG test conducted on the 19.75m sensor with a threshold of 4.2. Change point clusters only start 6 hours after the estimated exposure time, which is a reasonable result. A lower threshold would have produced change points closer to the estimated exposure time, but also would have created false positive change points in the late July range of the data set.
Example Plot 3 shows the IGG test conducted on the 18.5m sensor with a threshold of 3.3. Change point clusters start 7 hours. This is still a fairly decent result, but ideally should be a bit sooner. However, a smaller threshold would have also created false positive change points prior to exposure time.
Example Plot 4 shows the IGG test conducted on the 17.25m sensor with a threshold of 4. The first change point occurs 3 hours after the estimated exposure time, which is a good result. Like the others, a smaller threshold would have resulted in false positive change points prior to exposure time.
Example Plot 5 shows the IGG test conducted on the 16m sensor. The test fails to accurately identify the correct exposure time. An arbitrary threshold value of 4 was used, but a larger threshold would not have made a difference because the exposure time occurs when when the absolute difference values are the smallest within the data set. The results from this particular exposure highlight the fact that exposure is not necessarily accompanied by an increase in the the difference between the test and controls sensors.
Overall, this technique is simple and seems to be a promising candidate for ground sensor exposure detection, with the added benefit of detecting some sensor errors. However, the results for the 16m sensor show that a different statistical treatment needs to be applied to detect exposures that are not associated with an increase in temperature difference between the test and control sensors.
This example uses a single sensor approach, similar to that performed in section 2.1.2, but on multiple control sensors, hopefully resulting in better robustness. A change point will be reported if all test results (i.e. the Threshold columns) have a value of TRUE.
Executes the IGG test using the new
IGG
function to assess the exposure status the 21m sensor using the closest sensors to the Met station (1.25m, 2.5m, and 3.75m) for reference:
# Running the IGG test on three sensors individually
IGG_result_MC <- IGG(dat = data, refsensors = c("GT_1.25m","GT_2.5m","GT_3.75m"), testsensor = "GT_21m", threshold = 8, method = "MC")
IGG_result_1.25m <- IGG(dat = data, refsensors = "GT_1.25m", testsensor = "GT_21m", threshold = 5, method = "SC")
IGG_result_2.5m <- IGG(dat = data, refsensors = "GT_2.5m", testsensor = "GT_21m", threshold = 5, method = "SC")
IGG_result_3.75m <- IGG(dat = data, refsensors = "GT_3.75m", testsensor = "GT_21m", threshold = 8, method = "SC")
# Combining the threshold results for each of these individual tests into a single dataframe
IGG_threshold_result <- cbind(DateTime = IGG_result_1.25m$DateTime,
threshold_1.25m = IGG_result_1.25m$Threshold,
threshold_2.5m = IGG_result_2.5m$Threshold,
threshold_3.75m = IGG_result_3.75m$Threshold) |> as.data.frame()
colnames(IGG_threshold_result) <- c("DateTime","threshold_1.25m","threshold_2.5m","threshold_3.75m")
# Creating a third column containing the final test verdict (TRUE if the other three Threshold # columns are all TRUE)
IGG_threshold_result <- IGG_threshold_result |> mutate(threshold_all = if_all(c("threshold_1.25m", "threshold_2.5m", "threshold_3.75m"), ~ . == TRUE))
Plots the results using
ggplot
andplotly
. Also plot the reference and test sensors lines next to each other for comparison:
IGG_plot_final <- ggplot() +
ggtitle("Example Plot 6: Multiple Single Control Sensor Comparisons") +
geom_line(data = data |> select(DateTime,GT_21m), aes(DateTime, GT_21m), colour = "blue") +
geom_vline(xintercept = IGG_threshold_result |>
filter(threshold_all == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linetype = "solid", linewidth = 0.05) +
geom_vline(xintercept = as.numeric(ymd_hms("2024-07-12 10:00:00")),
colour = "red", linetype = "dashed")
# scale_x_datetime(name = "Time")
ggplotly(IGG_plot_final)
Example Plot 6 shows that the change point clusters correctly identify the anomaly on July 9 and exposure on July 12 at 10:00. After exposure, change point clusters reoccur daily, similar to using a single reference sensor (section 2.1.2), except that there are few clusters overall when multiple control sensors were used.
Executes the IGG test using the new
IGG
function to assess the exposure status the sensors that experienced exposure during the July-Aug 2024 period using the closest three sensors to the Met station (1.25m, 2.5m, 3.75m) for reference:
IGG_result_21m <- IGG(dat = data, refsensors = c("GT_1.25m","GT_2.5m","GT_3.75m"), testsensor = "GT_21m", threshold = 20, method = "MCMSD")
IGG_result_19.75m <- IGG(dat = data, refsensors = c("GT_1.25m","GT_2.5m","GT_3.75m"), testsensor = "GT_19.75m", threshold = 20, method = "MCMSD")
IGG_result_18.5m <- IGG(dat = data, refsensors = c("GT_1.25m","GT_2.5m","GT_3.75m"), testsensor = "GT_18.5m", threshold = 15, method = "MCMSD")
IGG_result_17.25m <- IGG(dat = data, refsensors = c("GT_1.25m","GT_2.5m","GT_3.75m"), testsensor = "GT_17.25m", threshold = 21, method = "MCMSD")
IGG_result_16m <- IGG(dat = data, refsensors = c("GT_1.25m","GT_2.5m","GT_3.75m"), testsensor = "GT_16m", threshold = 21, method = "MCMSD")
Plots the results of the IGG tests:
IGG_plot_21m <- ggplot(IGG_result_21m, aes(DateTime, Z_Score)) +
ggtitle("Example Plot 7: IGG Evaluation of the 21m Sensor
Relative to Reference Sensors") +
geom_line() +
scale_x_datetime(name = "Time", breaks = "days") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-07-12 10:00:00")), color = "red", linetype = "dashed", linewidth = 0.5) +
geom_vline(xintercept = IGG_result_21m |>
filter(Threshold == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linetype = "solid", linewidth = 0.05
)
IGG_plot_19.75m <- ggplot(IGG_result_19.75m, aes(DateTime, Z_Score)) +
ggtitle("Example Plot 8: IGG Evaluation of the 19.75m Sensor
Relative to Reference Sensors") +
geom_line() +
scale_x_datetime(name = "Time", breaks = "days") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-08-06 10:00:00")), color = "red", linetype = "dashed", linewidth = 0.5) +
geom_vline(xintercept = IGG_result_19.75m |>
filter(Threshold == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linetype = "solid", linewidth = 0.05
)
IGG_plot_18.5m <- ggplot(IGG_result_18.5m, aes(DateTime, Z_Score)) +
ggtitle("Example Plot 9: IGG Evaluation of the 18.5m Sensor
Relative to Reference Sensors") +
geom_line() +
scale_x_datetime(name = "Time", breaks = "days") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-08-12 03:00:00")), color = "red", linetype = "dashed", linewidth = 0.5) +
geom_vline(xintercept = IGG_result_18.5m |>
filter(Threshold == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linetype = "solid", linewidth = 0.05
)
IGG_plot_17.25m <- ggplot(IGG_result_17.25m, aes(DateTime, Z_Score)) +
ggtitle("Example Plot 10: IGG Evaluation of the 17.25m Sensor
Relative to Reference Sensors") +
geom_line() +
scale_x_datetime(name = "Time", breaks = "days") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-08-12 03:00:00")), color = "red", linetype = "dashed", linewidth = 0.5) +
geom_vline(xintercept = IGG_result_17.25m |>
filter(Threshold == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linetype = "solid", linewidth = 0.05
)
IGG_plot_16m <- ggplot(IGG_result_16m, aes(DateTime, Z_Score)) +
ggtitle("Example Plot 11: IGG Evaluation of the 16m Sensor
Relative to Reference Sensors") +
geom_line() +
scale_x_datetime(name = "Time", breaks = "days") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-08-12 03:00:00")), color = "red", linetype = "dashed", linewidth = 0.5) +
geom_vline(xintercept = IGG_result_16m |>
filter(Threshold == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linetype = "solid", linewidth = 0.05
)
ggplotly(IGG_plot_21m)
ggplotly(IGG_plot_19.75m)
ggplotly(IGG_plot_18.5m)
ggplotly(IGG_plot_17.25m)
ggplotly(IGG_plot_16m)
Plots the test sensors and the related control sensors, control sensor means, and SD envelope:
stats_plot_21m <- ggplot(data = IGG_result_21m) +
ggtitle("Example Plot 12: Comparison of 21m Sensor, Reference Sensors,
and Reference Sensor Parameters") +
geom_line(aes(DateTime, GT_21m), colour = "blue") +
geom_line(aes(DateTime, GT_1.25m), colour = "darkgreen") +
geom_line(aes(DateTime, GT_2.5m), colour = "darkgreen") +
geom_line(aes(DateTime, GT_3.75m), colour = "darkgreen") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-07-12 10:00:00")), color = "red", linetype = "dashed", linewidth = 0.5) +
geom_line(aes(DateTime, Mean), colour = "darkorange") +
geom_line(aes(DateTime, Mean + SD), colour = "darkorange", linetype = "dashed") +
geom_line(aes(DateTime, Mean - SD), colour = "darkorange", linetype = "dashed") +
geom_vline(xintercept = IGG_result_21m |>
filter(Threshold == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linetype = "solid", linewidth = 0.05
)
stats_plot_19.75m <- ggplot(data = IGG_result_19.75m) +
ggtitle("Example Plot 13: Comparison of 19.75m Sensor, Reference Sensors,
and Reference Sensor Parameters") +
geom_line(aes(DateTime, GT_19.75m), colour = "blue") +
geom_line(aes(DateTime, GT_1.25m), colour = "darkgreen") +
geom_line(aes(DateTime, GT_2.5m), colour = "darkgreen") +
geom_line(aes(DateTime, GT_3.75m), colour = "darkgreen") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-08-06 10:00:00")), color = "red", linetype = "dashed", linewidth = 0.5) +
geom_line(aes(DateTime, Mean), colour = "darkorange") +
geom_line(aes(DateTime, Mean + SD), colour = "darkorange", linetype = "dashed") +
geom_line(aes(DateTime, Mean - SD), colour = "darkorange", linetype = "dashed") +
geom_vline(xintercept = IGG_result_19.75m |>
filter(Threshold == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linetype = "solid", linewidth = 0.05
)
stats_plot_18.5m <- ggplot(data = IGG_result_18.5m) +
ggtitle("Example Plot 14: Comparison of 18.5m Sensor, Reference Sensors,
and Reference Sensor Parameters") +
geom_line(aes(DateTime, GT_18.5m), colour = "blue") +
geom_line(aes(DateTime, GT_1.25m), colour = "darkgreen") +
geom_line(aes(DateTime, GT_2.5m), colour = "darkgreen") +
geom_line(aes(DateTime, GT_3.75m), colour = "darkgreen") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-08-12 03:00:00")), color = "red", linetype = "dashed", linewidth = 0.5) +
geom_line(aes(DateTime, Mean), colour = "darkorange") +
geom_line(aes(DateTime, Mean + SD), colour = "darkorange", linetype = "dashed") +
geom_line(aes(DateTime, Mean - SD), colour = "darkorange", linetype = "dashed") +
geom_vline(xintercept = IGG_result_18.5m |>
filter(Threshold == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linetype = "solid", linewidth = 0.05
)
stats_plot_17.25m <- ggplot(data = IGG_result_17.25m) +
ggtitle("Example Plot 15: Comparison of 17.25m Sensor, Reference Sensors,
and Reference Sensor Parameters") +
geom_line(aes(DateTime, GT_17.25m), colour = "blue") +
geom_line(aes(DateTime, GT_1.25m), colour = "darkgreen") +
geom_line(aes(DateTime, GT_2.5m), colour = "darkgreen") +
geom_line(aes(DateTime, GT_3.75m), colour = "darkgreen") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-08-12 03:00:00")), color = "red", linetype = "dashed", linewidth = 0.5) +
geom_line(aes(DateTime, Mean), colour = "darkorange") +
geom_line(aes(DateTime, Mean + SD), colour = "darkorange", linetype = "dashed") +
geom_line(aes(DateTime, Mean - SD), colour = "darkorange", linetype = "dashed") +
geom_vline(xintercept = IGG_result_17.25m |>
filter(Threshold == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linetype = "solid", linewidth = 0.05
)
stats_plot_16m <- ggplot(data = IGG_result_16m) +
ggtitle("Example Plot 16: Comparison of 16m Sensor, Reference Sensors,
and Reference Sensor Parameters") +
geom_line(aes(DateTime, GT_16m), colour = "blue") +
geom_line(aes(DateTime, GT_1.25m), colour = "darkgreen") +
geom_line(aes(DateTime, GT_2.5m), colour = "darkgreen") +
geom_line(aes(DateTime, GT_3.75m), colour = "darkgreen") +
geom_vline(xintercept = as.numeric(ymd_hms("2024-08-12 03:00:00")), color = "red", linetype = "dashed", linewidth = 0.5) +
geom_line(aes(DateTime, Mean), colour = "darkorange") +
geom_line(aes(DateTime, Mean + SD), colour = "darkorange", linetype = "dashed") +
geom_line(aes(DateTime, Mean - SD), colour = "darkorange", linetype = "dashed") +
geom_vline(xintercept = IGG_result_16m |>
filter(Threshold == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linetype = "solid", linewidth = 0.05
)
ggplotly(stats_plot_21m)
ggplotly(stats_plot_19.75m)
ggplotly(stats_plot_18.5m)
ggplotly(stats_plot_17.25m)
ggplotly(stats_plot_16m)
In Example Plots 7-11, the black line is the number of standard deviations the test sensor value is from the mean of the control sensors (i.e. z-score). The change points are the solid, red, vertical lines and the dashed, red, vertical line is the exposure time.
In Example Plots 12-16, the green lines are the control sensors, blue is the test sensor, solid orange is the mean of the control sensors, orange dashed is a ±1𝛔 from the mean. Solid, vertical, red lines are change points and the dashed vertical red line is the exposure time.
Change points were detected based on whether a z-score threshold was exceeded.
Change point clusters are associated with z-score spikes (Example Plots 7-11) and with afternoon and night time before exposure (Example Plots 12-16), and with night time and morning times after exposure (Example Plots 12-16). In both cases (before and after exposure) the change point clustering occurs when the SD envelope pinches together. This pinching of the SD envelope is caused by the near convergence of the 1.25m and 2.5m control sensors with the 3.75m sensor (the latter has a smaller diurnal fluctuation amplitude). This pinching perhaps highlights the importance of using control sensors that track one other very closely rather than having variable diurnal amplitudes.
This IGG test was re-performed with the 5.0m sensor as one of the controls instead of the 3.75m sensor, in addition to the 1.25m and 2.5m sensors. This was done because the 5m sensor tracks the 1.25m and 2.5m sensors closer than does the 3.75m sensor, with the hope that this would reduce SD envelope pinching. The results were generally the same, despite increasing the threshold to 10. Choosing control sensors that track one another better does not seemed to have helped. This is most likely because no matter how close the control sensor plots track one another, at least one sensor will always have a smaller diurnal amplitude that the others to some degree. This is results in SD envelope pinching, albeit smaller in this example.
This IGG Mean-SD method therefore does not seem to be a good CPD method for ground sensor exposure detection.
The use of an average and standard deviation from multiple control sensors proved to be an ineffective method for CPD of ground temperature sensor exposure. A more effective approach is to use threshold for the simple absolute difference between the test sensor and one or more controls sensors. However, there is still the drawback that the threshold needs to be picked and set manually, which is time consuming, too involved for general use, and would likely not hold up in a real-time application.
Window ground-to-ground methods (WGGs) compare the NPA temperature of the test sensor to some parameter derived by analyzing a window of data belonging to one or more other ground sensors.
The following section assesses the robustness of a WGG method using the maximum difference (residual) between the test sensor and a single control sensor as a threshold to assess the NPA of the test sensor (Fig X.X).
Function Inputs
Function Argument | Argument Description |
dat |
|
refsensor |
|
testsensor |
|
windowsize |
|
Function Output
Function Definition
WGG_MR_SC <- function(dat,refsensor,testsensor,windowsize) {
# Subset dat to include only the DateTime column, and columns of the reference sensor and test sensor.
workData <- dat |> select(DateTime,all_of(refsensor),all_of(testsensor))
# Create empty object for putting new test response data in
test_response <- data.frame(Threshold = numeric(),
Test_Response = logical())
for(i in 1:nrow(workData)){
if(i <= windowsize) {
# Fill the a "windowsize" worth of rows in "test_response" with NAs
test_response <- rbind(test_response, rep(NA,2))
} else {
# Time frame parameters of the window and NPA
window_start <- workData$DateTime[i] - hours(windowsize)
window_end <- workData$DateTime[i]
NPA_time <- window_end + hours(1)
print(c())
# Subset data within the window
window_data <- workData |> filter(DateTime %within% interval(window_start, window_end))
# Isolate the NPA test sensor value
target_value <- workData |> select(testsensor) |> unlist() |> last()
# Create a new column in "window_data" containing the residuals
window_data <- window_data |> mutate(resid = abs(!!sym(refsensor) - !!sym(testsensor)))
# Find the max residual in the window
resid_threshold <- max(window_data$resid)
# Determine if the NPA test sensor value crosses the threshold
test_resp <- target_value >= resid_threshold
# Combined the results to "test_response"
test_response <- rbind(test_response, c(resid_threshold, test_resp))
}
}
# cbind "test_response" data frame to the right of the "workData" data frame
workData <- cbind(workData, test_response)
colnames(workData) <- c("DateTime",refsensor,testsensor,"Threshold", "Test_Response")
# Return "workData"
return(workData)
}
WGG_MR_SC_21m <- WGG_MR_SC(dat = data, refsensor = "GT_1.25m", testsensor = "GT_21m", windowsize = 10)
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
WGG_MR_SC_21m_long <- WGG_MR_SC_21m |> pivot_longer(-c(DateTime, Threshold, Test_Response))
WGG_MR_SC_21m_plot <- ggplot(WGG_MR_SC_21m_long, aes(DateTime, value, group = name, colour = name)) +
geom_line() +
geom_vline(xintercept = WGG_MR_SC_21m_long |>
filter(Test_Response == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linewidth = 0.05)
ggplotly(WGG_MR_SC_21m_plot)
WGG_MR_SC_19.75m <- WGG_MR_SC(dat = data, refsensor = "GT_1.25m", testsensor = "GT_19.75m", windowsize = 10)
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
WGG_MR_SC_19.75m_long <- WGG_MR_SC_19.75m |> pivot_longer(-c(DateTime, Threshold, Test_Response))
WGG_MR_SC_19.75m_plot <- ggplot(WGG_MR_SC_19.75m_long, aes(DateTime, value, group = name, colour = name)) +
geom_line() +
geom_vline(xintercept = WGG_MR_SC_19.75m_long |>
filter(Test_Response == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linewidth = 0.05)
ggplotly(WGG_MR_SC_19.75m_plot)
WGG_MR_SC_18.5m <- WGG_MR_SC(dat = data, refsensor = "GT_1.25m", testsensor = "GT_18.5m", windowsize = 10)
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
WGG_MR_SC_18.5m_long <- WGG_MR_SC_18.5m |> pivot_longer(-c(DateTime, Threshold, Test_Response))
WGG_MR_SC_18.5m_plot <- ggplot(WGG_MR_SC_18.5m_long, aes(DateTime, value, group = name, colour = name)) +
geom_line() +
geom_vline(xintercept = WGG_MR_SC_18.5m_long |>
filter(Test_Response == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linewidth = 0.05)
ggplotly(WGG_MR_SC_18.5m_plot)
WGG_MR_SC_17.25m <- WGG_MR_SC(dat = data, refsensor = "GT_1.25m", testsensor = "GT_17.25m", windowsize = 10)
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
WGG_MR_SC_17.25m_long <- WGG_MR_SC_17.25m |> pivot_longer(-c(DateTime, Threshold, Test_Response))
WGG_MR_SC_17.25m_plot <- ggplot(WGG_MR_SC_17.25m_long, aes(DateTime, value, group = name, colour = name)) +
geom_line() +
geom_vline(xintercept = WGG_MR_SC_17.25m_long |>
filter(Test_Response == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linewidth = 0.05)
ggplotly(WGG_MR_SC_17.25m_plot)
WGG_MR_SC_16m <- WGG_MR_SC(dat = data, refsensor = "GT_1.25m", testsensor = "GT_16m", windowsize = 10)
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
## NULL
WGG_MR_SC_16m_long <- WGG_MR_SC_16m |> pivot_longer(-c(DateTime, Threshold, Test_Response))
WGG_MR_SC_16m_plot <- ggplot(WGG_MR_SC_16m_long, aes(DateTime, value, group = name, colour = name)) +
geom_line() +
geom_vline(xintercept = WGG_MR_SC_16m_long |>
filter(Test_Response == TRUE) |>
select(DateTime) |>
unlist(),
colour = "red", linewidth = 0.05)
ggplotly(WGG_MR_SC_16m_plot)
The following section assess the robustness of a WGG method using the maximum difference (residual) between the test sensor and control sensor as a threshold for the assess the NPA of the test sensor (Fig X.X).
Defines the function for the WGG Max Residual analysis:
WGG_MR_MC <- function(dat,refsensors,testsensor,windowsize,z_threshold) {
workData <- dat |> select(DateTime,refsensors,testsensor)
if(length(refsensors) == 1) {
test_response <- data.frame(Ref_Mean = numeric(),
Ref_SD = numeric(),
Test_Response = logical())
for(i in 1:nrow(workData)){
if(i <= windowsize) {
test_response <- rbind(test_response, rep(NA,3))
} else {
window_start <- workData$DateTime[i] - hours(windowsize)
window_end <- workData$DateTime[i]
target_time <- window_end + hours(1)
window_data <- workData |> filter(DateTime %within% interval(window_start, window_end))
target_value <- workData |> select(testsensor) |> unlist() |> last()
ref_mean <- window_data |> select(refsensors) |> unlist() |> mean()
ref_sd <- window_data |> select(refsensors) |> unlist() |> sd()
z <- abs(target_value - ref_mean) / ref_sd
response <- z > z_threshold
test_response <- rbind.data.frame(test_response, c(Ref_Mean = ref_mean,
Ref_SD = ref_sd,
Test_Response = response)
)
}
}
}
colnames(test_response) <- c("Ref_Mean", "Ref_SD", "Test_Response")
workData <- cbind(workData, test_response)
return(workData)
}
WGG_result <- WGG_MR_MC(dat = data, refsensors = "GT_1.25m", testsensor = "GT_21m", windowsize = 5, z_threshold = 5)
## Warning: Using an external vector in selections was deprecated in tidyselect 1.1.0.
## ℹ Please use `all_of()` or `any_of()` instead.
## # Was:
## data %>% select(refsensors)
##
## # Now:
## data %>% select(all_of(refsensors))
##
## See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Plotting:
p <- ggplot() +
ggtitle("WGG-MR-MC Test on the 21m Sensor") +
geom_line(data = WGG_result, aes(DateTime, GT_1.25m), colour = "darkgreen") +
geom_line(data = WGG_result, aes(DateTime, GT_21m), colour = "darkblue") +
geom_vline(xintercept = WGG_result |>
filter(Test_Response == 1) |>
select(DateTime) |>
unlist(),
colour = "red", linetype = "solid", linewidth = 0.05) +
geom_vline(xintercept = ymd_hms("2024-07-12 10:00:00"),
colour = "black",
linewidth = 0.5,
linetype = "dashed"
)
ggplotly(p)
This WGG method naturally uses multiple control sensors.
The acceleration is a window method that triggers an alarm when the rate of change calculated between the NPA and the previous value is much greater than it should be. This is accomplished by comparing the rate of change between the NPA and the previous value, to some rate-of-change threshold set by analyzing a window of data leading up to the NPA (Fig X).
The conditions under which this condition could fail is if the exposure occurs when the ground temperature sensor becomes exposed when the ground temperature is very close to the air temperature, so there wouldn’t be much of an acceleration change in temperature.
Function Argument | Argument Description |
dat |
|
testsensor |
|
windowsize |
|
|
accel_method <- function(dat,testsensor,windowsize) {
dat <- dat |> select(DateTime, !!sym(testsensor))
# Attach new columns to "dat"
dat <- cbind(dat,
dT = rep(NA,1,nrow(dat)),
Threshold = rep(NA,1,nrow(dat)),
Test_Result = rep(NA,1,nrow(dat)))
# For each row in "dat"...
for(i in 1:nrow(dat)) {
# If the row index is smaller than the window size...
if(i <= windowsize) {
# Fill the new columns with NA for that row
dat[i,c("dT", "Threshold", "Test_Result")] <- c(NA,NA,NA)
} else {
# Isolate the rows of data within the working window (not including the NPA row)
windowDat <- dat[(i-windowsize):(i-1),]
# Isolate the row containing the value of under examination
NPA_val <- dat[i,testsensor]
# Add a temperature change rate (dT) column and temporarily fill it in with NaN values
windowDat <- cbind(windowDat, dT = rep(NA,nrow(windowDat)))
# Calculate the temperature differences in the window data and put the differences in the dT column of windowDat
for(ii in 2:nrow(windowDat)) {
T1 <- windowDat[ii-1, testsensor]
T2 <- windowDat[ii, testsensor]
Tdiff <- abs(T2 - T1)
windowDat[ii, "dT"] <- Tdiff
}
# Calculates the mean and the threshold value that is 10 standard deviations above the mean
Tdiffmean <- mean(windowDat$dT, na.rm = TRUE)
Tdiff_10SD <- sd(windowDat$dT, na.rm = TRUE) * 6
thresh <- Tdiffmean + Tdiff_10SD
testresp <- (abs(NPA_val - last(windowDat[[testsensor]]))) >= thresh
# Adds the dT, Threshold, and Test_Result values to dat
dat[i, c("dT", "Threshold", "Test_Result")] <- c(Tdiff, thresh, testresp)
}
}
return(dat)
}
accel_method_21m <- accel_method(dat = data, testsensor = "GT_21m", windowsize = 10)
accel_method_19.75m <- accel_method(dat = data, testsensor = "GT_19.75m", windowsize = 10)
accel_method_18.5m <- accel_method(dat = data, testsensor = "GT_18.5m", windowsize = 10)
accel_method_17.25m <- accel_method(dat = data, testsensor = "GT_17.25m", windowsize = 10)
accel_method_16m <- accel_method(dat = data, testsensor = "GT_16m", windowsize = 10)
accel_method_21m_plot <- ggplot(data = accel_method_21m) +
ggtitle("CPD Analysis Conducted on the 21m
Sensor Using the Acceleration Method") +
geom_line(aes(DateTime, GT_21m), colour = "black") +
scale_x_datetime() +
geom_vline(xintercept = accel_method_21m |>
filter(Test_Result == 1) |>
select(DateTime) |>
unlist(),
colour = "red",
linewidth = 0.1) +
geom_vline(xintercept = ymd_hms("2024-07-12 10:00:00"),
color = "red",
linetype = "dashed",
linewidth = 0.5)
accel_method_19.75m_plot <- ggplot(data = accel_method_19.75m) +
ggtitle("CPD Analysis Conducted on the 19.75m
Sensor Using the Acceleration Method") +
geom_line(aes(DateTime, GT_19.75m), colour = "black") +
scale_x_datetime() +
geom_vline(xintercept = accel_method_19.75m |>
filter(Test_Result == 1) |>
select(DateTime) |>
unlist(),
colour = "red",
linewidth = 0.1) +
geom_vline(xintercept = ymd_hms("2024-07-12 10:00:00"),
color = "red",
linetype = "dashed",
linewidth = 0.5)
accel_method_18.5m_plot <- ggplot(data = accel_method_18.5m) +
ggtitle("CPD Analysis Conducted on the 18.5m
Sensor Using the Acceleration Method") +
geom_line(aes(DateTime, GT_18.5m), colour = "black") +
scale_x_datetime() +
geom_vline(xintercept = accel_method_18.5m |>
filter(Test_Result == 1) |>
select(DateTime) |>
unlist(),
colour = "red",
linewidth = 0.1) +
geom_vline(xintercept = ymd_hms("2024-07-12 10:00:00"),
color = "red",
linetype = "dashed",
linewidth = 0.5)
accel_method_17.25m_plot <- ggplot(data = accel_method_17.25m) +
ggtitle("CPD Analysis Conducted on the 17.25m
Sensor Using the Acceleration Method") +
geom_line(aes(DateTime, GT_17.25m), colour = "black") +
scale_x_datetime() +
geom_vline(xintercept = accel_method_17.25m |>
filter(Test_Result == 1) |>
select(DateTime) |>
unlist(),
colour = "red",
linewidth = 0.1) +
geom_vline(xintercept = ymd_hms("2024-07-12 10:00:00"),
color = "red",
linetype = "dashed",
linewidth = 0.5)
accel_method_16m_plot <- ggplot(data = accel_method_16m) +
ggtitle("CPD Analysis Conducted on the 16m
Sensor Using the Acceleration Method") +
geom_line(aes(DateTime, GT_16m), colour = "black") +
scale_x_datetime() +
geom_vline(xintercept = accel_method_16m |>
filter(Test_Result == 1) |>
select(DateTime) |>
unlist(),
colour = "red",
linewidth = 0.1) +
geom_vline(xintercept = ymd_hms("2024-07-12 10:00:00"),
color = "red",
linetype = "dashed",
linewidth = 0.5)
ggplotly(accel_method_21m_plot)
ggplotly(accel_method_19.75m_plot)
ggplotly(accel_method_18.5m_plot)
ggplotly(accel_method_17.25m_plot)
ggplotly(accel_method_16m_plot)
SPLINE <- function(dat, testsensor, windowsize, ci, fact) {
workData <- dat |> select(DateTime, testsensor)
if(length(refsensors) == 1) {
test_response <- data.frame(Model_Value = numeric(),
Lower_SD = numeric(),
Upper_SD = numeric(),
Test_Response = logical())
for(i in 1:nrow(workData)){
if(i <= windowsize) {
test_response <- rbind(test_response, rep(NA,ncol(test_response)))
} else {
window_start <- workData$DateTime[i] - hours(windowsize)
window_end <- workData$DateTime[i]
target_time <- window_end + hours(1)
window_data <- workData |> filter(DateTime %within% interval(window_start, window_end))
target_value <- workData |> select(testsensor) |> unlist() |> last()
ref_mean <- window_data |> select(refsensors) |> unlist() |> mean()
ref_sd <- window_data |> select(refsensors) |> unlist() |> sd()
z <- abs(target_value - ref_mean) / ref_sd
response <- z > z_threshold
test_response <- rbind.data.frame(test_response, c(Ref_Mean = ref_mean,
Ref_SD = ref_sd,
Test_Response = response)
)
}
}
}
colnames(test_response) <- c("Ref_Mean", "Ref_SD", "Test_Response")
workData <- cbind(workData, test_response)
return(workData)
}