Los datos que aparecen en el fichero p1-robles.csv
se refieren a un estudio realizado sobre un robledal cercano a una
planta industrial, parte de los cuales se visualizan en la tabla. Se han
seleccionado robles
Sobre cada árbol se han medido las concentraciones (mg/kg) de ocho elementos químicos en sus hojas:
robles
. Si no sabes de qué hablo, vuelve al
material propuesto para trabajar antes de la práctica.Si necesitas leer los datos y no sabes cómo, ve a las soluciones de la Práctica 1 (pero en las PECs necesitarás saber leer datos).
Calcula la media y la desviación típica muestral (también
llamada cuasidesviación) de la variable
Nitrogeno
.
Usaremos las funcioens mean
y sd
mean(robles$Nitrogeno)
## [1] 3.293737
sd(robles$Nitrogeno)
## [1] 0.6415097
Repite el cálculo para los primeros 14 individuos de la tabla.
Recuerda que 1:10
genera la sucesión 1, 2, 3,…, 10, y
que los corchetes []
sirven para referirse a los elementos
de un vector/tabla
mean(robles$Nitrogeno[1:14])
## [1] 3.506857
sd(robles$Nitrogeno[1:14])
## [1] 0.6564765
Repite el cálculo para los individuos que recibieron
tratamiento. Ahora seleccionamos los individuos tales que
Tratamiento == TRUE
mean(robles$Nitrogeno[robles$Tratamiento == TRUE])
## [1] 3.256263
sd(robles$Nitrogeno[robles$Tratamiento == TRUE])
## [1] 0.5394019
Repite el cálculo anterior en función
de la
variable Zona
. Comenta los resultados. Indicación:
usa la función aggregate()
Para no tener que repetir el
cálculo 4 veces, usamos la función `aggregate()``:
aggregate(robles$Nitrogeno ~ robles$Zona, FUN = mean)
## robles$Zona robles$Nitrogeno
## 1 1 3.675000
## 2 2 3.300833
## 3 3 2.549857
## 4 4 3.482091
Se aprecia que en las zonas 1, 2 y 4 las concentraciones medias son similares, y en la zona 3 es inferior.
En el caso de la desviación típica muestral
aggregate(robles$Nitrogeno ~ robles$Zona, FUN = sd)
## robles$Zona robles$Nitrogeno
## 1 1 0.8000555
## 2 2 0.2664613
## 3 3 0.4316231
## 4 4 0.5848168
La dispersión es dispar; de menor a mayor, zona 2, 3, 4 y 1.
A todo esto, ¿crees que la media es una buena medida de centralización para describir los datos?.
Indicación: usa una herramienta visual (boxplot, curva densidad,…) para analizar la distribución de los datos y determinar si la media es apropiada
Queremos asegurarnos de que las submuestras son unimodales y simétricas. Podemos usar sendos boxplots para visualizar este hecho
boxplot(robles$Nitrogeno ~ robles$Zona)
stripchart(robles$Nitrogeno ~ robles$Zona, add = T, vertical = T, method="jitter")
Su forma corrobora grosso modo que los datos sigen una campana de Gauss (simétrica y unimodal). Recuerda que para muestras elegidas al azar no podemos esperar observas simetrías perfecta
¿Cuál es el valor mínimo que alcanza la variable
Magnesio
? ¿En qué individuo se observa?
Indicación: usa la función which()
min(robles$Magnesio)
## [1] 0.267
which(robles$Magnesio == min(robles$Magnesio))
## [1] 34 35
¿Cuántas observaciones corresponden a robles con una
concentración de Potasio
mayor o igual que 2?
Puedes recuperar los valores del Potasio de los robles que tienen más de
2 de Potasio
robles$Potasio[robles$Potasio >= 2]
## [1] 2.632 2.495 2.396 2.197 2.233 2.533 2.667 2.416 2.333 2.267 2.611 2.982
## [13] 2.833 2.050 2.566
y, a continuación, calcular la longitud de dicho vector
length(robles$Potasio[robles$Potasio >= 2])
## [1] 15
Otra alternativa es comparar cada elemento del vector
robles$Potasio
con 2
robles$Potasio >= 2
## [1] TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE
## [13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [25] FALSE FALSE FALSE FALSE TRUE TRUE TRUE FALSE FALSE TRUE FALSE TRUE
## [37] FALSE TRUE
para obtener TRUE
s y FALSE
s según se cumpla
o no esa condición. Recuerda que TRUE
vale 1 y
FALSE
cero, con lo que sumas todos esos unos y ceros
obtienes la cantidad deseada
sum(robles$Potasio >= 2)
## [1] 15
¿Qué porcentaje de robles tiene una concentración de
Potasio
mayor o igual que 2
Basta con dividir el número anterior entre el número total de robles y multiplicar por 100
(sum(robles$Potasio >= 2)/nrow(robles)) * 100
## [1] 39.47368
Ahora calcula la media de la variable Nitrogeno
para aquellas observaciones en las que Potasio
es mayor o
igual que 2. Compárala con la media que has calculado en el anterior
apartado. Haz lo mismo con la cuasidesviación típica. Basta con
calcular ambas medias
mean(robles$Nitrogeno)
## [1] 3.293737
mean(robles$Nitrogeno[robles$Potasio >= 2])
## [1] 3.570467
en el segundo caso la media es ligeramente superior, y las cuasidesviaciones típicas
sd(robles$Nitrogeno)
## [1] 0.6415097
sd(robles$Nitrogeno[robles$Potasio >= 2])
## [1] 0.5133733
A partir del boxplot de la variable Magnesio
,
¿observas algún dato atípico? ¿Qué posición ocupa en la tabla? En caso
afirmativo, crea otra tabla robles1
en la que hayas
eliminado esa fila y calcula de nuevo el boxplot
boxplot(robles$Magnesio)
pb = boxplot(robles$Magnesio)
which(robles$Magnesio %in% pb$out)
## [1] 17
robles1 = robles[-which(robles$Magnesio %in% pb$out), ]
boxplot(robles1$Magnesio)
Representa los boxplots de la variable Magnesio
para cada una de las zonas, ¿observas algún patrón?
boxplot(robles$Magnesio ~ robles$Zona)
stripchart(robles$Magnesio ~ robles$Zona, method = "jitter", col="blue", add=TRUE, pch = 21, vertical = T)
No olvides representar los puntos sobre los boxplots. Y sí, se observan ciertas tendencias:
Magnesio
.