MEDIDAS DE TENDENCIA CENTRAL

Las variables continuas se pueden resumir con un úmero que represente la “mitad” del conjunto de números conocidos como estadístico de tendencia central.

Media aritmética:

Es la suma de los valores dividido por el número de observaciones. La función de “R” para la media aritmética es mean(variable).

x<-seq(1,50,2)
x
##  [1]  1  3  5  7  9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45
## [24] 47 49
sum(x)/length(x)
## [1] 25
mean(x)
## [1] 25

Media recortada:

Se recorta una proporción de observaciones por ambos lados de la distribución. La función de “R” para la media recortada es mean(“variable”, trim=0,2)

y<-c(2,4,5,6,7,2,5,4,2,9,2,2)
y
##  [1] 2 4 5 6 7 2 5 4 2 9 2 2
mean(y)
## [1] 4.166667
mean(y, trim=0.2)
## [1] 3.75

Mediana:

Es el valor de la variable que deja el mismo número de datos antes y después de él, una vez ordenados estos, cuando las observaciones se ordenan. La función de “R” para la mediana es median(“variable”)

median(x)
## [1] 25

Moda:

Es el valor con una mayor frecuencia en una distribución de datos. Para calcular la moda en “R” utilizamos la función table(variable) que nos dice cuántas veces aparece cada número dentro de un vector, por lo que la moda será el número que más veces se repita.

table(x)
## x
##  1  3  5  7  9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 
##  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
table(y)
## y
## 2 4 5 6 7 9 
## 5 2 2 1 1 1
which.max(table(x))
## 1 
## 1
which.max(table(y))
## 2 
## 1

MEDIDAS DE POSICIÓN

Cuartiles:

Son los tres valores de la variable que dividen a un conjunto de datos ordenados en cuatro partes iguales. La función de “R” para los cuartiles son quantile(variable)

quantile(x)
##   0%  25%  50%  75% 100% 
##    1   13   25   37   49
summary(x)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##       1      13      25      25      37      49
fivenum(x)
## [1]  1 13 25 37 49

Percentiles:

Son los 99 valores que dividen la serie de datos en 100 partes iguales.

quantile(x,0.1)
## 10% 
## 5.8
quantile(x,0.15)
## 15% 
## 8.2
quantile(x,0.45)
##  45% 
## 22.6

MEDIDAS DE DISPERSIÓN

Varianza:

Es la esperanza del cuadrado de la desviación típica de dicha variable respecto a su media. La función de “R” para la varianza es var(variable)

var(x)
## [1] 216.6667

Desviación estándar

Es la raíz cuadrada de la varianza (cuasivarianza muestral). La función de “R” para la desviación estándar es sd(variable)

sd(x)
## [1] 14.7196

Coeficiente de variación:

Es útil para comparar dispersiones a escalas distintas pues es una medida invariante ante cambios de escala. Su fórmula expresa la desviación estándar como porcentaje de la media aritmética. En “R” se calcula manualmente a través de esta fórmula: CV= desviación estándar x 100 / media

100*sd(x)/mean(x)
## [1] 58.87841
CV<-function(x){sd(x)*100/mean(x)}
CV(x)
## [1] 58.87841

Error estándar:

Es la desviación estándar dividida por la raíz cuadrada del número de observaciones. Se puede hacer manualmente aplicando a través de la fórmula: std.eror= desviación estándar/raíz cuadrada del nº de observaciones, o utilizando la función de “R” std.error(x) Para obtener dicha función de “R” primero tenemos que cargar el paquete “plotrix” mediante la función library(plotrix).

sd(x)/sqrt(length(x))
## [1] 2.94392
library(plotrix)
std.error(x)
## [1] 2.94392

EJERCICIO1:

Utilizando los datos de iris –> data(iris)

  1. Utilizando la función tapply calcular para cada especie, la media, mediana, media recortada, los caurtiles, desviación típica, varianza y error estándar de la longitud del sépalo.

  2. Estudiar el coeficiente de variación de las cuatro variedades morfométricas en la especie l. virginica. ¿Qué variable tiene mayor CV?


Primero cargamos los datos “iris”en “R”:

data("iris")

Como en principio no sé que engloba dicho conjunto de datos, los visualizo utilizando esta función head(datos):

head(iris)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

Como hemos podido comprobar, se trata de datos recopilados de diferentes medidas: longitud del sépalo, longitud del pétalo, anchura del sépalo y anchura del pétalo. Estas medidas han sido tomadas en tres especies: I. setosa, I.versicolor y I. virginica.

