Você está na página 1de 29

Sesin II

INTRODUCCION AL PROGRAMA
ESTADSTICO

TEST ESTADSTICOS

1
Sesin II
Objetivo General:
Conocer y utilizar los comandos mas
comunes usados en R para pruebas o test
estadsticos.

Realizar rutinas, grafica y poner a prueba


ciertas hiptesis.

2
1. Test de Chi-cuadrado X2 (Frecuencias)
Anlisis de una Variable categrica con n niveles.
El Test Chi-cuadrado puede usarse como un Prueba de bondad de ajuste.
H0: p = p p=1
H1: p p p1

Problema 1
Supngase que la proporcin observada de hembras vs machos de pepinos de mar en un
rea determinada del intermareal es de 29/29 respectivamente.

> pepino<- c(29,29) # vector formado guarda las frecuencias observadas


> chisq.test(pepino) # Test Chi-cuadrado bondad de ajuste.

salida
Chi-squared test for given probabilities
data: pepino
X-squared = 0, df = 1, p-value = 1

3
Problema 2
Supngase que la proporcin de hembras vs machos de pulpos en un rea determinada del
intermareal rocoso es de 49/9 respectivamente. Genere el vector pulpos y aplique el test de
Chi-cuadrado.

> pulpos<-c(49,9)
> chisq.test(pulpos)

salida
Chi-squared test for given probabilities
data: c
X-squared = 27.5862, df = 1, p-value = 1.502e-07

4
Problema 3. Asignando una probabilidad.
Supngase que la proporcin de hembras vs machos que se espera para una especie de
pez intermareal es desconocida y se quiere probar que ser de un 10%:
H0: p = 0.1
H1: p 0.1

Suponiendo que una muestra aleatoria de 100 erizos de mar encontramos 16 machos.

> pez<-c(16,84) # vector a almacena frecuencias observadas


> sexo<-c(0.1,0.9) # vector b almacena probabilidades esperadas
> chisq.test(pez,p=sexo) # Test chi-cuadrado bondad de ajuste

salida
Chi-squared test for given probabilities
data: pez
X-squared = 4, df = 1, p-value = 0.0455

> chisq.test(c(16,84),p=c(0.1,0.9)) # alternativamente los vectores a y b pueden


ir concatenados
salida
Chi-squared test for given probabilities
data: c(16, 84)
5
X-squared = 4, df = 1, p-value = 0.0455
1. Test de Chi-cuadrado X2 (Frecuencias)
Anlisis de 2 o mas variables categricas con 2 o mas niveles.

H0: p1 = p2 No existe asociacin son independientes


H1: p1 p2 Existe asociacion no son independientes

Caso especial:

Tablas de contingencia o tablas de 2x2


Estudios de prevalenca o transversales.

6
Problema 4
Supngase que interesa saber si existe asociacin entre el sexo del paciente y su estado de
parasitismo por Taenia solium:

Para una muestra de 50 hombres y 60 mujeres, 12 y 4 de ellos resultaron parasitados,


respectivamente.

> x <- matrix(c(12,6,38,54),nc=2) # x queda almacenada como matriz


> chisq.test(x,correct=F) # Test chi-cuadrado sin correccin de Yates o
Pearson
salida
Pearson's Chi-squared test
data: x
X-squared = 6.5922, df = 1, p-value = 0.01024

> chisq.test(x) # Test chi-cuadrado con correccin de Yates

salida
Pearson's Chi-squared test with Yates' continuity correction
data: x 7
X-squared = 5.2714, df = 1, p-value = 0.02168
Problema 5
Interesa determinar si hay diferencias significativas en el porcentaje de personas con
depresin entre dos poblaciones A y B. Para esto, se tom una muestra de 150 personas
de la poblacin A y 200 de la poblacin B, encontrndose 48 y 50 personas con depresin
en cada una de las ciudades respectivamente.

1. Construya su tabla de contingencia.


2. Realice la rutina en R para obtener el valor de X2 Pearson.
2. Calcule el valor de chi-cuadrado con correccin de Yates.

> depresion1<-matrix(c(48,50,102,150),nc=2)
> chisq.test(depresion1,correct=F)

Pearson's Chi-squared test


data: depresion1
X-squared = 2.0833, df = 1, p-value = 0.1489

> depresion1<-matrix(c(48,50,102,150),nc=2)
> chisq.test(depresion1)

Pearson's Chi-squared test with Yates' continuity correction


