Experiment ingezet door Leentje.

Is er een verschil tussen AQC wanneer het seed al dan niet gefilterd wordt?

library(dplyr)    # Package voor Operaties in data.frames
library(ggplot2)  # package om plots te maken
library(knitr)    # tabel visualisatie in html

# De data inladen
setwd("~/BZV/BZV berekening") #working directory
Seeddata = read.table("2024121101SeedtestLM.txt", header=FALSE, sep = ";") # lees de tekstfile in

# seeddata is de naam van het dataframe waar we de data van ons experiment opslagen.
# header is false voor deze data want ze heeft momenteel nog geen kolomnamen.
# hier brengen we verandering in met de functie colnames()
colnames(Seeddata) = c("Labonummer","Tray","PosNr","Predil","Volume","StartDate","StartTime","StartValDO","StartTemp","EndDate","EndTime","EndValDO","EndTemp","O2%","BZV","O2Final","BZVFinal","Operator")

# Op dit moment worden datums en numerieke waarden nog niet herkent door R, dit wordt opgelost met onderstaande code.

Seeddata = Seeddata %>% mutate_at(c("EndDate","StartDate"), as.Date, format = "%d/%m/%Y")
Seeddata = Seeddata %>% mutate_at(c("Tray","PosNr","Predil","Volume","StartValDO","StartTemp","EndValDO","EndTemp","O2%","BZV","O2Final","BZVFinal"),as.numeric)

kable(Seeddata, caption = "Volledige BZV run")
Volledige BZV run
Labonummer Tray PosNr Predil Volume StartDate StartTime StartValDO StartTemp EndDate EndTime EndValDO EndTemp O2% BZV O2Final BZVFinal Operator
blank1 18 1 1 292 2024-12-06 11:34:43 8.99 19.7 2024-12-11 9:20:50 8.05 19.9 10.45 0.94 10.58 0.96 LM
AQC11 18 2 1 5 2024-12-06 11:37:59 9.07 19.6 2024-12-11 9:22:18 5.01 19.8 44.73 182.03 44.73 182.03 LM
AQC12 18 3 1 5 2024-12-06 11:40:13 9.07 19.6 2024-12-11 9:23:50 4.85 19.8 46.51 191.37 46.51 191.37 LM
AQC13 18 4 1 5 2024-12-06 11:42:04 9.09 19.6 2024-12-11 9:25:20 5.11 19.7 43.77 177.53 43.77 177.53 LM
AQC14 18 5 1 5 2024-12-06 11:44:09 9.08 19.5 2024-12-11 9:26:54 4.92 19.6 45.87 188.39 45.87 188.39 LM
AQC15 18 6 1 5 2024-12-06 11:46:09 9.09 19.6 2024-12-11 9:28:31 4.93 19.7 45.76 188.04 45.76 188.04 LM
AQC16 18 7 1 5 2024-12-06 11:48:00 9.09 19.6 2024-12-11 9:30:07 5.06 19.6 44.35 180.45 44.35 180.45 LM
AQC11NF 18 8 1 5 2024-12-06 11:49:52 9.09 19.5 2024-12-11 9:31:46 5.08 19.6 44.10 179.28 44.10 179.28 LM
AQC12NF 18 9 1 5 2024-12-06 11:51:57 9.10 19.5 2024-12-11 9:33:09 5.05 19.6 44.54 181.79 44.54 181.79 LM
AQC13NF 18 10 1 5 2024-12-06 11:53:49 9.09 19.6 2024-12-11 9:34:33 5.11 19.7 43.77 177.35 43.77 177.35 LM
AQC14NF 18 11 1 5 2024-12-06 11:55:35 9.10 19.5 2024-12-11 9:35:53 5.30 19.6 41.71 166.67 41.71 166.67 LM
AQC15NF 18 12 1 5 2024-12-06 11:57:26 9.13 19.5 2024-12-11 9:37:19 5.08 19.6 44.34 181.62 44.34 181.62 LM
AQC16NF 18 13 1 5 2024-12-06 11:59:47 9.07 19.6 2024-12-11 9:38:47 4.92 19.7 45.74 187.46 45.74 187.46 LM
blank1 18 14 1 292 2024-12-06 12:01:27 9.09 19.3 2024-12-11 9:40:28 8.12 19.6 10.70 0.97 10.58 0.96 LM