Como nos están pidiendo calcular medidas de tendencia central, de posición y dispersión solo de la longitud del pétalo teniendo tres especies (y no nos especifican las especies), utilizamos la función tapply, que nos calcula todos esos parámetros en las tres especies de Iris.

Para la media:

media<-tapply(iris$Sepal.Length, INDEX = iris$Species, FUN = mean)
media
##     setosa versicolor  virginica 
##      5.006      5.936      6.588

Para la mediana:

mediana<-tapply(iris$Sepal.Length, INDEX = iris$Species, FUN = median)
mediana
##     setosa versicolor  virginica 
##        5.0        5.9        6.5

Para la media recortada:

m.recort<-tapply(iris$Sepal.Length, INDEX = iris$Species, mean,trim=0.2)
m.recort
##     setosa versicolor  virginica 
##   5.000000   5.910000   6.546667

Para los caurtiles:

cuartiles<-tapply(iris$Sepal.Length, INDEX = iris$Species, FUN = quantile)
cuartiles
## $setosa
##   0%  25%  50%  75% 100% 
##  4.3  4.8  5.0  5.2  5.8 
## 
## $versicolor
##   0%  25%  50%  75% 100% 
##  4.9  5.6  5.9  6.3  7.0 
## 
## $virginica
##    0%   25%   50%   75%  100% 
## 4.900 6.225 6.500 6.900 7.900

Para la desviación típica:

desviación.típica<-tapply(iris$Sepal.Length, INDEX = iris$Species, FUN = sd)
desviación.típica
##     setosa versicolor  virginica 
##  0.3524897  0.5161711  0.6358796

Para la varianza:

varianza<-tapply(iris$Sepal.Length, INDEX = iris$Species, FUN = var)
varianza
##     setosa versicolor  virginica 
##  0.1242490  0.2664327  0.4043429

Para el error estándar:

library(plotrix)
std.error<-tapply(iris$Sepal.Length, INDEX = iris$Species, FUN = std.error)
std.error
##     setosa versicolor  virginica 
## 0.04984957 0.07299762 0.08992695

Ya hemos realizado el apartado 1, ahora vamos a estudiar el coeficiente de variación de las cuatro variables para la especie Iris virginica.

CV<-function(x){sd(x)*100/mean(x)}
apply(iris[101:150,1:4], 2, FUN = CV)
## Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
##     9.652089    10.843868     9.940466    13.556271

Además, podemos hacerlo todo de una vez con la función aggregate

CV<- function(x){sd(x)*100/mean(x)}
aggregate.data.frame(x=iris[,1:4], by=list(Group=iris$Species), FUN = CV, simplify=TRUE, drop = TRUE)
##        Group Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1     setosa     7.041344    11.05789    11.878522    42.83967
## 2 versicolor     8.695606    11.32846    11.030774    14.91348
## 3  virginica     9.652089    10.84387     9.940466    13.55627

CONTRASTE DE HIPÓTESIS

  1. Los contrastes o test de hipótesis sirven para tomar decisiones acerca de las características poblacionales.

  2. Una hipótesis estadística es cualquier afirmación, verdadera o falsa, sobre alguna característica desconocida de la población/es.

Vamos a plantear un ejemplo:

La cola de los machos de golondrinas es mayor que la de las hembras.

  1. La Hipótesis nula sería que la cola del macho y de la hembra tiene la misma longitud. Se deriva directamente de la declaración del problema y es denotada como Ho. Es equivalente a decir“aquí no ha cambiado nada”, “todo sigue igual”. O más estadísticamente “cualquier diferencia se debe a oscilaciones o variaciones aleatorias”. A veces uno quiere probar que nada ha cambiado.

  2. La Hipótesis alternativa sería que la cola de los machos es mayor que la de las hembras. Es la hipótesis opuesta a la hipótesis nula. Tiene el peso de justificar, válidar, verificar, probar que se dio un cambio. Es la hipótesis que indica que las observaciones de la muestra han quebrado el patrón aleatorio y existe una explicación alternativa para el resultado.

Tipos de error:

1) **Error de tipo 1**: ocurre cuando la hipótesis nula es rechazada cuando en realidad es verdadera (riesgo del producto alfa)

2)**Error de tipo 2**: ocurre cuando la hipótesis nula es aceptada cuando en realidad debió ser rechazada (riesgo del consumidor beta)

El famoso valor P:

El “p value” o p-valor nos muestra la probabilidad de haber obtenido el resultado que hemos obtenido si suponemos que la hipótesis nula es cierta == alfa del error de tipo 1. Controlamos alfa (error de tipo 1), pero para disminuir beta (error e tipo II) debemos aumentar el tamaño muestral.

