INFORME1: Variación intra- e inter-poblacional en el tamaño de semillas

Thespesia populnea

Thespesia populnea

DATOS

Los datos para este informe se encuentran en el siguiente archivo:

LabEcoPob variacion poblacional 20180817

Si baja el archivo a su directorio de R, puede adaptar (usar sus propios nombres para objetos y variables) el siguiente código para asignar sus datos a un data.frame:

library(readxl)
#para datos de ancho y longitud de las semillas
semillas <- read_excel("LabEcoPob variacion poblacional 20180817.xlsx", 
    sheet = "datos_ancho_long")
#para datos de número de semillas por frutos
frutos <- read_excel("LabEcoPob variacion poblacional 20180817.xlsx", 
    sheet = "datos_semillasfruto")

NOTA 1: cada persona debe trabajar el informe con todos los datos.

CONTENIDO

  • Introducción: sobre la variabilidad poblacional y sus correlativos (posibles causas): no más de 250 palabras, con al menos dos citas de publicaciones científicas.

  • Preguntas: formular preguntas e hipótesis sobre al menos cuatro (4) de los siguientes asuntos:
    • variación en las medidas de cada variable (ancho y longitud), para cada población (árbol).
    • normalidad de las variables (ancho y longitud) en conjunto (todos los árboles).
    • diferencias entre las poblaciones (árboles) en la media de ancho y longitud de las semillas.
    • diferencias entre las poblaciones en el número de semillas por fruto.
    • relación entre ancho y longitud (en conjunto y por árbol).
    • relación entre el número de semillas por fruto y el tamaño (ancho, largo, ancho*largo) promedio.

Las hipótesis deben contener una premisa (dado que…) y la predicción (espero que…).

  • Diseño y Metodología: describir los sujetos de estudio, sus ambientes, muestreo y métodos empleados para obtener los datos (use la información recopilada en la metadata).

  • Resultados: presentar los resultados (no tablas de datos crudos) de los análisis estadísticos, y las gráficas que haya realizado para responder las preguntas y probar sus hipótesis.
    • al final se encuentran algunos códigos de procedimientos en R, que pueden modificar y adaptar para construir gráficas y realizar las pruebas estadísticas que necesita para probar sus hipótesis.
    • cada tabla o gráfica debe tener una leyenda descriptiva (no título).
    • en un párrafo debe describir los resultados más relevantes (interpretación de gráficas y resultados de pruebas estadísticas).
  • Discusión: escribir un párrafo de discusión por cada tipo de resultado (según las preguntas), comparando con las hipótesis planteadas e indicando si responden sus preguntas. Debe comparar sus resultados con referencias de trabajos científicos, citandolos en esta sección (autor, año).

  • Conclusiones: deben estar basadas en sus hipótesis (si se aceptan o se rechazan). Debes proponer otros estudios para mejorar o complementar este.

  • Bibliografía: en cualquier formato de referencias completas (autores, año, título, revista o casa editora, volumen, páginas).

CODIGOS R

Estos códigos de R sirven para contestar o probar las preguntas o hipótesis. Debe adaaptarlos a los nombres de sus arbchivos y variables.

Estadísticas descriptivas

#función para definir estadísticos a calcular
mystats <- function(x){
  m <- mean(x)
  md <- median(x)
  n <- length(x)
  s <- sd(x)
  skew <- sum((x-m)^3/s^3)/n
  kurt <- sum((x-m)^4/s^4)/n - 3
  return(c(n=n, mean=m, median=md, stdev=s, skew=skew, kurtosis=kurt))
  }
#aplicar función a variables, separando por árbol
aggregate(semillas[c('long','ancho')], by=list(semillas$arbol), FUN = mystats)
##   Group.1      long.n   long.mean long.median  long.stdev   long.skew
## 1       1 114.0000000  10.0385965  10.1000000   0.5524697   0.1103783
## 2       2  60.0000000  10.0183333  10.1000000   0.7685539  -0.4766186
## 3       3  78.0000000  10.2923077  10.3000000   0.6444104  -0.1696015
## 4       4  46.0000000  11.4108696  11.5000000   0.9445112  -0.3330304
##   long.kurtosis     ancho.n  ancho.mean ancho.median ancho.stdev
## 1    -0.3931095 114.0000000   7.1210526    7.2000000   1.0111304
## 2    -0.3119089  60.0000000   8.1216667    8.3000000   1.0483387
## 3    -0.9649882  78.0000000   7.5576923    7.8000000   0.9880480
## 4     0.1509922  46.0000000   8.6521739    8.9000000   0.8998121
##    ancho.skew ancho.kurtosis
## 1  -0.1266336     -0.5910200
## 2  -0.7611397     -0.2117408
## 3  -0.1976465     -1.0522366
## 4  -0.9097773      0.5328585

Gráficas Box-Whisker

