29
1 Sesión II INTRODUCCION AL PROGRAMA ESTADÍSTICO TEST ESTADÍSTICOS

Sesión II INTRODUCCION AL PROGRAMA ESTADÍSTICO

Embed Size (px)

DESCRIPTION

Sesión II INTRODUCCION AL PROGRAMA ESTADÍSTICO. TEST ESTADÍSTICOS. Sesión II. Objetivo General: Conocer y utilizar los comandos mas comunes usados en R para pruebas o test estadísticos. Realizar rutinas, grafica y poner a prueba ciertas hipótesis. - PowerPoint PPT Presentation

Citation preview

1

Sesión IIINTRODUCCION AL PROGRAMA

ESTADÍSTICO

TEST ESTADÍSTICOS

2

Sesión II

• Objetivo General:

• Conocer y utilizar los comandos mas comunes usados en R para pruebas o test estadísticos.

• Realizar rutinas, grafica y poner a prueba ciertas hipótesis.

3

1. Test de Chi-cuadrado X2 (Frecuencias)

Problema 1Supóngase que la proporción observada de hembras vs machos de pepinos de mar en un área determinada del intermareal es de 29/29 respectivamente.

H0: p = p p = 1H1: p ≠ p p ≠ 1

Análisis de una Variable categórica con n niveles. El Test Chi-cuadrado puede usarse como un Prueba de bondad de ajuste.

> pepino<- c(29,29) # vector formado guarda las frecuencias observadas> chisq.test(pepino) # Test Chi-cuadrado bondad de ajuste.

salidaChi-squared test for given probabilitiesdata: pepino X-squared = 0, df = 1, p-value = 1

4

Problema 2Supóngase que la proporción 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)

salidaChi-squared test for given probabilitiesdata: c X-squared = 27.5862, df = 1, p-value = 1.502e-07

5

Problema 3. Asignando una probabilidad.Supóngase que la proporción 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.1H1: p ≠ 0.1

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

> pez<-c(16,84)> sexo<-c(0.1,0.9)> chisq.test(pez,p=sexo)

> chisq.test(c(16,84),p=c(0.1,0.9))

# vector a almacena frecuencias observadas # vector b almacena probabilidades esperadas# Test chi-cuadrado bondad de ajuste

# alternativamente los vectores a y b pueden ir concatenados

salidaChi-squared test for given probabilitiesdata: pez X-squared = 4, df = 1, p-value = 0.0455

salidaChi-squared test for given probabilitiesdata: c(16, 84) X-squared = 4, df = 1, p-value = 0.0455

6

Caso especial:

Tablas de contingencia o tablas de 2x2Estudios de prevalencía o transversales.

1. Test de Chi-cuadrado X2 (Frecuencias)

H0: p1 = p2 No existe asociación son independientesH1: p1 ≠ p2 Existe asociacion no son independientes

Análisis de 2 o mas variables categóricas con 2 o mas niveles.

7

> x <- matrix(c(12,6,38,54),nc=2) # x queda almacenada como matriz > chisq.test(x,correct=F) # Test chi-cuadrado sin corrección de Yates o

Pearson

> chisq.test(x) # Test chi-cuadrado con corrección de Yates

Problema 4Supóngase que interesa saber si existe asociación 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.

salidaPearson's Chi-squared testdata: x X-squared = 6.5922, df = 1, p-value = 0.01024

salidaPearson's Chi-squared test with Yates' continuity correctiondata: x X-squared = 5.2714, df = 1, p-value = 0.02168

8

Problema 5Interesa determinar si hay diferencias significativas en el porcentaje de personas con depresión entre dos poblaciones A y B. Para esto, se tomó una muestra de 150 personas de la población A y 200 de la población B, encontrándose 48 y 50 personas con depresión 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 corrección de Yates.

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

Pearson's Chi-squared testdata: 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 correctiondata: depresion1 X-squared = 1.7506, df = 1, p-value = 0.1858

9

Chi-cuadrado desde un Dataframe

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

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

corrección de yates.

# Buscando dataframe .txt en el directorio

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

10

Test exacto de Fisher n<5 en algunas de las celdas

El Test exacto de Fisher, para muestras pequeñas, 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

11

> test.t(x) # si vector numérico x tiene media μ=0 (por defecto μ0=0)> test.t(x,mu=10) # si vector numérico 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.