alfa o p-valor Comentario
p > 0.05 No se prueba diferencia significativa
0.01<p<=0.05 Una diferencia estadística significativa
p<=0.01 Una diferencia estadística altamente significativa

CONTRASTES PARAMÉTRICOS Y NO PARAMÉTRICOS

Paramétrico VS NO paramétrico.

Si se supone un modelo de distribución y la hipótesis se refiere al valor de un parámetro desconocido thita de la población, diremos que se trata de un contraste paramétrico. Si no conocemos el modelo, entonces hablaremos de un contraste NO paramétrico.

La utilización de ciertos estadísticosde contraste paramétricos exige el cumplimiento de determinados requisitos.

  1. Las variables consideradas son cuantitativas contínuas, medidas por lo menos en una escala de intervalos.

  2. Las muestras consideradas proceden de poblaciones en las que las variables se distribuyen segùn la ley normal.

  3. Se da homoscedasticidad (homogeneidad de varianzas) entre las distintas distribuciones comparadas, es decir, las muestras proceden de poblaciones con varianzas similares.

  4. Las muestras consideradas tienen un tamaño grande. Consideramos grande, una muestra de tamaño superior a 30 individuos (n>30).

Test en “R”.

Vamos a realizar varios test de hipótesis en R.

Los test básicos que vienen implementados en R producen un objeto de la clase htest que contiene un objeto lista con los resultados del test, normalmente:

  • p.value: el valor de la p.
  • conf.int: el intervalor de confianza del parámetro.
  • null.value: el valor de la hipótesis nula.
  • alternative: describe a la hipótesis alternativa.
  • method: el nombre del test que estamos implementando.
  • data.name: el nombre de los datos.

NORMALIDAD

Test de Normalidad

Los test de normalidad se aplican a conjuntos de datos para determinar su similitud con una distribución normal. La hipótesis nula es, en estos casos, si el conjunto de datos es similar a una distribución normal, por lo que un P-valor suficientemente pequeño indica que los datos son NO NORMALES.

El test más usado es el Test de Shapiro-Wilk cuya función en “R” es shapiro.test(x).

Vamos a seguir con el ejemplo anterior de las golondrina.

#Primero seleccionamos el directorio de trabajo:
setwd("C:/Users/Maria/Desktop/MÁSTER/ASIGNATURAS TRONCALES/DISEÑO EXPERIMENTAL/R/EJERCICIOS")
#Después cargamos el data.frame "golondrinas.txt" donde están los datos de las medidas de las plumas de hembras y machos.
golondrinadata<-read.table("golondrinas.txt", header = T, sep = "", dec = ".")
#A continuación usamos la función head() que nos expone nuestra tabla de datos y, por defecto, solo nos muestra las 6 primeras filas. 
head(golondrinadata)
##   plumam plumah apareamiento
## 1   92.8   94.4            6
## 2  102.5   94.9            9
## 3  110.4   82.0            7
## 4   90.5   93.3            8
## 5   83.0   84.8            8
## 6  103.7   88.7            7
#A contiuación aplicamos operaciones de estadística descriptiva a los datos de plumam (plumas de golondrina macho) tales como la media, la desviación estándar y el rango. 
mean(golondrinadata$plumam)
## [1] 106.056
sd(golondrinadata$plumam)
## [1] 8.439461
range(golondrinadata$plumam)
## [1]  83.0 121.8
#Ahora vamos a crear una variable "x" que contenga la secuencia de valores entre los que se incluya la longitud de los valores de las plumas de la golondrina macho y, después, crearemos otra variable "y" que contenga una distribución normal con los valores de la variable "x", incluída su media y su desviación típica. 
x<-seq(83,122,length=200)
y<-dnorm(x, 106.056, 8.439461)
#Ahora vamos a dibujar un histograma: ylim y xlim son los rangos de valores de los ejes x e y. También dibujaremos sobre el histograma una línea para ver si se asemejan nuestros datos a la distribución normal. En el comando lines; lty indica si la línea es contínua (1) o si es discontínua (2) y lwd indica el tramaño de la discontinuidad.
hist(golondrinadata$plumam, freq = F, ylim = c(0,0.05), xlim = c(80,130))
lines(x,y,lty=2, lwd=2, col="red")