library(ggplot2)
long <- ggplot(semillas, aes(x = arbol, y=long, group=arbol)) + geom_boxplot(fill="cornflowerblue") +
  stat_summary(aes(group=arbol), fun.y=mean, colour="darkred", geom="point", 
                           shape=18, size=3) +
  labs(x = "Arbol", y = "Longitud semilla, mm")
long

Histogramas

Individuales
library(dplyr); library(ggplot2)
#histograma y curva normal para cada arbol; variable longitud
#arbol 1
arbol1 <- semillas %>% 
  filter(arbol == "1")
msa1 <- semillas %>% 
  filter(arbol == "1") %>% 
  summarise(means = mean(long), sd=sd(long))
ggplot(arbol1, aes(x=long)) +
  geom_histogram(aes(y=..density..), position="identity", binwidth=.25, color="red", fill="gray") +
  stat_function(fun = dnorm, color="red", size=1, args=list(mean=msa1$means, sd=msa1$sd)) +
  labs(x="Longitud semilla, mm", y="densidad") + 
  annotate("text", x = 11, y = 1, label = "Arbol 1")
#arbol 2
arbol2 <- semillas %>% 
  filter(arbol == "2")
msa2 <- semillas %>% 
  filter(arbol == "2") %>% 
  summarise(means = mean(long), sd=sd(long))
ggplot(arbol2, aes(x=long)) +
  geom_histogram(aes(y=..density..), position="identity", binwidth=.25, color="blue", fill="gray") +
  stat_function(fun = dnorm, color="blue", size=1, args=list(mean=msa2$means, sd=msa2$sd)) +
  labs(x="Longitud semilla, mm", y="densidad") + 
  annotate("text", x = 11, y = 1, label = "Arbol 2")
#arbol 3
arbol3 <- semillas %>% 
  filter(arbol == "3")
msa3 <- semillas %>% 
  filter(arbol == "3") %>% 
  summarise(means = mean(long), sd=sd(long))
ggplot(arbol3, aes(x=long)) +
  geom_histogram(aes(y=..density..), position="identity", binwidth=.25, color="green", fill="gray") +
  stat_function(fun = dnorm, color="green", size=1, args=list(mean=msa3$means, sd=msa3$sd)) +
  labs(x="Longitud semilla, mm", y="densidad") + 
  annotate("text", x = 11, y = 1, label = "Arbol 3")
#arbol 4
arbol4 <- semillas %>% 
  filter(arbol == "4")
msa4 <- semillas %>% 
  filter(arbol == "4") %>% 
  summarise(means = mean(long), sd=sd(long))
ggplot(arbol4, aes(x=long)) +
  geom_histogram(aes(y=..density..), position="identity", binwidth=.25, color="yellow", fill="gray") +
  stat_function(fun = dnorm, color="yellow", size=1, args=list(mean=msa4$means, sd=msa4$sd)) +
  labs(x="Longitud semilla, mm", y="densidad") + 
  annotate("text", x = 11, y = 1, label = "Arbol 4")
Todas las curvas de distribución normal juntas
#las cuatro curvas normales juntas
ggplot(semillas, aes(x=long)) +
  stat_function(fun = dnorm, args=list(mean=msa1$means, sd=msa1$sd), 
                aes(colour = "Arbol 1"), size=1.5) + 
  stat_function(fun = dnorm, args=list(mean=msa2$means, sd=msa2$sd), 
                aes(colour = "Arbol 2"), size=1.5) + 
  stat_function(fun = dnorm, args=list(mean=msa3$means, sd=msa3$sd), 
                aes(colour = "Arbol 3"), size=1.5) +
  stat_function(fun = dnorm, args=list(mean=msa4$means, sd=msa4$sd), 
                aes(colour = "Arbol 4"), size=1.5) +
  scale_colour_manual("T. populnea", values = c("red","blue","green","yellow")) +
  labs(x="Longitud semilla, mm", y="densidad")

ANOVA

Modelo general de efecto de árboles
library(multcomp)
#longitud
print("Longitud")
factor.arbol <- as.factor(semillas$arbol)
long.fit <- aov(semillas$long ~ factor.arbol)   
summary(long.fit)
#ancho
print("Ancho")
ancho.fit <- aov(semillas$ancho ~ factor.arbol) 
summary(ancho.fit)
Comparaciones múltiples entre árboles
#longitud
print("Longitud")
TukeyHSD(long.fit)
par(las=1)
plot(TukeyHSD(long.fit))
#ancho
print("Ancho")
TukeyHSD(long.fit)
par(las=1)
plot(TukeyHSD(ancho.fit))

Regresión lineal

library(ggplot2)
#regresión
rls <- lm(long ~ ancho, data=semillas)
summary(rls)
#gráfica de línea de regresión e intervalo de confianza
ggplot(data=semillas, aes(x=ancho, y=long)) +
  geom_point(aes(group=arbol), pch=19, color=semillas$arbol, size=1) +
  geom_smooth(method="lm", color="red", linetype=2) +
  labs(x="Ancho, mm", y="Longitud, mm")