data: depresion1
X-squared = 1.7506, df = 1, p-value = 0.1858
8
Chi-cuadrado desde un Dataframe

# Buscando dataframe .txt en el directorio

> nombrevector<-read.table(file.choose(), header=T)


> attach(nombrevector)
> list(nombrevector)

> chisq.test(namevar1,namevar2, correct=F) # Test X2 de Pearson. Var1 vs Var2 sin


correccin de yates.
> chisq.test(namevar1,namevar2) # Test X2 de Pearson. Var1 vs Var2 con
correccin de yates.

9
Test exacto de Fisher n<5 en algunas de las celdas
El Test exacto de Fisher, para muestras pequeas, al igual que el Test chi-cuadrado, se puede
obtener a partir de datos tabulados o de variables de un dataframe.

> x <- matrix(c(2,8,10,14),nc=2) # matriz x almacena tabla 2x2


> fisher.test(x) # Test exacto de Fisher

> fisher.test(variable1,variable2) # Test exacto de Fisher. Var1 vs Var2

10
2. Test de Student
Anlisis de comparacin de medias.

Caso 1. T Student 1 Muestra.

H0: = 0
H1: 0

> test.t(x) # si vector numrico x tiene media =0 (por defecto 0=0)


> test.t(x,mu=10) # si vector numrico x tiene media =10
> test.t(x1,x2,paired=T) # si x1-x2 (datos pareados) tiene media 0

Problema 6.

1. Genere el vector idea con 5 datos que permita rechazar la hipotesis nula.

11
Problema 6.
A un total de 10 pacientes con diagnostico de VIH se les midi el nmero de linfocitos T
En la sangre. La siguiente tabla muestra el conteo de linfocitos antes y despus de un
tratamiento naturista.

1.. Genere los vectores de la tabla conservando los nombres de cabecera. Determine si
existen diferencias significativas en el nmero de linfocitos antes y despus del
tratamiento

paciente antes despus


> antes<-c(31,157,4,109,283,141,36,164,154,22)
> despues<-c(71,93,53,240,181,181,64,367,114,48)
1 31 71
> t.test(antes,despues,paired=T)
2 157 93
3 4 53 Paired t-test
4 109 240 data: antes and despues
t = -1.1006, df = 9, p-value = 0.2996
5 283 181
alternative hypothesis: true difference in means is not
6 141 181 equal to 0
7 36 64 95 percent confidence interval: -95.02074 32.82074
8 164 367 sample estimates:
mean of the differences
9 154 114
-31.1
10 22 48 12
Caso 2. T Student para Muestras independientes.

El test t de Student para muestras independientes permite docimar la hiptesis


nula de igualdad de promedios de dos vectores numricos x1 y x2. Es decir,
H0: 1 = 2.

H0: 1 = 2
H1: 1 2

> t.test(x1,x2) # si vectores numricos x1 y x2 tienen igual media

13
Problema 7

Considerando el numero de linfocitos encontrados en 10 pacientes en la ciudad 1 y en 10


pacientes en la ciudad 2.

1. Genere los vectores de la tabla conservando los nombres de cabecera y determine si


existen diferencias significativas en el nmero de linfocitos en ambas ciudades.

Ciudad 1 Ciudad 2 <ciudad1<-antes


<ciudad1
31 71 <ciudad2<-despues
157 93 <ciudad2
4 53 <t.test(ciudad1,ciudad2)
<t.test(ciudad1,ciudad2)
109 240
283 181
141 181 Welch Two Sample t-test
36 64 data: ciudad1 and ciudad2
t = -0.7308, df = 17.564, p-value = 0.4745
164 367
alternative hypothesis: true difference in means is not equal to 0
154 114 95 percent confidence interval: -120.66331 58.46331
22 48 sample estimates:
mean of x mean of y
110.1 141.2 14
Ciudad linfocitos
t.test requiere que las muestras estn en columnas distintas,
1 31 cuando lo habitual es tener los datos en una columna (por ejemplo,
en vector x) y los grupos a comparar en otra columna (por ejemplo,
1 157
en vector grupo, con valores 1 y 2). La solucin es:
1 4
>t.test(x[grupo==1], x[grupo==2])
1 109
1 283 Problema 8.
1 141
1 36 Tomando los valores de linfocitos y ciudad. Determine si existen
diferencias significativas entre una ciudad y otra. Genere los
1 164
vectores de la tabla conservando los nombres de cabecera.
1 154
1 22
> ciudad<-c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2)
2 71
>linfocitos<c(31,157,4,109,283,141,36,164,154,22,71,93,53,240,1
2 93 81,181,64,367,114,48)
2 53 > t.test(linfocitos[ciudad==1],linfocitos[ciudad==2])
2 240
Welch Two Sample t-test
2 181
data: linfocitos[ciudad == 1] and linfocitos[ciudad == 2]
2 181 t = -0.7308, df = 17.564, p-value = 0.4745
2 64 alternative hypothesis: true difference in means is not equal to 0
2 367 95 percent confidence interval:
-120.66331 58.46331
2 114
sample estimates:
2 48 mean of x mean of y 15
110.1 141.2
Numrica segn categrica. Comando boxplot

