---
title: "Análisis Descriptivo"
output: html_document
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**)


**1. Importa los datos desde el archivo (previamente debes fijar como directorio de trabajo la carpeta donde se encuentran los datos).**

```{r}
      datos <- read.delim("datos.txt", stringsAsFactors=TRUE)
```

**2. Realiza un análisis descriptivo de la variable "salinidad".**

2.1. Calcula la tabla de frecuencias de la variable salinidad (ten en cuenta que está en escala ordinal).

Comencemos con las frecuencias absolutas:
```{r}
      table(datos$salinidad)
```

Vemos que los valores ("niveles" o "levels" en inglés) de la variable no aparecen ordenados, lo cual no es correcto, por lo que habrá que entrar el orden correcto y volver a ejecutar el comando:
```{r}
      levels(datos$salinidad)<-c("Baja", "Media-baja", "Media-alta", "Alta" )
      table(datos$salinidad) #frecuencias absolutas
      round(table(datos$salinidad)/length(datos$salinidad),2) #frecuencias relativas redondeadas con 2 decimales
```

2.2. Representa los datos en un gráfico de sectores y en un gráfico de barras.

En primer lugar, el gráfico de sectores:
```{r}
      pie(table(datos$salinidad))
```

Ahora el gráfico de barras con las frecuencias absolutas y usando las opciones para darle color:
```{r}
      barplot(table(datos$salinidad), col=rainbow(4))
```

*¿Sabrías hacer el gráfico de barras con las frecuencias relativas?*


**3. Realiza un análisis descritivo de la variable "plancton".**

3.1. Calculemos la tabla de frecuencias y la guardamos en una matriz:
```{r}
      f.abs<-table(datos$plancton)
      f.rel<-round(f.abs/372,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.

En primer lugar de centralización:
```{r}
      mean(datos$plancton)                        #media muestral
      median(datos$plancton)                      #mediana
```


Medidas que nos informan de otras posiciones:
```{r}
      min(datos$plancton)                         #mínimo
      max(datos$plancton)                         #máximo
      range(datos$plancton)                       #mínimo y máximo
      quantile(datos$plancton,probs=c(0.25,0.75)) #cuantiles
```      


Medidas de dispersión:
```{r}
      r<-max(datos$plancton)-min(datos$plancton);r                       #rango
      sd(datos$plancton)                                                 #desviación típica
      IQR(datos$plancton)                                                #rango intercuartílico
```

Medidas de forma:
```{r}
      library(e1071)
      skewness(datos$plancton)                    #coeficiente de asimetría
      kurtosis(datos$plancton)                    #coeficiente de curtosis
```

**4. Realiza un análisis descriptivo de la variable "Zn"**

4.1. En este caso, para calcular la tabla de frecuencias tenemos que agrupar los datos en intervalos. Para ello, calculemos el máximo y el mínimo y veamos cuántos cortes podemos hacer (si no quedamos satisfechos, podemos repetir el proceso).
```{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); intervalos
```

Ahora ya podemos realizar la tabla de frecuencias:
```{r}
      f.abs<-table(intervalos)
      f.rel<-round(f.abs/372,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
```

4.2 Visualicemos esta tabla mediante un histograma:
```{r}
      hist(datos$Zn, breaks=cortes, col=rainbow(5))
```

4.3. Calculemos medidas de resumen.

En primer lugar de centralización:
```{r}
      mean(datos$Zn)                        #media muestral
      median(datos$Zn)                      #mediana
```


Medidas que nos informan de otras posiciones:
```{r}
      min(datos$Zn)                         #mínimo
      max(datos$Zn)                         #máximo
      range(datos$Zn)                       #mínimo y máximo
      quantile(datos$Zn,probs=c(0.25,0.75)) #cuantiles
```      


Medidas de dispersión:
```{r}
      r<-max(datos$Zn)-min(datos$Zn);r                             #rango
      sd(datos$Zn)                                                 #desviación típica
      IQR(datos$Zn)                                                #rango intercuartílico
```

Medidas de forma:
```{r}
      library(e1071)
      skewness(datos$Zn)                    #coeficiente de asimetría
      kurtosis(datos$Zn)                    #coeficiente de curtosis
```

4.4. Visualicemos alguna de estas medidas en un diagrama de caja (boxplot):
```{r}
boxplot(datos$Zn, col="lightblue")
```
