Lovett et al. (2000) estudiaron la química de las cuencas hidrográficas boscosas en las Montañas Catskill en el estado de Nueva York. Eligieron 39 sitios (observaciones) y midieron las concentraciones de diez variables .
Para la práctica asumiremos que los 39 sitios representan una muestra aleatoria de posibles sitios en el centro de Catskills y nos centraremos en el cálculo de las estimaciones puntuales para dos variables: \(SO_{4}^{2-}\) y \(Cl^{-}\).
Los datos se encuentran en el archivo lovett.csv
library(readr) # Libreria para leer los datos csv
# No olvide configurar adecuadamente su directorio de trabajo
lovett <- read_csv("~/Curso_Diseno_2021/lovett.csv")## Parsed with column specification:
## cols(
## STREAM = col_character(),
## ELEVATN = col_double(),
## SO4 = col_double(),
## SO4MOD = col_double(),
## CL = col_double()
## )
Para el ejemplo calcularemos las siguientes medidas descriptivas de tendencia central:
mean(),median() yLos argumentos de las funciones anteriores son los siguientes:
x : Un vector númerico que contiene los datos de la variable
na.rm : un valor lógico que indica si los NA valores deben eliminarse antes de que continúe el cálculo.
trim : en el caso que se desee calcular la media recortada indica la fracción (0 a 0,5) de observaciones que se recortarán de cada extremo de x antes de que se calcule la media. Los valores de recorte fuera de ese rango se toman como el punto final más cercano.
Para los cálculos debemos extraer la variable del conjunto de datos lovett,una manera en la que podemos hacer esto es usando la siguiente forma genérica objeto$nombre, donde el objeto sería el nombre del archivo (en nuestro caso lovett) y nombre sería la variable a la cual deseamos calcular el estadístico. Este método permite extraer un sólo elemento a la vez, funciona para data frames y listas, y para el caso de los data frame, el elemento extraído siempre será una columna.
## [1] 61.92308
## [1] 62.1
Para obtener el valor mínimo es la función min(), para el valor máximo es la función max().
## [1] 50.6
## [1] 72.1
Para los cuartiles es la función quantile() que devuelve un objeto que contiene los 5 valores correspondientes al valor mínimo, al primer cuartil (0.25) (Q1), al segundo cuartil (0.5) (Q2), al tercer quartil (0.75) (Q3) y al valor máximo.
## 0% 25% 50% 75% 100%
## 50.60 57.65 62.10 65.65 72.10
Alternativamente podriams calcular cada cuartil por separado de la siguiente forma:
## 25%
## 57.65
## 50%
## 62.1
## 75%
## 65.65
Para la varianza se utiliza la función var(), para la desviación estándar la función sd(), para el rangorange para el rango intercuartílico IQR()
## [1] 5.241558
## [1] 27.47393
## [1] 50.6 72.1
## [1] 8
Para el coeficiente de variación y el error estándar de la media no existe una función directa en R, pero se pueden calcular con las siguientes instrucciones:
## [1] 0.1343989
## [1] 0.839321
Para la asimetría es la función skewness(), para la curtosis es la funciónkurtosis(). Debe instalar el paquete “e1071”
## [1] 0.1511742
## [1] -0.8756607
Podríamos realizar el cálculo de cada uno de los estadísticos con la siguiente instrucción. Para ello debemos tener cargado previamente el paquete “dplyr”
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
resumen <- lovett %>%
summarize(mean_SO4=mean(SO4),
median_SO4=median(SO4),
min_SO4=min(SO4),
max_SO4=max(SO4),
Q1_SO4=quantile(SO4,0.25),
Q3_SO4=quantile(SO4,0.75),
var_SO4=var(SO4),
sd_SO4=sd(SO4),
IQR_SO4=IQR(SO4),
std_mean = sd(SO4)/sqrt(length(SO4)),
Cv = sd(SO4)/mean(length(SO4)),
skewnes_SO4=skewness(SO4),
kurtosis_SO4=kurtosis(SO4))
resumen# Podemos transponer los datos y luego gardalos como un archivo .CSV
Resumen = as_tibble(t(resumen), rownames = "Estadísticos",column_name = "valor")## Warning: The `x` argument of `as_tibble.matrix()` must have unique column names if `.name_repair` is omitted as of tibble 2.0.0.
## Using compatibility `.name_repair`.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_warnings()` to see where this warning was generated.
En R existen múltiples opciones para la realización de gráficos en este caso utilizaremos la librería “ggplot2” Realizaremos un histograma de frecuencias y un boxplot con la misma variable con la que realizamos los cálculos anteriores
## geom_bar: na.rm = FALSE, orientation = NA
## stat_bin: binwidth = NULL, bins = NULL, na.rm = FALSE, orientation = NA, pad = FALSE
## position_stack
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Veamos cómo podemos modificar el histograma para que quede mejor visualmente.
p + geom_histogram(binwidth = 2, col='black', fill='gray', alpha=0.4)+
xlab('SO4') + ylab('Frecuencia') Otra manera de rellenar las barras del histograma en función del número de apariciones es usando ..count.. en los aesthetics de geom_histogram()
`
En el siguiente link se puede encontrar información sobre opciones de configuración de gráficos creados con ggplot2.
A modo de práctica se debe replicar el ejercicio anterior con la misma variable y además con la variable \(Cl^{-}\)
Lovett, G.M., Weathers, K.C. & Sobczak, W.V. (2000). Nitrogen saturation and retention in forested watersheds of the Catskill Mountains, New York. Ecological Applications 10: 73–84. https://doi.org/10.1890/1051-0761(2000)010[0073:NSARIF]2.0.CO;2