require(table1)
require(ggplot2)
require(agricolae)
require(car)
load("C:/Users/JULIANA/OneDrive/Documentos/UAO/SEXTO/DISEÑO/Salinidad.RData")
str(Salinidad)
## 'data.frame':    45 obs. of  5 variables:
##  $ Biomasa  : num  765 954 828 755 896 ...
##  $ pH       : num  5 4.7 4.2 4.4 5.55 5.5 4.25 4.45 4.75 4.6 ...
##  $ Salinidad: int  33 35 32 30 33 33 36 30 38 30 ...
##  $ Zinc     : num  16.5 14 15.3 17.3 22.3 ...
##  $ Potasio  : num  1442 1299 1154 1045 522 ...

a) Estadísticas descriptivas

sapply(Salinidad, mean)
##     Biomasa          pH   Salinidad        Zinc     Potasio 
## 1082.172644    4.608889   30.266667   17.830796  797.377778
sapply(Salinidad, sd)
##    Biomasa         pH  Salinidad       Zinc    Potasio 
## 546.287433   1.254731   3.719726   8.274169 297.576022
cv = sapply(Salinidad, sd) / sapply(Salinidad, mean)*100
round(cv,1)
##   Biomasa        pH Salinidad      Zinc   Potasio 
##      50.5      27.2      12.3      46.4      37.3
table1(~Biomasa + pH + Salinidad + Zinc + Potasio, data=Salinidad)
Overall
(N=45)
Biomasa
Mean (SD) 1080 (546)
Median [Min, Max] 992 [370, 2340]
pH
Mean (SD) 4.61 (1.25)
Median [Min, Max] 4.45 [3.20, 7.45]
Salinidad
Mean (SD) 30.3 (3.72)
Median [Min, Max] 30.0 [24.0, 38.0]
Zinc
Mean (SD) 17.8 (8.27)
Median [Min, Max] 19.2 [0.211, 31.3]
Potasio
Mean (SD) 797 (298)
Median [Min, Max] 773 [351, 1440]

Biomasa La biomasa presentó una media de 1080 g y una desviación estándar de 546 g, con valores entre 370 y 2340 g. El CV fue de 50.5% indicando una variabilidad relativamente alta entre las muestras. Mediana fue de 992 g.

pH El pH presentó una media de 4.61, desviación estándar de 1.25 y valores entre 3.2 y 7.45. Su coeficiente de variación fue de 27.2%. Mediana de 4.45.

Salinidad La salinidad presentó una media de 30.3, desviación estándar de 3.72 y un rango entre 24 y 38. El CV fue de 12.3%, siendo la variable con menor variabilidad relativa. Mediana de 30.

Zinc Presentó una media de 17.8, desviación estándar de 8.27 y valores entre 0.2011 y 31.3. Su CV fue de 46.4%, indicando una alta variabilidad relativa. Mediana de 19.2.

Potasio El potasio presentó una media de 797, desviación estándar de 298 y valores entre 351 y 1440. El CV fue de 37.3%, por lo que presentó una variabilidad relativa intermedia-alta. Mediana de 773.

par(mfrow = c(2,3))
hist(Salinidad$Biomasa, main="Biomasa", xlab="gr")
hist(Salinidad$pH,        main="pH",        xlab="pH")
hist(Salinidad$Salinidad, main="Salinidad", xlab="Salinidad")
hist(Salinidad$Zinc,      main="Zinc",      xlab="Zinc")
hist(Salinidad$Potasio,   main="Potasio",   xlab="Potasio")

Biomasa Media mayor a la mediana. Distribución asimétrica a la derecha (positiva). Una moda principal en 500-1500 y un grupito aparte en 2000-2500.

pH Media ligeramente mayor a la mediana, aunque la presencia de valores elevados entre aproximadamente 7.1 y 7.45 incrementa la dispersión y genera cierta asimetría. Asimetría positiva. Varias modas: una en 3-3.5, otra en 4.5-5 y un grupo en 7+.

Salinidad Media prácticamente igual a la mediana. Casi simétrica. Varias modas: una en 24-26, otra en 28-30 y en 34-36 (bimodal).

Zinc Media menor a la mediana. Asimetría negativa. Una moda en 15-25, con un grupito aparte cerca de 0.

Potasio Media un poco mayor a la mediana. Asimetría positiva (leve). Varias modas: 400-600, 800-1000 y 1200-1400.

par(mfrow = c(2,3))
boxplot(Salinidad$Biomasa,main="Biomasa")
boxplot(Salinidad$pH,main="pH")
boxplot(Salinidad$Salinidad, main="Salinidad")
boxplot(Salinidad$Zinc,main="Zinc")
boxplot(Salinidad$Potasio, main="Potasio")
par(mfrow = c(1,1))

Biomasa La mediana está casi en el centro de la caja, pero el bigote de arriba es mucho más largo que el de abajo. Indica asimetría positiva. No hay valores atípicos. Las muestras más altas están en el extremo del bigote.