#Una vez que ya hemos representado la variable de nuestro data.frame "plumam", vamos a estudiar si se ajusta o no a una distribución normal, aunque el histograma ya nos ha dado una ligera idea. 
shapiro.test(golondrinadata$plumam)
## 
##  Shapiro-Wilk normality test
## 
## data:  golondrinadata$plumam
## W = 0.98253, p-value = 0.2084
#como nos sale un p-valor de 0.2084 (p>0.05), aceptamos la hipótesis nula la cual nos verifica la normalidad de nuestros datos. Ahora vamos a representar mediante un qqplot los datos ordenados por coordenadas y agregaremos una línea de normalidad para comprobar gráficamente la normalidad de nuestros datos, ya que como son normales los datos se deben ajustar a la línea. 
qqnorm(golondrinadata$plumam, pch=16)#pch es el diseño de las coordenadas
qqline(golondrinadata$plumam, col=2, lwd=2)

Test de homogeneidad de varianza

Hay varios test para la homogeneidad de varianza. Aquí van 4:

  • Test de la F: para dos poblaciones normales.

  • Test de Bartlett: Si los datos son normales es el mejor. Es muy sensitivo a la falta de normalidad (falsos positivos).

  • Test de Levene: más robusto que el Test de Bartlett.

  • Test de Fligner-killeen: un test no paramétrico muy robusto a la falta de normalida.

TEST DE LA F: para dos poblaciones normales

Seguimos con el data.frame de las golondrinas:

setwd("C:/Users/Maria/Desktop/MÁSTER/ASIGNATURAS TRONCALES/DISEÑO EXPERIMENTAL/R/EJERCICIOS")
golondrinadata<-read.table("golondrinas.txt", header = T, sep = "", dec = ".")
#A continuación procedemos a realizar el test de la F:
var.test(golondrinadata$plumam, golondrinadata$plumah)
## 
##  F test to compare two variances
## 
## data:  golondrinadata$plumam and golondrinadata$plumah
## F = 2.9168, num df = 99, denom df = 99, p-value = 2.067e-07
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  1.962549 4.335056
## sample estimates:
## ratio of variances 
##           2.916806
#A la vista de los resultados, como "p"<0.01, rechazamos la hipótesis nula y aceptamos la alternativa (que asume la diferencia entre las varianzas), por lo que no podemos asumir la homogeneidad de varianzas para la talla del plumaje para ambos sexos de golondrinas. 
TEST DE BARTLETT
#Vamos a crear ahora un nuevo data.frame que tenga variables numéricas y de tipo factor. La función rnorm nos devuelve valores aleatorios que siguen una distribución normal y que, ademas, puedes obtenerlos con una media y una desviación típica deseada. rnorm(n,mean,sd), por defecto mean=0 y sd=1.
n1<-rnorm(200,5,1.5); n2<-rnorm(200,10,1.5); n3<-rnorm(200,10,0.5)
grupos<-rep(c("A","B","C"), times=1, each=200) #times-> veces que repites el vector; each->veces que repites cada elemento del vector
#Los vectores numéricos sería n1,n2 y n3 y el vector factor sería "grupos". Ahora crearemos una matriz con los vectores numéricos. 
V<-c(n1, n2, n3)
#A continuación creamos el data.frame uniendo la matriz "V", con el vector factor "grupos", usando la función cbind.data.frame().
datos<-cbind.data.frame(grupos, V)
head(datos, 6)
##   grupos        V
## 1      A 6.837463
## 2      A 4.689210
## 3      A 5.080502
## 4      A 4.057956
## 5      A 4.903135
## 6      A 7.470763
#Aplicamos el Test de Bartlett:
bartlett.test(datos$V~datos$grupos)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  datos$V by datos$grupos
## Bartlett's K-squared = 222.89, df = 2, p-value < 2.2e-16
#__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
boxplot(datos$V~datos$grupos)

PRUEBAS PARAMÉTRICAS

Contraste de hipótesis relativas a la diferencia media de dos poblaciones normales independientes

Partiendo de dos poblaciones normales N1(media1,ds1) y N2(media2,ds2) independientes queremos saber si las medias de ambas poblaciones son diferentes.

  • Hipótesis nula: las medias son iguales.

  • Hipótesis alternativa: las medias son diferentes.

(Ejemplo de las golondrinas) Además de plumas de machos de golondrina, también hemos recolectado datos de hembras ¿Hay diferencia en longitud de pluma entre sexos?

  • Hipótesis nula: no hay diferencia en longitud de plumas entre sexos.

  • Hipótesis alternativa: sí hay diferencia en longitud de plumas entre sexos.

Para solucionar este problema realizamos la Prueba t de Student.

Prueba t de Student o T-test