Seed lotnr: #032406 Inzetdatum: 06/12/2024 Concentratie van het seed: 1 capsule / 400 ml verdunningswater

Nulhypothese : Er is geen verschil in BZV tussen gefilterd en ongefilterd seed.

We voeren een simpele t-test uit om te kijken of de nulhypotese moet verworpen worden.

# vat alle AQC samen in 1 dataframe
BZV_AQC = Seeddata[grep("AQC", Seeddata$Labonummer,ignore.case=TRUE),]
# maak een nieuwe kolom aan die gefilterde en ongefilterd uit elkaar houd.
BZV_AQC$Gefilterd = ifelse(grepl("NF", BZV_AQC$Labonummer) == TRUE, FALSE, TRUE)

#dataframe in overzichtelijke tabel
kable(BZV_AQC[c(1,5,14,15,18,19)])
Labonummer Volume O2% BZV Operator Gefilterd
2 AQC11 5 44.73 182.03 LM TRUE
3 AQC12 5 46.51 191.37 LM TRUE
4 AQC13 5 43.77 177.53 LM TRUE
5 AQC14 5 45.87 188.39 LM TRUE
6 AQC15 5 45.76 188.04 LM TRUE
7 AQC16 5 44.35 180.45 LM TRUE
8 AQC11NF 5 44.10 179.28 LM FALSE
9 AQC12NF 5 44.54 181.79 LM FALSE
10 AQC13NF 5 43.77 177.35 LM FALSE
11 AQC14NF 5 41.71 166.67 LM FALSE
12 AQC15NF 5 44.34 181.62 LM FALSE
13 AQC16NF 5 45.74 187.46 LM FALSE
# data visualiseren
ggplot(BZV_AQC, aes(y = BZV, x = Gefilterd,col = Gefilterd)) + geom_boxplot() +
  labs(title = "Boxplot met BZV waarden van de AQC",
       y = "BZV in mg O2/L",
       x = "Gefilterd seed")

Nu voeren we een t test uit. Voordat we dit doen testen we de assumpties van een t-test.

1 . Variantie tussen groepen is dezelfde.

Ftest_BZV = var.test(BZV~Gefilterd, data = BZV_AQC)
Ftest_BZV
## 
##  F test to compare two variances
## 
## data:  BZV by Gefilterd
## F = 1.6529, num df = 5, denom df = 5, p-value = 0.5948
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##   0.2312856 11.8119361
## sample estimates:
## ratio of variances 
##           1.652855

De p-waarde in deze test is niet significant, de nulhyopthese wordt niet verworpen.

De variantie tussen de groepen is gelijk.

  1. De responsvariable is normaal verdeeld.
shapiro.test(BZV_AQC$BZV)
## 
##  Shapiro-Wilk normality test
## 
## data:  BZV_AQC$BZV
## W = 0.92602, p-value = 0.3398

H0: de data is normaal verdeeld.

de p-waarde is groter dan 0.05 dus de H0 wordt niet verworpen.

De data is normaal verdeeld.

Nu de T-test zelf uitvoeren

GefilterdSeed_T_test = t.test(BZV~Gefilterd, data = BZV_AQC)
GefilterdSeed_T_test
## 
##  Welch Two Sample t-test
## 
## data:  BZV by Gefilterd
## t = -1.5613, df = 9.429, p-value = 0.1514
## alternative hypothesis: true difference in means between group FALSE and group TRUE is not equal to 0
## 95 percent confidence interval:
##  -13.674318   2.460984
## sample estimates:
## mean in group FALSE  mean in group TRUE 
##            179.0283            184.6350

Ook bij deze test vinden we geen significant resultaat.

Bij de groep waar het seed niet gefilterd werd is de eindBZV gemiddeld lager maar het verschil tussen de groepen is dus wel niet statistisch significant.