pH La caja va de 3.45 a 5.35 y la mediana (4.45) está ubicada en medio. El bigote inferior es corto y el superior largo. Asimetría positiva. No hay valores atípicos.

Salinidad La mediana (30) queda justo en el centro de la caja y los bigotes son parecidos, el largo siendo un poco más largo. Es casi simétrica. Sin atípicos.

Zinc Mediana más cerca de Q3 que de Q1, bigote de abajo termina en 9.4. Sumado al punto suelto, indica asimetría negativa. Valor atípico que representa a cinco muestras (0.21 a 0.37). Forman un grupo con características propias y no errores de medición.

Potasio Bigote superior mucho más largo que el inferior. Asimetría positiva leve. Dentro de la caja, mediana un poco más cerca de Q3, así que las señales no son del todo claras. Sin atípicos.

b) Relación entre variables

R2 = cor(Salinidad[, c("Biomasa", "pH", "Salinidad", "Zinc", "Potasio")])^2
round(R2, 3)
##           Biomasa    pH Salinidad  Zinc Potasio
## Biomasa     1.000 0.861     0.004 0.611   0.005
## pH          0.861 1.000     0.002 0.519   0.001
## Salinidad   0.004 0.002     1.000 0.182   0.000
## Zinc        0.611 0.519     0.182 1.000   0.006
## Potasio     0.005 0.001     0.000 0.006   1.000

pH: explica casi toda la variación de la biomasa. Queda un 13.9% sin explicar, que es la dispersión de los puntos alrededor de la recta.

Zinc: también explica mucho, pero unos 25 puntos porcentuales menos que el pH.

Salinidad y potasio: explican menos del 1%. Con 45 muestras, un R² tan bajo no es significativo. No sirve para predecir la biomasa.

ggplot(Salinidad, aes(x=pH, y=Biomasa)) + geom_point() + geom_smooth(method="lm")

pH vs Biomasa Los puntos siguen la recta de cerca y el intervalo de confianza del 95% es angosto, es decir, recta bien estimada de poca incertidumbre.

A mayor pH, mayor biomasa.

El pH explica cerca del 86% de la biomasa (R²≈0.86), este dato se confirma más abajo.

ggplot(Salinidad, aes(x=Zinc, y=Biomasa)) + geom_point() + geom_smooth(method="lm")

Zinc vs Biomasa La relación es negativa: a más Zinc, menos biomasa. Su R²=0.61 es fuerte, pero más dispersa que la del pH.

Entre Zinc 10 y 31 los puntos bajan con más dispersión, y uno con Zinc ~20 y biomasa ~1890 destaca por encima.

Parte de esta relación puede ser indirecta: pH y Zinc están correlacionados entre sí (R²=-0.72), y son las mismas muestras en el extremo. No se puede decir que el Zinc reduzca la biomasa. Solo que ambas varían juntas.

ggplot(Salinidad, aes(x=Salinidad, y=Biomasa)) + geom_point() + geom_smooth(method="lm")

Salinidad vs Biomasa La recta es casi horizontal y el intervalo de confianza es muy ancho. No se distingue el cero.

Los puntos forman columnas verticales porque la salinidad solo toma valores enteros. En cada columna hay biomasas muy distintas: con salinidad 30, van de unos 370 a más de 2300 g.

La salinidad no explica la biomasa en este conjunto de datos.

ggplot(Salinidad, aes(x=Potasio, y=Biomasa)) + geom_point() + geom_smooth(method="lm")

Potasio vs Biomasa Tampoco hay tendencia: recta casi plana y banda ancha que incluye la horizontal.

Se ven dos zonas: 5 puntos arriba a la izquierda (Potasio ~450-570, biomasa mayor a 2100) y muchos abajo con biomasa baja y Potasio parecido. Con Potasio ~500, la biomasa puede ser de 370 a 2337 g, así que el Potasio no sirve para predecirla.

c) Categorización del pH y análisis de varianza

if ("pH_cat" %in% names(Salinidad)) Salinidad$pH_cat = NULL   
cortes = quantile(Salinidad$pH, probs = c(0, 1/3, 2/3, 1))
cortes
##        0% 33.33333% 66.66667%      100% 
##  3.200000  3.883333  4.900000  7.450000
pH_cat = cut(Salinidad$pH, breaks = cortes, include.lowest = TRUE,
             labels = c("Bajo", "Medio", "Alto"))
table(pH_cat)
## pH_cat
##  Bajo Medio  Alto 
##    15    15    15
table1(~Biomasa|pH_cat, data = data.frame(Biomasa = Salinidad$Biomasa, pH_cat = pH_cat))
Bajo
(N=15)
Medio
(N=15)
Alto
(N=15)
Overall
(N=45)
Biomasa
Mean (SD) 593 (165) 1050 (245) 1610 (548) 1080 (546)
Median [Min, Max] 546 [370, 978] 1040 [568, 1490] 1420 [765, 2340] 992 [370, 2340]