La función utilizada en “R” es t.test() y su estructura es la siguente: t.test(x,y, alternative=c(“two.sided”, “less”, “greater”), mu=0, paired=FALSE, var.equal=FALSE, conf.level=0.95):

  • x: muestra de la población 1.

  • y: muestra de la población 2.

  • var.equal: valor lógico indicando si las varianzas son iguales (y conocidas) o no (por defecto las varianzas son desiguales).

  • conf.level: el nivel de confianza.

Vamos a realizar el test en el ejemplo de las golondrinas:

t.test(golondrinadata$plumam,golondrinadata$plumah, var.equal = FALSE)
## 
##  Welch Two Sample t-test
## 
## data:  golondrinadata$plumam and golondrinadata$plumah
## t = 16.433, df = 159.74, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  14.13958 18.00242
## sample estimates:
## mean of x mean of y 
##   106.056    89.985
#ANÁLISIS: En primer lugar, el Estadístico T es 16.433 y el "p"<0.01, por lo que aceptamos la hipótesis alternativa que dice que la longitud de la pluma difiere significativamente entre sexos. Este test también nos muestra el intervalo de confiaza para diferencia de medias y, además, también nos muestra las medias muestrales. 

Si tuviéramos dos poblaciones de golondrinas, para saber cual de las dos poblaciones tiene la cola más grande se pone:

t.test(golondrinadata$plumam, golondrinadata$plumah, alternative = "greater")

EJERCICIO 2

Están estudiando el efecto de un fármaco sobre la expresión del Gen supresor tumoral X12. Para ello aplicas el fármaco a un cultivo celular mientras que dejas otra parte del cultivo como control. En ambos cultivos mides la expresión del gen. Quieres ver si el fármaco aumenta la expresión de dicho gen. Carga los datos del fichero “Gen12.txt”, investiga los valores, medias, varianzas, realiza test de normalidad y homogeneidad de varianza y el test de Student.

setwd("C:/Users/Maria/Desktop/MÁSTER/ASIGNATURAS TRONCALES/DISEÑO EXPERIMENTAL/R/EJERCICIOS")
datos<-read.table("GenX12.txt", header = T, sep = "", dec = ".")
head(datos)
##   expresion Tratamiento
## 1  4.626687     Control
## 2  1.872278     Control
## 3  2.354994     Control
## 4  1.930041     Control
## 5  5.426666     Control
## 6  3.062955     Control
#Ahora tenemos que poner los subconjuntos utilizando la función subset, que nos permite seleccionar datos del data.frame y poder crear variables. 
Trat<-subset(datos, datos$Tratamiento=="Tratamiento")
Cont<-subset(datos, datos$Tratamiento=="Control")
mean(Trat$expresion)
## [1] 5.305271
mean(Cont$expresion)
## [1] 3.381724
var(Trat$expresion)
## [1] 4.389031
var(Cont$expresion)
## [1] 4.071639
shapiro.test(Trat$expresion)
## 
##  Shapiro-Wilk normality test
## 
## data:  Trat$expresion
## W = 0.98699, p-value = 0.4367
shapiro.test(Cont$expresion)
## 
##  Shapiro-Wilk normality test
## 
## data:  Cont$expresion
## W = 0.98273, p-value = 0.2158
var.test(Trat$expresion,Cont$expresion)
## 
##  F test to compare two variances
## 
## data:  Trat$expresion and Cont$expresion
## F = 1.078, num df = 99, denom df = 99, p-value = 0.7096
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.7252909 1.6020884
## sample estimates:
## ratio of variances 
##           1.077952
t.test(Trat$expresion, Cont$expresion, var.equal = FALSE)
## 
##  Welch Two Sample t-test
## 
## data:  Trat$expresion and Cont$expresion
## t = 6.613, df = 197.72, p-value = 3.435e-10
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  1.349937 2.497158
## sample estimates:
## mean of x mean of y 
##  5.305271  3.381724

PRUEBAS NO PARAMÉTRICAS

Prueba U de Mann-Whitney

Es la alternativa al test de la t cuando no se puede suponer normalidad de las muestras. Se usa para comprobar la heterogeneidad de dos muestras ordinales con tamaños (n1 y n2).

  • Se ordenan los valores y se les asigna un valor.
  • Se suman los rangos de cada muestra.
  • El test estadístico será la suma de W de los rangos de grupo con menor suma de rangos.
  • El W se distribuye aproximadamente como una normal con media n1(n1+n2+1)/2 y varianza n1n21(n1+n2+1/12).
  • H0 es que la mediana de las dos poblaciones son iguales.