El comando boxplot permite hacer un box-plot (o cajn con bigotes).

> boxplot(x) # box-plot de x (variable numerica)


> boxplot(num~cat) # box-plot de num para cada nivel de cat

Peso segn HTA


opciones tiles (boxplot):

main=Peso segn HTA


names=c("(+)", "(-)")
120

xlab=HTA
P e s o (k g )

ylab=Peso(kg)
col=green # o bien col=3
20 40 60 80

notch=T # grfico acinturado


horizontal=F # por defecto
ylim=c(20,140)
log=both # tambin x, y
(+) (-)

HTA
16
Problema 8.

Genere un grafico de bigotes, lo mas completo posible, para los datos del ejercicio 8.
Propuesta

17
3. Test de Kruskal-Wallis
Anlisis de comparacin de medianas entre dos o mas poblaciones.

El test de rangos de Kruskal-Wallis permite comparar el parmetro de tendencia central


(mediana) entre dos o ms poblaciones. Cuando se comparan solo 2 grupos, el test es
equivalente al test de rangos de Wilcoxon.

> kruskal.test(x,grupos) # si la mediana de x (variable numrica) se


# diferencia entre grupos (variable categrica)

> kruskal.test(list(x1,x2,x3)) # si existen diferencias entre promedios


# de x1, x2 y x3 (no requiere variable categrica)

18
4. Test de Normalidad
Anlisis para comparar distribuciones de variables frente a una normal.
El comando ks.test permite determinar si un vector x tiene distribucin Normal.
H0: p1 = p2 Son normales
H1: p1 p2 No son normales

Test de Shapiro Wilk sirve n<30 una muestra


> sw<-shapiro.test(namevariable)
> print(sw)
Test de Kolmogorov Smirnov sirve n un vector
> ks.test(x,pnorm) # si x ~ normal con media 0 y desv.estandar 1

Tambin hay otras distribuciones disponibles. Las ms importantes (y los parmetros


necesarios en cada una) son:
> ks.test(x,ppois,lambda) # si x ~ Poisson con tasa lambda. Ej: ks.test(x,ppois,3)
> ks.test(x,pbinom,n,p) # si x ~ Binomial con n y p dados.

Test de Kolmogorov Smirnov sirve n<30 dos vectores


En comando ks.test tambin se usa para determinar si dos vectores tienen igual
distribucin.
19
> ks.test(x,y) # si x e y tienen la misma distribucin
5. Test de asociacin. Correlacin

El comando cor permite obtener la correlacin entre dos vectores x e y.

> cor(x, y) # correlacion (Pearson) entre x e y.


> cor.test(x, y) # correlacion (Pearson) entre x e y, test e IC95%

Por defecto, cor entrega la correlacin de pearson. Con el subcomando method se


controla cul correlacin obtener: pearson, spearman o kendall.

> cor(x, y,method=pearson) # igual a cor(x,y)


> cor(x, y,method=spearman) # correlacion de Spearman ordinal/continua
> cor(x, y,method=kendall) # correlacion de Kendall ordinal/ordinal

Si hay observaciones faltantes en x o y el comando producir un error. La opcin


use=complete.obs borra registros con NA en cualquiera de las dos variables.

xyz=cbind(x,y,z)
> cor(xyz) 20
Grfico de dos variable numricas. Comando plot
El comando plot (adems de hacer el Index Graph) permite hacer un grfico de dispersin de
dos variables numricas.

> plot(x,y) # grfico cartesiano: x versus y


> plot(y~x) # formula: y en funcin de x

opciones tiles (plot):


Peso en funcin de Talla

main=Peso en funcin de Talla


xlab=Talla(cms)
140

