library(tidyverse)
library(ggthemes)
library(gt)
Cortison- und Hydrocortisongehalte in Proben tierischen Ursprungs
Datenauswertung von im Rahmen des Nationalen Fremdstoffuntersuchungs Programm gemessenen Proben.
Einleitung
Im Rahmen des Nationalen Fremdstoffuntersuchungs Programm (NFUP) wurden in Proben von tierischem Ursprung die Rückstände von Cortison und Hydrocortison gemessen. Die Messung der Substanzen erfolgte mittels Flüssigchromatograghie (LC) gekoppelt mit hochauflösender Massenspektrometrie (HRMS)(Kaufmann u. a. 2019), (Kaufmann u. a. 2020). Dabei wurden zwischen 45 und 200 Tierarzneimittel quantifiziert.
Cortison und Hydrocortison kommen natürlich in Gewebe und Ausscheidungen von Tieren vor, https://de.wikipedia.org/wiki/Cortison. Für die Substanzen gibt es ausser für Milch keine Grenzwerte oder sonstige Beurteilungskriterien.
Mit der folgenden Datenanalyse soll gezeigt werden, ob sich von den gemessenen Konzentrationen ein Beurteilungskriterium ableiten lässt oder ob die Substanzen als Positivkontrolle für die Methode verwendet werden können.
Die Daten wurden zwischen 2019 bis 2024 erhoben.
Analyseziele
Es soll gezeigt werden wie sich die Konzentrationen von Cortison und Hydrocortison in den mehr als 3000 Messungen verteilen.
Gibt es Unterschiede zwischen einzelnen Proben Arten (Matrix)?
Gibt es Unterschiede zwischen verschiedenen Tierarten?
Gibt es Jahreszeitliche Unterschiede?
Daten
Resultate der im Rahmen des NFUP durchgeführten Messungen durch die Abteilung Tierarzneimittel Analytik des Kantonalen Labors Zürich.
# read_csv2 für ";" geteilte Tabelle
<- read_csv2(here::here("daten/raw/Cortison_csv.csv"))
cortison_import <- read_csv2(here::here("daten/raw/Hydrocortison_csv.csv")) hydrocortison_import
Datenaufbereitung
Daten zusammenführen und Spaltentitel ändern. Die Tierart- und Matrixnamen wurden korrigiert und vereinheitlicht. Alle Messresultate wurden von Text in numerische Werte geändert.
# merge mit all = TRUE um auch Proben mit nur einem Resultat in der Tabelle zu behalten
<- merge(cortison_import, hydrocortison_import, by="ProbenID", all = TRUE)
data_merge
# Konzentrationen als Zahl(numeric)
<- mutate(data_merge,
data_numeric cortison_conc = as.numeric(ResultatResultat.x)) |>
mutate(data_merge,
hydrocortison_conc = as.numeric(ResultatResultat.y))
# ware und datum in einer Spalte auch wenn nur ein Wert gefunden
<- data_numeric |>
data_ware2 mutate(ware = ProbeWare.y)
<- data_ware2 |>
data_ware3 mutate(ware = case_when(
ware = is.na(ware) ~ ProbeWare.x,
.default = ProbeWare.y
))
|>
data_ware3 count(ware)
# ware aufräumen
<- data_ware3 |>
data_ware_clean mutate(ware = case_when(
== "Schwein - D\xe4rme" ~ "Schwein - Darm",
ware == "Kuh - But" ~ "Kuh - Blut",
ware == "Blut - Kuh" ~ "Kuh - Blut",
ware == "Blut - Kalb" ~ "Kuh - Blut",
ware == "Kalb- Blut" ~ "Kalb - Blut",
ware == "Fisch -Muskel" ~ "Fisch - Muskel",
ware == "Damhirsch - Muskel" ~ "Zuchtwild - Muskel",
ware == "Gehege- oder Zuchtschalenwild - Leber" ~ "Zuchtwild - Leber",
ware == "Kalb - Blut" ~ "Kalb - Blut", # zwei leerschläge!
ware == "Kalb-Blut" ~ "Kalb - Blut",
ware == "Kalb- Muskel" ~ "Kalb - Muskel",
ware == "Kalbsfleisch" ~ "Kalb - Muskel",
ware == "Kalb - Urin" ~ "Kalb - Harn",
ware == "Kuh - Urin" ~ "Kuh - Harn",
ware == "Kalb- Leber" ~ "Kalb - Leber",
ware == "Kuh -Blut" ~ "Kuh - Blut",
ware == "Kuh- Blut" ~ "Kuh - Blut",
ware == "Kuh-Blut" ~ "Kuh - Blut",
ware == "Kuh- Leber" ~ "Kuh - Leber",
ware == "Kuh- Muskel" ~ "Kuh - Muskel",
ware == "Milchkuh - Blut" ~ "Kuh - Blut",
ware == "Rind - Kalb - Kuh - Muskel" ~ "Rind - Muskel",
ware == "Rind / Kalb / Kuh - Blut" ~ "Rind - Blut",
ware == "Rind / Kalb / Kuh - Harn" ~ "Rind - Harn",
ware == "Rind / Kalb / Kuh - Leber" ~ "Rind - Leber",
ware == "Rind / Kalb / Kuh - Urin" ~ "Rind - Harn",
ware == "Rind Kalb Kuh - Leber" ~ "Rind - Leber",
ware == "Rind Kalb Kuh - Leber" ~ "Rind - Leber",
ware == "Rind - Urin" ~ "Rind - Harn",
ware == "Rind- Blut" ~ "Rind - Blut",
ware == "Rind -Blut" ~ "Rind - Blut",
ware == "Rind- Leber" ~ "Rind - Leber",
ware == "Rind- Muskel" ~ "Rind - Muskel",
ware == "Rind-Blut" ~ "Rind - Blut",
ware == "Rind/Kalb/Kuh - Blut" ~ "Rind - Blut",
ware == "Rind / Kalb / Kuh - Harn" ~ "Rind - Harn",
ware == "Rind / Kalb / Kuh - Leber" ~ "Rind - Leber",
ware == "Rind / Kalb / Kuh - Urin" ~ "Rind - Harn",
ware == "Rind/Kalb/Kuh - Harn" ~ "Rind - Harn",
ware == "Rind/Kalb/Kuh - Leber" ~ "Rind - Leber",
ware == "Rind/Kalb/Kuh - Muskel" ~ "Rind - Muskel",
ware == "Rind/Kalb/Kuh - Niere" ~ "Rind - Niere",
ware == "Rind/Kalb/Kuh - Plasma" ~ "Rind - Plasma",
ware == "Rind/Kalb/Kuh- Blut" ~ "Rind - Blut",
ware == "Schafe - Leber" ~ "Schaf - Leber",
ware == "Schafe - Muskel" ~ "Schaf - Muskel",
ware == "Schafe - Niere" ~ "Schaf - Niere",
ware == "Schweine - Muskel" ~ "Schwein - Muskel",
ware == "Stier - Blut" ~ "Rind - Blut",
ware == "Stier - Harn" ~ "Rind - Harn",
ware == "Ziegen - Leber" ~ "Ziege - Leber",
ware == "Ziegen - Muskel" ~ "Ziege - Muskel",
ware == "Muni - Harn" ~ "Rind - Harn",
ware == "Muni - Leber" ~ "Rind - Leber",
ware == "Muni - Muskel" ~ "Rind - Muskel",
ware == "Ochs - Harn" ~ "Rind - Harn",
ware == "Ochs - Muskel" ~ "Rind - Muskel",
ware == "Ochse - Harn" ~ "Rind - Harn",
ware == "Ochse - Leber" ~ "Rind - Leber",
ware .default = ware
))
|>
data_ware3 count(ware)
|>
data_ware_clean count(ware)
# ware trennen in tierart und matrix
<- data_ware_clean |>
data_matrix_tierart separate(ware, c("tierart","matrix"))
|>
data_matrix_tierart count(matrix)
|>
data_matrix_tierart count(tierart)
# datum zusammenfassen
<- data_matrix_tierart |>
data_matrix_tierart_datum mutate(datum = ProbeErhebungsdatum.y)
|>
data_matrix_tierart_datum count(datum)
<- data_matrix_tierart_datum |>
data_matrix_tierart_datum2 mutate(datum = case_when(
datum = is.na(datum) ~ ProbeErhebungsdatum.x,
.default = ProbeErhebungsdatum.y
))
|>
data_matrix_tierart_datum2 count(datum)
# datum aufräumen
<- data_matrix_tierart_datum2 |>
data_matrix_tierart_datum_clean mutate(datum = case_when(
== "25.10.0202 00:00:00" ~ "25.10.2021",
datum .default = datum
))
|>
data_matrix_tierart_datum_clean count(datum)
# Datum formatieren
<- data_matrix_tierart_datum_clean |>
data_matrix_tierart_date mutate(datum = as_date(datum, format = "%d.%m.%Y"))
|>
data_matrix_tierart_date count(datum)
|>
data_matrix_tierart_date glimpse()
# Methode in einer Spalte
<- data_matrix_tierart_date |>
data_matrix_tierart_date_meth mutate(methode = ResultatMethodencode.y)
<- data_matrix_tierart_date_meth |>
data_matrix_tierart_date_meth2 mutate(methode = case_when(
methode = is.na(methode) ~ ResultatMethodencode.x,
.default = ResultatMethodencode.y
))
|>
data_matrix_tierart_date_meth2 count(methode)
<- data_matrix_tierart_date_meth2 |>
data_matrix_tierart_date_methnr mutate(methode = case_when(
== "Z4044" ~ "EtAc",
methode == "Z4050" ~ "ACN",
methode .default = methode
))
|>
data_matrix_tierart_date_methnr count(methode)
|>
data_matrix_tierart_date_methnr glimpse()
Daten in ein aufgeräumtes Datenframe übertragen
<- data_matrix_tierart_date_methnr |>
cortison_tidy group_by(ProbenID,cortison_conc,hydrocortison_conc,tierart,matrix,datum,methode) |>
summarise()
# Daten exportieren
#| eval: false
#| echo: false
#| warning: false
#| output: false
# write_csv(x = cortison_tidy,
# "daten/processed/cortison_tidy.csv")
Erstellen eines neuen Dataframes mit den bearbeiteten Daten
#input_data <- read_csv(here::here("daten/processed/cortison_tidy.csv"))
<- cortison_tidy
input_data
glimpse(input_data)
Faktoren
Für eine bessere Übersicht wurden die Daten mit Faktoren sortiert. Es werden zuerst die festen Matrizes dargestellt und dann die flüssigen. Die Tierarten wurden so sortiert das die häufigsten Spezies wie Rind und Schwein zuerst dargestellt werden, die weniger häufig untersuchten Spezies werden unten aufgeführt.
# Faktor für weitere verwendung bereitstellen
<- c("Frühling","Sommer","Herbst","Winter")
jahreszeiten
<- c("Muskel", "Leber", "Niere", "Darm", "Blut", "Plasma", "Harn")
matrix_sort
<- c("Rind", "Kuh", "Kalb", "Schwein", "Huhn", "Truthahn", "Schaf", "Ziege", "Zuchtwild", "Pferd", "Kaninchen", "Fisch") tierart_sort
Datenübersicht
<- input_data |>
ohne_NA mutate(cortison_low = case_when(
cortison_conc = is.na(cortison_conc) ~ 0,
.default = cortison_conc
|>
)) mutate(bg = case_when(
== "EtAc" ~ 0.25,
methode == "ACN"~ 1
methode |>
)) mutate(cortison_bg = case_when(
== "0" ~ bg,
cortison_low .default = cortison_low
|>
)) mutate(hydrocortison_low = case_when(
hydrocortison_conc = is.na(hydrocortison_conc) ~ 0,
.default = hydrocortison_conc
|>
)) mutate(hydrocortison_bg = case_when(
== "0" ~ bg,
hydrocortison_low .default = hydrocortison_low
|>
)) mutate(monat = month(datum)) |>
mutate(jahreszeit = case_when(
== 3 ~ "Frühling",
monat == 4 ~ "Frühling",
monat == 5 ~ "Frühling",
monat == 6 ~ "Sommer",
monat == 7 ~ "Sommer",
monat == 8 ~ "Sommer",
monat == 9 ~ "Herbst",
monat == 10 ~ "Herbst",
monat == 11 ~ "Herbst",
monat == 12 ~ "Winter",
monat == 1 ~ "Winter",
monat == 2 ~ "Winter"
monat |>
))mutate(jahreszeit_fct = factor(jahreszeit, levels = jahreszeiten)) |>
mutate(matrix_fct = factor(matrix, levels = matrix_sort)) |>
mutate(tierart_fct = factor(tierart, levels = tierart_sort)) |>
# negativ = 1, positiv = 0
mutate(cortison_pos = case_when(
== 0 ~ 1,
cortison_low .default = 0
|> # negativ = 1, positiv = 0
)) mutate(hydrocortison_pos = case_when(
== 0 ~ 1,
hydrocortison_low .default = 0))
In Tabelle 1 sind alle Proben des Datensatzes aufgelistet
|>
ohne_NA group_by("Tierart" = tierart_fct, "Matrix" = matrix_fct) |>
summarise("Anzahl" = n()) |>
pivot_wider(names_from = "Matrix", values_from = "Anzahl") |>
# nimmt die Gruppierung weg, was das Aussehen der gt Tabelle beeinflusst
ungroup() |>
# entfernt Tierart Überschrift, fügt vertikale fette Linie hizu
gt(rowname_col = "Tierart") |>
# definiert einen Spanner (Titel) für die ausgewählten Variablen
tab_spanner(
label = "Matrix",
columns = Muskel:Darm
|>
) # Setzt Dashes für NAs
fmt_missing(columns = everything(), missing_text = "–") |>
# Macht Matrix bold
tab_style(
style = cell_text(weight = "bold"),
locations = cells_column_spanners()
|>
) # Macht die Spaltennamen bold
tab_style(
style = cell_text(weight = "bold"),
locations = cells_column_labels()
)
Matrix | |||||||
---|---|---|---|---|---|---|---|
Muskel | Leber | Niere | Blut | Plasma | Harn | Darm | |
Rind | 184 | 107 | 17 | 248 | 10 | 251 | – |
Kuh | 149 | 74 | 16 | 367 | 23 | 150 | – |
Kalb | 107 | 36 | 6 | 128 | 5 | 145 | – |
Schwein | 520 | 91 | 19 | – | – | 170 | 1 |
Huhn | – | 51 | – | – | – | – | – |
Truthahn | – | 4 | – | – | – | – | – |
Schaf | 38 | 17 | 2 | – | – | – | – |
Ziege | 6 | 5 | – | – | – | – | – |
Zuchtwild | 14 | 5 | 4 | – | – | – | – |
Pferd | – | 5 | – | – | – | – | – |
Kaninchen | 1 | 5 | 1 | – | – | – | – |
Fisch | 20 | – | – | – | – | – | – |
In Abbildung 1 sind alle Proben des Datensatzes dargestellt.
<- ohne_NA |>
anzahl_matrix_tierart group_by(tierart_fct) |>
count(matrix_fct)
ggplot(anzahl_matrix_tierart, mapping = aes(
x = tierart_fct,
y = n,
fill = matrix_fct
+
))geom_col()+
geom_text(aes(label = n),
position = position_stack(vjust = 0.5),
na.rm = TRUE,
check_overlap = TRUE,
size = 3)+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
xlab("Tierart")+
ylab("Anzahl Proben")+
labs(
title = "Tierart und Matrix der Proben",
fill = "Matrix"
)
Bestimmungsgrenze
Werte unterhalb der Bestimmungsgrenze können zwischen 0 µg/kg und der Bestimmungsgrenze liegen. Die verwendeten Methoden haben die Bestimmungsgrenze 0.25 µg/kg bzw. 1 µg/kg.
Wie stark verändern sich die Durchschnittswerte, wenn Proben ohne nachweisbare Cortison oder Hydrocortisonwerte (< Bestimmungsgrenze) mit dem Wert 0 oder dem Wert an der Bestimmungsgrenze zur Berechnung verwendet werden?
|>
ohne_NA group_by("Matrix" = matrix_fct) |>
summarise("Proben mit Cortison <BG [%]" = round(sum(cortison_pos)/n()*100,1),"Mittelwert Cortison <BG = 0 [µg/kg]" = round(mean(cortison_low),1),"Mittelwert Cortison <BG = BG [µg/kg]" = round(mean(cortison_bg),1), "Abweichung Mittelwert Cortison [%] [µg/kg]" = round((mean(cortison_bg)-mean(cortison_low))/mean(cortison_bg)*100,1),"Proben mit Hydrocortison <BG [%]" = round(sum(hydrocortison_pos)/n()*100,1),"Mittelwert Hydrocortison <BG = 0 [µg/kg]" = round(mean(hydrocortison_low),1),"Mittelwert Hydrocortison <BG = BG [µg/kg]" = round(mean(hydrocortison_bg),1), "Abweichung Mittelwert Hydrocortison [%]" = round((mean(hydrocortison_bg)-mean(hydrocortison_low))/mean(hydrocortison_bg)*100,1)) |>
gt() |>
tab_style(
style = cell_text(weight = "bold", size = "small"),
locations = cells_column_labels()
)
Matrix | Proben mit Cortison <BG [%] | Mittelwert Cortison <BG = 0 [µg/kg] | Mittelwert Cortison <BG = BG [µg/kg] | Abweichung Mittelwert Cortison [%] [µg/kg] | Proben mit Hydrocortison <BG [%] | Mittelwert Hydrocortison <BG = 0 [µg/kg] | Mittelwert Hydrocortison <BG = BG [µg/kg] | Abweichung Mittelwert Hydrocortison [%] |
---|---|---|---|---|---|---|---|---|
Muskel | 50.5 | 2.7 | 3.2 | 15.5 | 1.2 | 14.7 | 14.7 | 0.1 |
Leber | 48.8 | 2.6 | 2.8 | 4.8 | 31.8 | 2.3 | 2.3 | 3.5 |
Niere | 0.0 | 63.5 | 63.5 | 0.0 | 12.3 | 7.1 | 7.2 | 1.7 |
Darm | 0.0 | 3.0 | 3.0 | 0.0 | 0.0 | 3.0 | 3.0 | 0.0 |
Blut | 44.8 | 1.5 | 1.6 | 10.6 | 12.8 | 15.3 | 15.4 | 0.2 |
Plasma | 71.1 | 1.3 | 2.0 | 35.1 | 0.0 | 13.6 | 13.6 | 0.0 |
Harn | 19.8 | 98.9 | 98.9 | 0.1 | 26.5 | 71.9 | 72.0 | 0.1 |
Untergruppen erstellen
<- filter(ohne_NA, matrix == "Leber")
leber
<- filter(ohne_NA, matrix == "Niere")
niere
<- filter(ohne_NA, matrix == "Muskel")
muskel
<- filter(ohne_NA, matrix == "Harn")
harn
<- filter(ohne_NA, tierart == "Schwein")
schwein
<- filter(ohne_NA, tierart == "Rind" | tierart == "Kuh" | tierart == "Kalb")
rinder
<- filter(schwein, matrix == "Muskel")
schweine_muskel
<- filter(muskel, tierart == "Rind" | tierart == "Kuh" | tierart == "Kalb" | tierart == "Schwein")
muskel_ohne_minor
<- filter(harn, tierart == "Rind" | tierart == "Kuh" | tierart == "Kalb" | tierart == "Schwein")
harn_ohne_minor
<- filter(ohne_NA,tierart == "Rind" | tierart == "Kuh" | tierart == "Kalb" | tierart == "Schwein") alle_matrizes_ohen_minor
Ergebnisse
In den gemessenen Proben zeigen sich grosse Unterschiede zwischen den einzelnen Messungen. Die Gehalte an Cortison und Hydrocortison sind teilweise unterhalb der Bestimmungsgrenze, die Maximalwerte sind 2887 µg/l Cortison und 3940 µg/l Hydrocortison in Harnproben.
Weiter konnte auch gezeigt werden das sich Gehalte zwischen den Matrizes stark unterscheiden (Siehe Abbildung 2 und Abbildung 3). Es fällt auf das Cortison vorwiegend in der Matrix Niere und Harn vorkommt, während Hydrocortison in allen Matrizes zu finden ist wobei die Gehalte in der Leber tiefer waren.
Zwischen den Tierarten wurde nur die Matrix Muskel verglichen da von den meisten Tieren nur diese Matrix beprobt wurde (Siehe Abbildung 5 und Abbildung 6). Dabei hat sich gezeigt, dass bei Schweinen und Fischen höhere Mengen an Cortison gefunden werden, während bei Tieren der Rindergattung nur wenige Proben Werte über der Bestimmungsgrenze aufweisen. In 99 % aller Muskelproben wurde Hydrocortison nachgewiesen (Siehe Tabelle 4).
Matrix
Es wurden nur die Daten von Tieren der Rindergattung und Schweinen für die Visualisierung verwendet, da von den anderen Tierarten nicht alle Matrizes beprobt wurden.
Cortison
|>
ohne_NA group_by("Matrix" = matrix_fct) |>
summarise("Anzahl Proben" = n(),"Resultate < BG [%]" = round((sum(cortison_pos/n()))*100,0),"Mittelwert [µg/kg]" = round(mean(cortison_low),0),"Standard Abweichung [µg/kg]" = round(sd(cortison_low),0),"höchster Wert [µg/kg]" = max(cortison_low)) |>
gt() |>
tab_footnote(
footnote = "Anteil der Proben bei welchen kein Cortison bestimmt werden konnte.",
locations = cells_column_labels("Resultate < BG [%]"))
Matrix | Anzahl Proben | Resultate < BG [%]1 | Mittelwert [µg/kg] | Standard Abweichung [µg/kg] | höchster Wert [µg/kg] |
---|---|---|---|---|---|
Muskel | 1039 | 51 | 3 | 4 | 42 |
Leber | 400 | 49 | 3 | 24 | 330 |
Niere | 65 | 0 | 64 | 67 | 363 |
Darm | 1 | 0 | 3 | NA | 3 |
Blut | 743 | 45 | 1 | 2 | 17 |
Plasma | 38 | 71 | 1 | 3 | 13 |
Harn | 716 | 20 | 99 | 228 | 2887 |
1 Anteil der Proben bei welchen kein Cortison bestimmt werden konnte. |
ggplot(alle_matrizes_ohen_minor, mapping = aes(
x = matrix_fct,
y = cortison_low,
fill = matrix_fct
+
))geom_boxplot(outlier.shape = 1) +
theme_minimal()+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1),
legend.position = "none")+
ylim(c(0,40))+
xlab("Tierart")+
ylab("Gehalt [µg/kg]")+
labs(
title = "Cortison Gehalte",
subtitle = "in µg/kg"
+
)facet_wrap(~tierart_fct)
Hydrocortison
|>
ohne_NA group_by("Matrix" = matrix_fct) |>
summarise("Anzahl Proben" = n(),"Resultate < BG [%]" = round((sum(hydrocortison_pos/n()))*100,0),"Mittelwert [µg/kg]" = round(mean(hydrocortison_low),0), "Standard Abweichung" = round(sd(hydrocortison_low),0),"höchster Wert [µg/kg]" = max(hydrocortison_low)) |>
gt()|>
tab_footnote(
footnote = "Anteil der Proben bei welchen kein Hydrocortison bestimmt werden konnte.",
locations = cells_column_labels("Resultate < BG [%]"))
Matrix | Anzahl Proben | Resultate < BG [%]1 | Mittelwert [µg/kg] | Standard Abweichung | höchster Wert [µg/kg] |
---|---|---|---|---|---|
Muskel | 1039 | 1 | 15 | 15 | 260 |
Leber | 400 | 32 | 2 | 6 | 68 |
Niere | 65 | 12 | 7 | 6 | 26 |
Darm | 1 | 0 | 3 | NA | 3 |
Blut | 743 | 13 | 15 | 18 | 129 |
Plasma | 38 | 0 | 14 | 16 | 89 |
Harn | 716 | 27 | 72 | 194 | 3940 |
1 Anteil der Proben bei welchen kein Hydrocortison bestimmt werden konnte. |
ggplot(alle_matrizes_ohen_minor, mapping = aes(
x = matrix_fct,
y = hydrocortison_low,
fill = matrix_fct
+
))geom_boxplot(outlier.shape = 1) +
theme_minimal()+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1),
legend.position = "none")+
ylim(c(0,40))+
xlab("Tierart")+
ylab("Gehalt [µg/kg]")+
labs(
title = "Hydrocortison Gehalte",
subtitle = "in µg/kg"
+
)facet_wrap(~tierart_fct)
Hydrocortison in Muskelproben von Tieren der Rindergattung und Schweinen
ggplot(muskel_ohne_minor, mapping = aes(
x = hydrocortison_low,
+
))geom_histogram(binwidth = 1)+
theme_minimal()+
xlab("Hydrocortison [µg/kg]")+
ylab("Anzahl Proben")+
labs(title = "Hydrocortison in Muskel",
subtitle = "Binbreite = 1 µg/kg")
|>
muskel_ohne_minor group_by(tierart) |>
summarise("Anzahl Proben" = n(),"Anzahl Proben <BG" = sum(hydrocortison_pos),"Median [µg/kg]" = median(hydrocortison_low), "höchster Wert [µg/kg]" = max(hydrocortison_low), "rel. Standardabweichung [%]" = round(sd(hydrocortison_low)/mean(hydrocortison_low)*100)) |>
gt()
tierart | Anzahl Proben | Anzahl Proben <BG | Median [µg/kg] | höchster Wert [µg/kg] | rel. Standardabweichung [%] |
---|---|---|---|---|---|
Kalb | 107 | 0 | 5 | 42 | 82 |
Kuh | 149 | 0 | 10 | 64 | 84 |
Rind | 184 | 1 | 9 | 106 | 112 |
Schwein | 520 | 1 | 14 | 260 | 99 |
Tierart
Cortison
|>
muskel group_by("Tierart" = tierart_fct) |>
summarise("Anzahl Proben" = n(),"Resultate < BG [%]" = round((sum(cortison_pos/n()))*100,0),"Mittelwert [µg/kg]" = round(mean(cortison_low),0),"Standard Abweichung [µg/kg]" = round(sd(cortison_low),0),"höchster Wert [µg/kg]" = max(cortison_low)) |>
gt() |>
tab_footnote(
footnote = "Anteil der Proben bei welchen kein Cortison bestimmt werden konnte.",
locations = cells_column_labels("Resultate < BG [%]"))
Tierart | Anzahl Proben | Resultate < BG [%]1 | Mittelwert [µg/kg] | Standard Abweichung [µg/kg] | höchster Wert [µg/kg] |
---|---|---|---|---|---|
Rind | 184 | 91 | 0 | 2 | 30 |
Kuh | 149 | 90 | 0 | 1 | 6 |
Kalb | 107 | 97 | 0 | 0 | 2 |
Schwein | 520 | 14 | 5 | 4 | 26 |
Schaf | 38 | 76 | 1 | 2 | 8 |
Ziege | 6 | 67 | 1 | 2 | 4 |
Zuchtwild | 14 | 86 | 0 | 1 | 3 |
Kaninchen | 1 | 100 | 0 | NA | 0 |
Fisch | 20 | 10 | 7 | 9 | 42 |
1 Anteil der Proben bei welchen kein Cortison bestimmt werden konnte. |
ggplot(muskel, mapping = aes(x = tierart_fct,
y = cortison_low,
fill = tierart_fct))+
geom_boxplot(outlier.shape = 1) +
theme_minimal()+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1),
legend.position = "none")+
ylim(c(0,15))+
xlab("Tierart")+
ylab("Gehalt [µg/kg]")+
labs(
title = "Cortison Gehalte in Muskel",
subtitle = "in µg/kg"
)
Hydrocortison
|>
muskel group_by("Tierart" = tierart_fct) |>
summarise("Anzahl Proben" = n(),"Resultate < BG [%]" = round((sum(hydrocortison_pos/n()))*100,0),"Mittelwert [µg/kg]" = round(mean(hydrocortison_low),0),"Standard Abweichung [µg/kg]" = round(sd(hydrocortison_low),0),"höchster Wert [µg/kg]" = max(hydrocortison_low)) |>
gt() |>
tab_footnote(
footnote = "Anteil der Proben bei welchen kein Hydrocortison bestimmt werden konnte.",
locations = cells_column_labels("Resultate < BG [%]"))
Tierart | Anzahl Proben | Resultate < BG [%]1 | Mittelwert [µg/kg] | Standard Abweichung [µg/kg] | höchster Wert [µg/kg] |
---|---|---|---|---|---|
Rind | 184 | 1 | 12 | 14 | 106 |
Kuh | 149 | 0 | 14 | 12 | 64 |
Kalb | 107 | 0 | 8 | 7 | 42 |
Schwein | 520 | 0 | 18 | 18 | 260 |
Schaf | 38 | 3 | 10 | 11 | 56 |
Ziege | 6 | 0 | 12 | 8 | 21 |
Zuchtwild | 14 | 0 | 9 | 6 | 21 |
Kaninchen | 1 | 0 | 3 | NA | 3 |
Fisch | 20 | 45 | 7 | 14 | 60 |
1 Anteil der Proben bei welchen kein Hydrocortison bestimmt werden konnte. |
ggplot(muskel, mapping = aes(x = tierart_fct,
y = hydrocortison_low,
fill = tierart_fct))+
geom_boxplot(outlier.shape = 1) +
theme_minimal()+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1),
legend.position = "none")+
ylim(c(0,40))+
xlab("Tierart")+
ylab("Gehalt [µg/kg]")+
labs(
title = "Hydrocortison Gehalte in Muskel",
subtitle = "in µg/kg"
)
Saisonale Unterschiede
ggplot(muskel_ohne_minor, mapping = aes(
x = jahreszeit_fct,
y = hydrocortison_low,
fill = jahreszeit_fct
+
))
geom_boxplot(outlier.shape = 1)+
facet_wrap(~tierart_fct)+
theme_minimal()+
ylim(c(0,40))+
xlab("Jahreszeit")+
ylab("Gehalt [µg/kg]")+
labs(
title = "Jahreszeitliche Unterschiede von Hydrocortison Gehalten",
subtitle = "in Muskel"
+
)theme(legend.position = "none")
ggplot(harn_ohne_minor, mapping = aes(
x = jahreszeit_fct,
y = hydrocortison_low,
fill = jahreszeit_fct
+
))
geom_boxplot(outlier.shape = 1)+
facet_wrap(~tierart_fct)+
theme_minimal()+
ylim(c(0,40))+
xlab("Jahreszeit")+
ylab("Gehalt [µg/l]")+
labs(
title = "Jahreszeitliche Unterschiede von Hydrocortison Gehalten",
subtitle = "in Harn"
+
)theme(legend.position = "none")
Schlussfolgerung
Zwischen den verschiedenen Matrizes gibt es teilweise grosse Unterschiede (Siehe Tabelle 3 und Tabelle 4). In Nieren wurden hohe Werte Cortison gemessen dafür weniger Hydrocortison. In Lebern wurden nur wenig Cortison und Hydrocortison gefunden. In den meisten Muskelproben wurde Hydrocortison nachgewiesen (Siehe Tabelle 5).
Die Menge an gefundenem Cortison und Hydrocortison scheint von der Tierart abhängig zu sein (Siehe Abbildung 5 und Abbildung 6). In Muskelproben von Schweinen wird deutlich mehr Cortison gemessen als in Proben von Tieren der Rindergattung. Auch in Fischmuskel wurde mehr Cortison gemessen jedoch ist die Probenanzahl von 20 zu klein um eine Aussage zutreffen.
Eine Jahreszeitliche Abhängigkeit der Hydrocortison Werte konnte nicht eindutig gezeigt werden (Siehe Abbildung 7 und Abbildung 8). Die gefundenen Unterschiede sind eher gering und von den Schweinen wurden keine Harnproben im Herbst erhoben.
Cortison und Hydrocortison als Methodenkontrolle
Aufgrund des natürlichen Vorkommens von Cortison und Hydrocortison bietet sich die Möglichkeit diese Substanzen für die Kontrolle der Analysemethode zu verwenden.
In Muskelproben von Säugetieren wurden in 99 % aller Proben, Hydrocortison über der Bestimmungsgrenze gemessen (Siehe Abbildung 4). Muskelproben, welche kein Hydrocortison enthalten sollten genau geprüft und gegebenenfalls nochmals gemessen werden.
Beurteilungskriterien
Aufgrund der hohen Streuung innerhalb der einzelnen Matrizes und zwischen den verschiedenen Tierarten kann nach erster Analyse der Daten noch kein Beurteilungskriterium abgeleitet werden. Weiter müssten genauere Angaben zu den einzelnen Tieren (Alter, Geschlecht, Ernährung, Gesundheit usw.) vorhanden sein, um Abweichungen zu erklären. Es ist jedoch angebracht sehr tiefe (< Bestimmungsgrenze) und sehr hohe Werte, z.B mehr als 100 µg/kg in Muskel, näher zu untersuchen.