Prueba de Wilcoxon

LA ESTRUCTURA ES: wilcox.test(x,y, alternative=c(“two.sided”, “less”, “greater”), mu=0, paired=FALSE, exact=NULL, correct=TRUE, conf.in=FALSE) wilcox.test(fórmula, data) * x es la muestra de la población 1. * y es la muestra de la población 2. * fórmula: x~g donde x es una variable numérica y g un factor binomial. * conf.int: crear un intervalo de confiaza de la diferencia.

EJERCICIO 3

McDonald et al. (1996) examinaron la variación geográfica de polimorfismos de varias secuencias neutrales de ADN en la ostra americana, Crassostera virginica. Utilizaron un estimador Fst como medida de variación geográfica. Ellos compararon los valores de Fst de 6 polimorfismos de ADN con los obtenidos desde 13 proteínas en un estudio anterior (Bukorer, 1983). La cuestión es si los polimorfismos de proteínas tenían generalmente un mayor o menor valor de Fst que sugeriría que la selección natural estaría actuando. Como la distribución teórica de Fst está altamente desviada de la normalidad lo analizaremos con la prueba de Wilcoxon.

setwd("C:/Users/Maria/Desktop/MÁSTER/ASIGNATURAS TRONCALES/DISEÑO EXPERIMENTAL/R/EJERCICIOS")
Datos<-read.csv("Crassostrea.csv", header = T)
boxplot(Datos$FST~Datos$class, ylab="Fst", xlab="Clase", col=2)

wilcox.test(FST~class, data = Datos, exact=F)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  FST by class
## W = 39.5, p-value = 0.8689
## alternative hypothesis: true location shift is not equal to 0
Prueba de Kolmogórov-Smirnov

Es una pruba NO paramétrica para contrastar si dos muestras provienen de la misma población, es decir, para determinar la bondad de ajuste de dos distribuciones de probabilidad entre sí.

ESTRUCTURA:

ks.test(x,y, alternative= c(“two.sided”), “less”, “greater”, exact=NULL)

vamos a crear un ejemplo de dos variables para realizar dicho test:

x<-rnorm(50) #simulación de una variable normal.
y<-runif(30) #simulación de uan variable uniforme.
ks.test(x,y)
## 
##  Two-sample Kolmogorov-Smirnov test
## 
## data:  x and y
## D = 0.54, p-value = 1.598e-05
## alternative hypothesis: two-sided

Contraste de hipótesis para datos apareados

Uno de los requisitos para las contrastes de medias es que las muestras fueran independientes. Existen una serie de test que tienen en cuenta cuando las muestras NO son INDEPENDIENTES (p.e. muestreo del mismo individuo varias veces.)

PRUEBAS PARAMÉTRICAS

Prueba t de Student para muestras apareadas

La prueba t de Student para muestras dependientes es una extensión de la utilizada para muestras independientes. De esta manera, los requisitos que deben satisfacerse son los mismos, excepto la independencia de las muestras; es decir, en esta prueba estadística se exige la dependencia entre ambas y que las diferencias de pares sigan una distribución normal.

ESTRUCTURA EN “R”:

t.test(x,y, paired=TRUE)

EJERCICIO 4

Wiebe and Bartolotti (2002) estudiaron el color de las plumas de la cola del pájaro carpintero Colaptes auratus. Algunos pájaros tienen una pluma atípica con diferente color o tamaño debido a que crece de nuevo después de su pérdida. Ellos midieron el color (como índice de color amarillo) de una pluma rara de 16 pájaros y la compararon con una típica del mismo pájaro. Los pájaros provenían de una zona híbrida entre pájaros con plumas rojas y pájaros con plumas amarillas por lo que hubo gran variación en el color y un análisis pareado es más apropiado.

HIPÓTESIS: La pluma “rara” tiene una intensidad de color amarillo distinta de la pluma típica.

setwd("C:/Users/Maria/Desktop/MÁSTER/ASIGNATURAS TRONCALES/DISEÑO EXPERIMENTAL/R/EJERCICIOS")
datos<-read.table("carpintero.txt", header = T, sep = "", dec = ".")
head(datos)
##   pajaro pluma.tipica pluma.rara
## 1      A       -0.255     -0.324
## 2      B       -0.213     -0.185
## 3      C       -0.190     -0.299
## 4      D       -0.185     -0.144
## 5      E       -0.045     -0.027
## 6      F       -0.025     -0.039
#Como la condición para aplicar un contraste de hipótesis para muestras apareadas era que la diferencia de pares siguiera una distribución normal, eso es lo que vamos a hacer. Vamos a crear una variable "d" que represente la diferencia de pares y luego vamos a representarlo en un histograma para hacernos una idea de si sigue o no una distribución normal. Finalmente confirmaremos si la diferencia de pares sigue o no una distribución normal aplicando el test de normalidad de shapiro-wilk.
d<-datos[,2]-datos[,3]
d
##  [1]  0.069 -0.028  0.109 -0.041 -0.018  0.014  0.249  0.080  0.032  0.189
## [11]  0.119  0.370  0.386  0.241  0.183  0.240
hist(d)