Biomasa según nivel de pH La biomasa media aumenta escalonadamente con el nivel de pH.

En Bajo y Medio la media y la mediana casi coinciden (distribuciones simétricas); en Alto la media (1610) supera bastante a la mediana (1420), señal de asimetría positiva, coherente con las 5 muestras extremas (biomasa > 2100) que tiene este grupo.

ggplot(Salinidad, aes(x=pH_cat, y=Biomasa, fill=pH_cat)) + geom_boxplot()

Boxplot por categoría de pH En el boxplot, las tres cajas casi no se traslapan y suben de izquierda a derecha. Bajo tiene un atípico leve (~978 g). La caja de Alto es mucho más ancha que las otras dos: va de ~1200 a ~2190, contra ~480-660 en Bajo y ~890-1200 en Medio. Esa diferencia de tamaño es la primera pista visual de que las varianzas no son iguales.

anova_sal = aov(Salinidad$Biomasa ~ pH_cat)

H0: las medias de biomasa son iguales en los tres niveles de pH.
H1: al menos un nivel difiere.

Como p<0.05, se rechaza H0: el nivel de pH genera diferencias significativas en la biomasa.

summary(anova_sal)
##             Df  Sum Sq Mean Sq F value   Pr(>F)    
## pH_cat       2 7712683 3856342   29.89 8.45e-09 ***
## Residuals   42 5418235  129006                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
shapiro.test(residuals(anova_sal))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(anova_sal)
## W = 0.97316, p-value = 0.3749

H0: los residuales siguen una distribución normal.
Como p>0.05, no se rechaza H0: el supuesto se cumple.

qqnorm(residuals(anova_sal)); qqline(residuals(anova_sal))

Q-Q Plot El Q-Qplot lo confirma: la mayoría de los puntos, sobre todo en el centro, sigue de cerca la recta. Hay una desviación leve en ambas colas (algunos puntos por debajo de la recta a la izquierda y por encima a la derecha), lo que indica colas un poco más pesadas que una normal perfecta, pero no lo suficiente como para que Shapiro lo detecte como anormal. Es un resultado coherente y no contradictorio.

bartlett.test(Salinidad$Biomasa ~ pH_cat)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  Salinidad$Biomasa by pH_cat
## Bartlett's K-squared = 20.084, df = 2, p-value = 4.353e-05
leveneTest(Salinidad$Biomasa ~ pH_cat)
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value   Pr(>F)    
## group  2  8.6753 0.000702 ***
##       42                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

H0: las tres varianzas son iguales.
Ambas pruebas dan p<0.05, así que se rechaza H0 en las dos: el supuesto no se cumple.

Que las dos pruebas coincidan le da más fuerza a la conclusión: no es un artefacto de una sola prueba.

La causa se ve en las DE: 165 (Bajo), 245 (Medio) y 548 (Alto). El grupo Alto es 3.3 veces más variable que Bajo, porque mezcla pH “normales” (5-5.6) con el grupo aparte de pH mayor a 7 (biomasa 2160-2337).

oneway.test(Salinidad$Biomasa ~ pH_cat)
## 
##  One-way analysis of means (not assuming equal variances)
## 
## data:  Salinidad$Biomasa and pH_cat
## F = 34.727, num df = 2.000, denom df = 24.736, p-value = 6.58e-08

El resultado confirma al ANOVA clásico que el pH afecta la biomasa.

LSD.test(anova_sal, "pH_cat", console = TRUE)
## 
## Study: anova_sal ~ "pH_cat"
## 
## LSD t Test for Salinidad$Biomasa 
## 
## Mean Square Error:  129005.6 
## 
## pH_cat,  means and individual ( 95 %) CI
## 
##       Salinidad.Biomasa      std  r      se       LCL       UCL     Min
## Alto          1605.3853 547.6014 15 92.7382 1418.2321 1792.5386 765.280
## Bajo           593.0233 164.8299 15 92.7382  405.8701  780.1766 369.823
## Medio         1048.1093 244.9093 15 92.7382  860.9560 1235.2625 568.455
##            Max       Q25      Q50      Q75
## Alto  2337.326 1200.2575 1422.836 2192.560
## Bajo   977.515  481.3520  545.538  659.713
## Medio 1491.276  890.8515 1039.637 1198.396
## 
## Alpha: 0.05 ; DF Error: 42
## Critical Value of t: 2.018082 
## 
## least Significant Difference: 264.6747 
## 
## Treatments with the same letter are not significantly different.
## 
##       Salinidad$Biomasa groups
## Alto          1605.3853      a
## Medio         1048.1093      b
## Bajo           593.0233      c

Letras distintas para los tres grupos significa que los tres niveles de pH difieren significativamente entre sí.