2. Test de Student

H0: μ = 0 H1: μ ≠ 0

Análisis de comparación de medias.

Caso 1. T Student 1 Muestra.

12

Problema 6.A un total de 10 pacientes con diagnostico de VIH se les midió el número de linfocitos TEn la sangre. La siguiente tabla muestra el conteo de linfocitos antes y después de untratamiento naturista.

1.. Genere los vectores de la tabla conservando los nombres de cabecera. Determine si existen diferencias significativas en el número de linfocitos antes y después del tratamiento

paciente antes después

1 31 71

2 157 93

3 4 53

4 109 240

5 283 181

6 141 181

7 36 64

8 164 367

9 154 114

10 22 48

> antes<-c(31,157,4,109,283,141,36,164,154,22)> despues<-c(71,93,53,240,181,181,64,367,114,48)> t.test(antes,despues,paired=T)

Paired t-testdata: antes and despues t = -1.1006, df = 9, p-value = 0.2996alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -95.02074 32.82074 sample estimates:mean of the differences -31.1

13

El test t de Student para muestras independientes permite docimar la hipótesis nula de igualdad de promedios de dos vectores numéricos x1 y x2. Es decir, H0: μ1 = μ2.

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

Caso 2. T Student para Muestras independientes.

H0: μ1 = μ2 H1: μ1 ≠ μ2

14

Ciudad 1 Ciudad 2

31 71

157 93

4 53

109 240

283 181

141 181

36 64

164 367

154 114

22 48

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 número de linfocitos en ambas ciudades.

<ciudad1<-antes<ciudad1<ciudad2<-despues<ciudad2<t.test(ciudad1,ciudad2)<t.test(ciudad1,ciudad2)

Welch Two Sample t-testdata: ciudad1 and ciudad2 t = -0.7308, df = 17.564, p-value = 0.4745alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -120.66331 58.46331 sample estimates:mean of x mean of y 110.1 141.2

15

t.test requiere que las muestras estén en columnas distintas, 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, en vector grupo, con valores 1 y 2). La solución es:

>t.test(x[grupo==1], x[grupo==2])

Problema 8.

Tomando los valores de linfocitos y ciudad. Determine si existen diferencias significativas entre una ciudad y otra. Genere los vectores de la tabla conservando los nombres de cabecera.

Ciudad linfocitos

1 31

1 157

1 4

1 109

1 283

1 141

1 36

1 164

1 154

1 22

2 71

2 93

2 53

2 240

2 181

2 181

2 64

2 367

2 114

2 48

> ciudad<-c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2)>linfocitos<c(31,157,4,109,283,141,36,164,154,22,71,93,53,240,181,181,64,367,114,48)> t.test(linfocitos[ciudad==1],linfocitos[ciudad==2])

Welch Two Sample t-testdata: linfocitos[ciudad == 1] and linfocitos[ciudad == 2] t = -0.7308, df = 17.564, p-value = 0.4745alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -120.66331 58.46331 sample estimates:mean of x mean of y 110.1 141.2

16

Numérica según categórica. Comando boxplot

El comando boxplot permite hacer un box-plot (o cajón con bigotes).

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

opciones útiles (boxplot):

main=“Peso según HTA”names=c("(+)", "(-)")xlab=“HTA”ylab=“Peso(kg)”col=“green” # o bien col=3notch=T # gráfico acinturadohorizontal=F # por defectoylim=c(20,140)log=“both” # también “x”, “y”

(+) (-)

20

40

60

80

12

0

Peso según HTA

HTA

Pe

so

(kg

)

17

Problema 8.

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

18

El test de rangos de Kruskal-Wallis permite comparar el parámetro de tendencia central (mediana) entre dos o más 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 numérica) se # diferencia entre grupos (variable categórica)

> kruskal.test(list(x1,x2,x3)) # si existen diferencias entre promedios # de x1, x2 y x3 (no requiere variable categórica)

3. Test de Kruskal-WallisAnálisis de comparación de medianas entre dos o mas poblaciones.

19

El comando ks.test permite determinar si un vector x tiene distribución Normal.

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