shapiro.test(d) 
## 
##  Shapiro-Wilk normality test
## 
## data:  d
## W = 0.93987, p-value = 0.3474
#Confirmamos que la diferencia de pares sigue una distribución normal, así que ahor apodemos aplicar el test de la t para meustras apareadas, es decir, dependientes. 
t.test(datos$pluma.tipica, datos$pluma.rara, paired = TRUE)
## 
##  Paired t-test
## 
## data:  datos$pluma.tipica and datos$pluma.rara
## t = 4.0647, df = 15, p-value = 0.001017
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  0.06521848 0.20903152
## sample estimates:
## mean of the differences 
##                0.137125
#.como la p<0.01, aceptamos la hipótesis alternativa la cual nos dice que las plumas difieren significativamente en intensidad de color. 

PRUEBAS NO PARAMÉTRICAS

Prueba de los signos de Wilcoxon para muestras apareadas

El contraste de Wilcoxon es la técnica NO paramétrica paralela a la t de Student para muestras apareadeas. Igualmente dispondríamos de “n” parejas de valores (xi,yi). Se basa en un ranking de los valores absolutos de las diferencias entre parejas y una posterior suma de los valores del ranking con el signo de la diferencia.

ESTRUCTURA en “R”:

wilcox.test(x,y, paired=TRUE)

CONTRASTE DE VARIABLES CUALITATIVAS

Test Binomial

Prueba NO paramétrica, aplicable sobre variables dicotómicas para saber si una variable proviene de una población binomial con una probabilidad determinada de ocurrir un suceso.

ESTRUCTURA en “R”:

binom.test(x,n,p=0.5, alternative= c(“two.sided”, “less”, “greater”), conf.level=0.95)

Donde:

  • x: un vector dando el número de éxitos y fracasos o solo el número de éxitos.
  • n: número de pruebas.
  • p: probabilidad de éxito.

EJERCICIO5

Mendel cruzó plantas de guisantes heterozigóticas para el color del guisante (verde/amarillo). Si la herencia es mendeliana con el color verde dominante sobre el amarillo,la proporción esperada para la descendencia es 3 amarillos: 1 verde. Él observó 428 amarillos y 152 verdes. Queremos saber si las frecuencias observadas y esperadas son significativamente distintas.

#En primer lugar tenemos que obtener el número total de muestras obsevadas:
sum(428,152)
#Una vez obtenido el total calcularemos la probabilidad de salir verde y de saliir amarillo.
580*0.75 #Para amarillo
580*0.25 #Para verde
      Observada     Esperada
    ------------|-------------
       A 428    |    A 435   
       V 152    |    V 145     
#Ahora realizaremos lo mismo que el procedimiento anterior pero simplificado mediante la función binom.test.
binom.test(c(428,152), p=0.75)
## 
##  Exact binomial test
## 
## data:  c(428, 152)
## number of successes = 428, number of trials = 580, p-value =
## 0.5022
## alternative hypothesis: true probability of success is not equal to 0.75
## 95 percent confidence interval:
##  0.7001255 0.7732932
## sample estimates:
## probability of success 
##               0.737931
#Como el p>0.05 aceptamos la hipótesis nula que decía que las frecuencias observadas y esperadas son significativamente iguales.

Test Chi-cuadrado de bondad de ajuste

La prueba de bondad de ajuste se aplica en diseños de investigación en los que se estudia una única población. La prueba compara la distribución de frecuencias observadas (Fo) de UNA variable usualmente CUALITATIVA, con la distribución de frecuencias de la misma variable medida en un grupo de referencia.

Test chi-cuadrado de independencia

La prueba contrasta la hipótesis de DOS variables CUALITATIVAS que son independientes.

Se basa en la comparación por diferencia de las frecuencias observadas y esperadas de cada clase a partir dde un estadístico. En base a ese estadístico se define la región crítica que utiliza la distribución asintótica de D (estadístico) que es el chí-cuadrado (k-1) cuando el modelo está completamente especificado y chi-cuadrado k-1-s cuando hay que estimar los parámetros. La HIPÓTESIS NULA es la independencia entre las variables.

