---
lesson: Statistik7
knitr:
  opts_chunk: 
    collapse: false
---

# Statistik 7: Demo

[Demoscript herunterladen (.R)](../purl/Statistik7_Demo.R){.dld}

[Demoscript herunterladen (.qmd)](../purl/Statistik7_Demo.qmd){.dld}

-   Datensatz *Doubs_env*


## Ordination Hauptkomponentenanalyse (PCA)

### Datenbeschreibung

Der Datensatz enthält Daten zum Vorkommen von Fischarten und den zugehörigen Umweltvariablen im Fluss Doubs (Jura). Es gibt 29 Probestellen (sites), an denen jeweils die Abundanzen von 27 Fischarten (auf einer Skalen von 0 bis 5) sowie 10 Umweltvariablen erhoben wurden. In dieser Demo verwenden wir die Umweltdaten:

- ele = Elevation (m a.s.l.)
- slo = Slope (‰)
- dis = Mean annual discharge (m3 s-1)
- pH = pH of water
- har = Hardness (Ca concentration) (mg L-1)
- pho = Phosphate concentration (mg L-1)
- nit = Nitrate concentration (mg L-1)
- amm = Ammonium concentration (mg L-1)
- oxy = Dissolved oxygen (mg L-1)
- bod = Biological oxygen demand (mg L-1)

```{r}
#| message: false
library("readr")
library("ggplot2")
library("dplyr")
library("tibble")
```

```{r}
#| message: false
# Daten importieren
env <- read_delim("./datasets/stat/Doubs_env.csv", delim = ";") |>
  column_to_rownames(var = "Site")

str(env)
summary(env)
```

### PCA durchführen

```{r}
# Berechnen der PCA
pca_1 <- prcomp(env, scale = TRUE)
```

Wir verwenden hier «scale = TRUE» weil wir Umweltvariablen mit unterschiedliche Masseinheiten verwenden die variierende Skalen aufweisen. 
Eine unskalierte PCA (default: scale = FALSE ) ist sinnvoll, wenn alle Variablen ähnliche Skalen haben oder die Skalenunterschiede von Interesse sind.


```{r}
# Erklärte Varianzen der einzelnen Achsen (Principle Components)
summary(pca_1)

# Korrelationen der Variablen mit den Ordinationsachsen (Loadings)
pca_1$rotation

# # Koordinaten Sites im Ordinationsraum (Scores)
pca_1$x
```

```{r}
library("vegan")

# Visualisierung der Anteile erklärter Varianz, im Vergleich zu einem Broken-Stick-Modell
screeplot(pca_1, bstick = TRUE)
```

### PCA visualisieren

```{r}
# Mit biplot von base R
biplot(pca_1)

# Mit package factoextra 
library("factoextra")

# Biplot
fviz_pca_biplot(pca_1)

# Biplot der 1 und 3 Achse
fviz_pca_biplot(pca_1,  axes = c(1, 3) )

# Biplot mit angepasssten Grafikparametern
# repl = TRUE verhindert die Überlagerung der Textlabels
fviz_pca_biplot(pca_1, repel = TRUE, 
                col.var = "red", col.ind = "black") +
  theme_classic() +
  theme(plot.title = element_blank())

# Nur Inidviudals (hier Sites)
fviz_pca_ind(pca_1, repel = TRUE) +
  theme_classic()

# Nur Variables (hier Umweltparameter)
fviz_pca_var(pca_1, repel = TRUE) +
  theme_classic()
```