También hay otras distribuciones disponibles. Las más importantes (y los parámetros 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 vectoresEn comando ks.test también se usa para determinar si dos vectores tienen igual distribución.

> ks.test(x,y) # si x e y tienen la misma distribución

Test de Shapiro Wilk sirve n<30 una muestra> sw<-shapiro.test(namevariable)> print(sw)

4. Test de Normalidad

H0: p1 = p2 Son normalesH1: p1 ≠ p2 No son normales

Análisis para comparar distribuciones de variables frente a una normal.

20

El comando cor permite obtener la correlación 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 correlación de pearson. Con el subcomando method se controla cuál correlación 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 opción use=“complete.obs” borra registros con NA en cualquiera de las dos variables.

5. Test de asociación. Correlación

xyz=cbind(x,y,z)> cor(xyz)

21

Gráfico de dos variable numéricas. Comando plot

El comando plot (además de hacer el Index Graph) permite hacer un gráfico de dispersión de dos variables numéricas.

> plot(x,y) # gráfico cartesiano: x versus y> plot(y~x) # formula: y en función de x

opciones útiles (plot):

main=“Peso en función de Talla”xlab=“Talla(cms)”ylab=“Peso(kg)”xlim=c(1.2,1.9)ylim=c(20,160)col=“forestgreen“ # borde de symbolbg=“white” # interior (default)pch=21 # circle (default)cex=2 # tamaño symbol (def:1)lwd=1 # ancho de lineas

1.4 1.5 1.6 1.7 1.8 1.9

40

60

80

10

01

40

Peso en función de Talla

Talla(mts)

Pe

so(k

g)

22

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

• Observe las características del dataframe como list(), names(), summaru()• Acceda a los vectores del dataframe usando attach()• Determine si existe asociación entre las variables HTA y PESO

Determine si existe asociación entre las variables HTA y FUMA.

• Determine si existe asociación entre las variables EDAD y FUMA.• Determine si la variable TALLA tiene distribución normal.• Determine si existe asociacion entre TALLA y EDAD. (grafique).

• Finalmente agregue la siguiente instrucción • abline(lm(PESO~TALLA))

Tarea 2.

23

6. Modelos de Regresión.

Es una técnica para analizar una variable dependiente numérica (Y) frente a una o mas variables independientes (X) también numéricas sean categóricas o continuas.

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

Tipos de modelo de regresión

1. Modelos de regresión Lineal Y= v.a. numérica continua

2. Modelos de regresión Logística Y= v.a. categórica

3. Modelos de regresión Poisson Y= v.a conteo o tasa

24

< lm (formula = variable Y ~ variable X)

Modelos de regresión Lineal simple

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

Modelos de regresión Lineal múltiple

25

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

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

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 regresión lineal simple para cada una de las

variables.4. Realiza un modelo de regresión lineal múltiple.

26

GRACIAS

27

Gráfico de dos grupos de datos: points y legend

El comando points permite agregar puntos a un dispositivo gráfico abierto. El comando legend permite agregar leyendas a un gráfico.

Ejemplo: gráfico de dispersión de peso (eje Y) según talla (eje X), diferenciando los puntos según sexo (1=Masc y 2=Fem).

> plot(peso~talla, main="Peso según 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"))

Opciones útiles (points):

pch=19 # simbolo (19 = circulo lleno)col=“black” # color del simbolo (borde)bg=“green” # color del simbolo (interior)cex=1.2 # tamaño de simbolo (defecto:1)

> points(x,y)

Opciones útiles (legend):

pch=19 # simbolocol=“black” # borde de simboloc(“Masc”,”Fem”) # texto de legenda

> legend(locator(1))

28

Gráfico de dos grupos de datos: points y legend

1.4 1.5 1.6 1.7 1.8 1.9

40

60

80

10

01

40

Peso según Talla

talla

pe

so

MascFem

29

BONUS TRACKAgregar línea de tendencia a un plot

El comando abline permite agregar una línea de tendencia (regresión lineal simple) a un gráfico de dispersión. 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) )

1.4 1.5 1.6 1.7 1.8 1.9

40

60

80

10

01

40

Peso en función de Talla

Talla(mts)

Pe

so(k

g)

opciones útiles (abline):col=“red“ # default: blackh=100 # linea en y=100v=1.7 # linea en x=1.7lwd=2 # ancho (default:1)lty=1 # tipo linea (2=segmentos)

> # intercepto y pendiente conocidos:> abline(-21.52, 52.39, col=“red”)