ESTRUCTURA en “R”:

chisp.test(x,y=NULL, correct=TRUE, p=rep(1/length(x), legth(x)), rescale.p=FALSE, simulate.p.value=FALSE, B=2000); donde:

  • x: una matriz bidimensional.
  • x e y: son dos vectores numéricos o dos factores de la misma longitud (crea automáticamente la tabla de contingencia)
  • p: un vector de probabilidades en el caso en que solo se de x como un vector numérico)
  • rescale.p: TRUE rescala las probabilidades para que sumen 1.

EJERCICIO 6

Tenemos una muestra de personas en las que hemos observado dos variables: el color de ojos, que puede ser “claro” y “oscuro”, y el color del pelo, que puede ser “rubio” ó “moreno”. Entonces, hacemos una tabla de contingencia para cruzar dicha características y aplicamos el test para ver si el “color de ojos” y el “color de pelo” son variables independientes.

Datos<-matrix(c(20,2,3,18), nrow = 2)
head(Datos)
##      [,1] [,2]
## [1,]   20    3
## [2,]    2   18
chisq.test(Datos)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  Datos
## X-squared = 22.369, df = 1, p-value = 2.249e-06
#Como el valor de p<0.01, rechazamos la hipótesis nula y aceptamos la alternativa, que nos asegura estadísticamente que existe dependencia entre las variables, es decir, el "color de pelo" está relacionado con el "color de los ojos".

Test exacto de Fisher

El test exacto de Fisher permite analizar DOS variables DICOTÓMICAS que están asociadas cuando la muestra a estudiar es demasiado pequeña y no se cumplen las condiciones necesarias para que la aplicación de chi-cuadrado sea adecuada. Estas condiciones exigen que los valores esperados de al menos el 80% de las celdas de una tabla de contingencia sean mayores de 5. ASí, en una tabla 2x2 será necesario que todas las celdas verifiquen esta condición, si bien en la práctica suele permitirse que una de ellas muestre frecuencias esperadas ligeramente por debajo de este valor.

En situaciones como esta, una forma de plantear los resultados es una tabla de contingencia de dos vías. El test exacto de Fisher se basa en evaluar las probabilidades asociadas a cada una de las tablas 2x2 que se pueden formar manteniendo los mismos totales de filas y columnas que los de la tabla observada. Cada una de estas probabilidades se obtiene bajo la hipótesis nula de independencia de las dos variables que se están considerando.

ESTRUCTURA en “R”:

fisher.test(x,y=NULL, workspace=200000, hibrid=FALSE, or=1, alternative= “two.sided”, conf.int=TRUE, conf.level=0.95, simulate.p.value=FALSE, B=2000); donde:

  • x: una matriz bidimensional.
  • x e y: dos factores de la misma longitud (crea automáticamente la tabla de contingencia). Para tablas mayores de 2x2 se puede simular el valor de la p mediante técnicas de Bootstraping.
  • simulate.p.value=FALSE
  • B= 2000

EJERCICIO 7

cierta dama fina (inglesa, por supuesto), era aficionada a tomar té con leche y presumía de ser capaz de distinguir cuando su criada le echaba primero la leche y luego el te, o bien echaba primero el té y después la leche. Para salir de dudas, Fisher le dio a probar a la dama una serie de tazas de té, en las que unas veces se había echado primero la leche y otras primero el té. Fisher apuntó los aciertos de la dama y con la tabla de contingencia así construída. La hipótesis nula suponía que la mujer NO tenía la capacidad de distinguir las tazas, es decir, no hay asociación entre el verdadero orden de las tazas y la distinción de la dama. La hipótesis alternativa es que hay asociación OR>1.

TeaTasting<-matrix(c(3,1,1,3), nrow = 2, dimnames = list(Guess=c("Milk", "Tea"), Truth= c("Milk", "Tea")))

Comenzamos el ejercicio una vez que ya hemos cargado la tabla de contingencia:

TeaTasting
##       Truth
## Guess  Milk Tea
##   Milk    3   1
##   Tea     1   3
fisher.test(TeaTasting, alternative = "greater")
## 
##  Fisher's Exact Test for Count Data
## 
## data:  TeaTasting
## p-value = 0.2429
## alternative hypothesis: true odds ratio is greater than 1
## 95 percent confidence interval:
##  0.3135693       Inf
## sample estimates:
## odds ratio 
##   6.408309