---
title: "Análisis Descriptivo (Agrupado)"
output:
  word_document: default
  html_document: default
  pdf_document: default
date: "`r Sys.Date()`"
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

### Ejercicio 1
El archivo **datos.txt** contiene, en formato de texto, concentraciones de distintos contaminantes en tres localizaciones costeras (A , B y C) en los meses de mayo y noviembre. Se registraron además datos sobre la temperatura y el pH del agua. Concretamente, se realizaron mediciones en el agua de los niveles de óxidos de nitrógeno (**NO2**, **NO3**), Arsénico (**As**), Mercurio (**Hg**), Zinc (**Zn**), Cadmio (**Cd**), Plomo (**Pb**) y Cobre (**Cu**). También se tomaron, tanto en mayo como en noviembre, mediciones del nivel de amoniaco al principio (**NH3a**) y al final (**NH3b**) de cada mes. Por último, se registró la **salinidad** (Baja, Media-baja, Media-alta, Alta) y el número de especies de plancton presentes (**plancton**).

En esta práctica, repetimos el análisis descriptivo de la práctica anterior, pero **agrupando** los resultados en función de variables cualitativas.

**1. Importa los datos desde el archivo (previamente debes fijar como directorio de trabajo la carpeta donde se encuentran los datos).**

```{r}
datos <- read.table("datos.txt", head=T, sep="\t")
```

**2. Realiza un análisis descriptivo de la variable "salinidad" agrupando por "localizacion".**

2.1. Calcula la tabla de frecuencias de la variable salinidad para cada localización (ten en cuenta que está en escala ordinal).

Volvemos a ordenar los niveles de salinidad:
```{r}
      datos$salinidad<-factor(datos$salinidad, levels=c("Baja", "Media-baja", "Media-alta", "Alta" ))
```

Ahora calculamos las frecuencias absolutas por localización:
```{r}
tabla.sal.loc <- table(datos$localizacion, datos$salinidad )
tabla.sal.loc
```

Y las frecuencias relativas por localización:
```{r}
round(prop.table(tabla.sal.loc, 1), 2)
```

2.2. Representa por medio de gráficos de barras la variable salinidad en cada una de las localizaciones.

Usamos la tabla de frecuencias absolutas por localización y salinidad para dibujar el gráfico de barras:
```{r}
barplot(t(tabla.sal.loc), beside = TRUE, col = rainbow(4), legend.text = TRUE)
#vamos a aumentar el intervalo del eje Y para que la leyenda no se solape con el grafico
barplot(t(tabla.sal.loc), beside = TRUE, col = rainbow(4), legend.text = TRUE,ylim=c(0,100))
```


**3. Realiza un análisis descriptivo de la variable "plancton" agrupando por "localizacion".**

3.1. Calcula la tabla de frecuencias de la variable "plancton" para la localización B y guárdala en una matriz:
```{r}
plancton.B <- datos$plancton[datos$localizacion == "B"]
f.abs <- table(plancton.B)
f.rel <- round(f.abs / length(plancton.B), 2)
f.abs.acu <- cumsum(f.abs)
f.rel.acu <- cumsum(f.rel)
tabla <- cbind(f.abs, f.rel, f.abs.acu, f.rel.acu)
tabla
```

3.2. Visualicemos esta tabla en un diagrama de barras de frecuencias relativas:
```{r}
barplot(f.rel, col = rainbow(5))
```

3.3. Calculemos medidas de resumen por localización.

En primer lugar de centralización:
```{r}
tapply(datos$plancton, datos$localizacion, mean)   # media muestral
tapply(datos$plancton, datos$localizacion, median) # mediana
```

Medidas que nos informan de otras posiciones:
```{r}
tapply(datos$plancton, datos$localizacion, min)                         # minimo
tapply(datos$plancton, datos$localizacion, max)                         # maximo
tapply(datos$plancton, datos$localizacion, range)                       # minimo y maximo
tapply(datos$plancton, datos$localizacion, quantile, probs = c(0.25, 0.5, 0.75)) # cuartiles y mediana
```

Medidas de dispersión:
```{r}
tapply(datos$plancton, datos$localizacion, function(x) max(x) - min(x)) # rango
tapply(datos$plancton, datos$localizacion, sd)                           # desviacion tipica
tapply(datos$plancton, datos$localizacion, IQR)                          # rango intercuartilico
```

Medidas de forma:
```{r}
library(e1071)
tapply(datos$plancton, datos$localizacion, skewness) # coeficiente de asimetria
tapply(datos$plancton, datos$localizacion, kurtosis) # coeficiente de curtosis
```

**4. Realiza un análisis descriptivo de la variable "Zn" con agrupaciones por localización y por mes.**

4.1. Para calcular la tabla de frecuencias agrupada en intervalos, calculamos el rango y definimos los cortes:
```{r}
range(datos$Zn)
cortes <- c(10, 11, 12, 13, 14, 15)  # a la vista del rango estos cortes parecen adecuados
intervalos <- cut(datos$Zn, breaks = cortes)
```

Ahora calculamos la tabla de frecuencias por localización:
```{r}
tabla.zn.loc <- table(datos$localizacion,intervalos)
tabla.zn.loc
round(prop.table(tabla.zn.loc, 1), 2)
```

4.2 Visualicemos esta información mediante un histograma. En este caso lo hacemos para el mes de noviembre:
```{r}
hist(datos$Zn[datos$localizacion == "A"], breaks = cortes, col = rainbow(5), xlab = "Zn en localización A")
```

4.3. Calculemos medidas de resumen por localización.

En primer lugar de centralización:
```{r}
tapply(datos$Zn, datos$localizacion, mean)   # media muestral
tapply(datos$Zn, datos$localizacion, median) # mediana
```

Medidas que nos informan de otras posiciones:
```{r}
tapply(datos$Zn, datos$localizacion, min)                         # minimo
tapply(datos$Zn, datos$localizacion, max)                         # maximo
tapply(datos$Zn, datos$localizacion, range)                       # minimo y maximo
tapply(datos$Zn, datos$localizacion, quantile, probs = c(0.25, 0.75)) # cuantiles
```

Medidas de dispersión:
```{r}
tapply(datos$Zn, datos$localizacion, function(x) max(x) - min(x)) # rango
tapply(datos$Zn, datos$localizacion, sd)                           # desviacion tipica
tapply(datos$Zn, datos$localizacion, IQR)                          # rango intercuartilico
```

Medidas de forma:
```{r}
library(e1071)
tapply(datos$Zn, datos$localizacion, skewness) # coeficiente de asimetria
tapply(datos$Zn, datos$localizacion, kurtosis) # coeficiente de curtosis
```

4.4. Visualicemos alguna de estas medidas en un diagrama de caja (boxplot) por localización:
```{r}
boxplot(Zn ~ localizacion, data = datos, col = rainbow(3))
```





**5. Realiza un análisis descriptivo de la variable "Zn" separado por meses.** 



**6. Realiza un análisis descriptivo de la variable "NO3" separado por localizaciones.** 