ylab=Peso(kg)
xlim=c(1.2,1.9)
Peso(kg)

80 100

ylim=c(20,160)
col=forestgreen # borde de symbol
bg=white # interior (default)
60

pch=21 # circle (default)


40

cex=2 # tamao symbol (def:1)


lwd=1 # ancho de lineas
1.4 1.5 1.6 1.7 1.8 1.9

Talla(mts)

21
Tarea 2.

Lea la base de datos Litiasis.txt (archivo de texto delimitado por tabulaciones)


en R.
Observe las caractersticas del dataframe como list(), names(), summaru()
Acceda a los vectores del dataframe usando attach()
Determine si existe asociacin entre las variables HTA y PESO
Determine si existe asociacin entre las variables HTA y FUMA.

Determine si existe asociacin entre las variables EDAD y FUMA.


Determine si la variable TALLA tiene distribucin normal.
Determine si existe asociacion entre TALLA y EDAD. (grafique).

Finalmente agregue la siguiente instruccin


abline(lm(PESO~TALLA))

22
6. Modelos de Regresin.

Es una tcnica para analizar una variable dependiente numrica (Y) frente
a una o mas variables independientes (X) tambin numricas sean
categricas o continuas.

Y = 0 + 1 x1 + + n xn + e

Tipos de modelo de regresin


1. Modelos de regresin Lineal Y= v.a. numrica continua
2. Modelos de regresin Logstica Y= v.a. categrica
3. Modelos de regresin Poisson Y= v.a conteo o tasa

23
Modelos de regresin Lineal simple

< lm (formula = variable Y ~ variable X)

Modelos de regresin Lineal mltiple

< lm (formula = variable Y ~ variable X1+ variable X2 ++ variable Xn)

24
Problema X.
1. Lee la base datos en Excel llamada bacteria1 y luego bacteria2 en R.
Porque razon bacteria1 no se puede leer?.
2. Realiza una prueba de normalidad para la variable cantbact.
3. Realiza un modelo de regresin lineal simple para cada una de las
variables.
4. Realiza un modelo de regresin lineal mltiple.

< vector<- lm (formula = variable Y ~ variable X)


< vector<- lm (formula = variable Y ~ variable X1+ variable X2 ++ variable Xn)

25
GRACIAS

26
Grfico de dos grupos de datos: points y legend
El comando points permite agregar puntos a un dispositivo grfico abierto. El
comando legend permite agregar leyendas a un grfico.
> points(x,y) > legend(locator(1))

Opciones tiles (points): Opciones tiles (legend):


pch=19 # simbolo (19 = circulo lleno) pch=19 # simbolo
col=black # color del simbolo (borde) col=black # borde de simbolo
bg=green # color del simbolo (interior) c(Masc,Fem) # texto de legenda
cex=1.2 # tamao de simbolo (defecto:1)

Ejemplo: grfico de dispersin de peso (eje Y) segn talla (eje X), diferenciando
los puntos segn sexo (1=Masc y 2=Fem).
> plot(peso~talla, main="Peso segn Talla", type="n")
> points(talla[sexo==1],peso[sexo==1], col=black, bg="red", pch=19, cex=1.2)
> points(talla[sexo==2],peso[sexo==2], col=black, bg="green", pch=19, cex=1.2)
> legend(locator(1), pch=c(19,19), col=c("red","green"), c("Masc","Fem"))

27
Grfico de dos grupos de datos: points y legend

Peso segn Talla


140

Masc
Fem
80 100
peso

60
40

1.4 1.5 1.6 1.7 1.8 1.9

talla

28
BONUS TRACK
Agregar lnea de tendencia a un plot
El comando abline permite agregar una lnea de tendencia (regresin lineal simple) a
un grfico de dispersin. El intercepto y pendiente se pueden obtener de un modelo
(ajustado con comando lm) o se pueden indicar directamente en abline.
> plot(peso~talla)
> abline( lm(peso~talla) )

Peso en funcin de Talla opciones tiles (abline):


col=red # default: black
140

h=100 # linea en y=100


v=1.7 # linea en x=1.7
Peso(kg)

lwd=2 # ancho (default:1)


80 100

lty=1 # tipo linea (2=segmentos)


60

> # intercepto y pendiente conocidos:


> abline(-21.52, 52.39, col=red)
40

1.4 1.5 1.6 1.7 1.8 1.9

Talla(mts)
29

Você também pode gostar