1 1 Sesión II INTRODUCCION AL PROGRAMA ESTADÍSTICO TEST ESTADÍSTICOS
2 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 3 1. Test de Chi-cuadrado X 2 (Frecuencias) Problema 1 Supó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 = 1 H1: 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 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
4 4 Problema 2 Supó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 chisq.test(pulpos) salida Chi-squared test for given probabilities data: c X-squared = 27.5862, df = 1, p-value = 1.502e-07
5 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%: H 0 : p = 0.1 H 1 : p ≠ 0.1 Suponiendo que una muestra aleatoria de 100 erizos de mar encontramos 16 machos. > pez sexo 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 salida Chi-squared test for given probabilities data: pez X-squared = 4, df = 1, p-value = 0.0455 salida Chi-squared test for given probabilities data: c(16, 84) X-squared = 4, df = 1, p-value = 0.0455
6 6 Caso especial: Tablas de contingencia o tablas de 2x2 Estudios de prevalencía o transversales. 1. Test de Chi-cuadrado X 2 (Frecuencias) H0: p1 = p2 No existe asociaciónson independientes H1: p1 ≠ p2 Existe asociacion no son independientes Análisis de 2 o mas variables categóricas con 2 o mas niveles.
7 7 > x 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 4 Supó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. salida Pearson's Chi-squared test data: x X-squared = 6.5922, df = 1, p-value = 0.01024 salida Pearson's Chi-squared test with Yates' continuity correction data: x X-squared = 5.2714, df = 1, p-value = 0.02168
8 8 Problema 5 Interesa 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 chisq.test(depresion1,correct=F) Pearson's Chi-squared test data: depresion1 X-squared = 2.0833, df = 1, p-value = 0.1489 > depresion1 chisq.test(depresion1) Pearson's Chi-squared test with Yates' continuity correction data: depresion1 X-squared = 1.7506, df = 1, p-value = 0.1858
9 9 Chi-cuadrado desde un Dataframe > chisq.test(namevar1,namevar2, correct=F) # Test X 2 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 attach(nombrevector) > list(nombrevector)
10 10 Test exacto de Fisher n x fisher.test(x) # Test exacto de Fisher > fisher.test(variable1,variable2) # Test exacto de Fisher. Var1 vs Var2 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_10.jpg", "name": "10 Test exacto de Fisher n x fisher.test(x) # Test exacto de Fisher > fisher.test(variable1,variable2) # Test exacto de Fisher. Var1 vs Var2.", "width": "800" } 11 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. { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_11.jpg", "name": "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.", "description": "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..", "width": "800" } 12 12 Problema 6. A un total de 10 pacientes con diagnostico de VIH se les midió el número de linfocitos T En la sangre. La siguiente tabla muestra el conteo de linfocitos antes y después de un tratamiento 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 pacienteantesdespués 13171 215793 3453 4109240 5283181 6141181 73664 8164367 9154114 102248 > antes despues t.test(antes,despues,paired=T) Paired t-test data: antes and despues t = -1.1006, df = 9, p-value = 0.2996 alternative 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 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_12.jpg", "name": "12 Problema 6.", "description": "A un total de 10 pacientes con diagnostico de VIH se les midió el número de linfocitos T En la sangre. La siguiente tabla muestra el conteo de linfocitos antes y después de un tratamiento 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 pacienteantesdespués 13171 215793 3453 4109240 5283181 6141181 73664 8164367 9154114 102248 > antes despues t.test(antes,despues,paired=T) Paired t-test data: antes and despues t = -1.1006, df = 9, p-value = 0.2996 alternative 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.", "width": "800" } 13 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, H 0 : μ 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 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_13.jpg", "name": "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.", "description": "Es decir, H 0 : μ 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.", "width": "800" } 14 14 Ciudad 1Ciudad 2 3171 15793 453 109240 283181 141181 3664 164367 154114 2248 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. 16 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=3 notch=T# gráfico acinturado horizontal=F# por defecto ylim=c(20,140) log=“both” # también “x”, “y” { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_16.jpg", "name": "16 Numérica según categórica.", "description": "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=3 notch=T# gráfico acinturado horizontal=F# por defecto ylim=c(20,140) log= both # también x , y .", "width": "800" } 17 17 Problema 8. Genere un grafico de bigotes, lo mas completo posible, para los datos del ejercicio 8. Propuesta { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_17.jpg", "name": "17 Problema 8.", "description": "Genere un grafico de bigotes, lo mas completo posible, para los datos del ejercicio 8. Propuesta.", "width": "800" } 18 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-Wallis Análisis de comparación de medianas entre dos o mas poblaciones. { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_18.jpg", "name": "18 El test de rangos de Kruskal-Wallis permite comparar el parámetro de tendencia central (mediana) entre dos o más poblaciones.", "description": "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-Wallis Análisis de comparación de medianas entre dos o mas poblaciones..", "width": "800" } 19 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 ks.test(x,y) # si x e y tienen la misma distribución Test de Shapiro Wilk sirve n sw print(sw) 4. Test de Normalidad H0: p1 = p2 Son normales H1: p1 ≠ p2 No son normales Análisis para comparar distribuciones de variables frente a una normal. { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_19.jpg", "name": "19 El comando ks.test permite determinar si un vector x tiene distribución Normal.", "description": "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 ks.test(x,y) # si x e y tienen la misma distribución Test de Shapiro Wilk sirve n sw print(sw) 4. Test de Normalidad H0: p1 = p2 Son normales H1: p1 ≠ p2 No son normales Análisis para comparar distribuciones de variables frente a una normal..", "width": "800" } 20 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) { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_20.jpg", "name": "20 El comando cor permite obtener la correlación entre dos vectores x e y.", "description": "> 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).", "width": "800" } 21 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 symbol bg=“white”# interior (default) pch=21# circle (default) cex=2 # tamaño symbol (def:1) lwd=1 # ancho de lineas { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_21.jpg", "name": "21 Gráfico de dos variable numéricas.", "description": "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 symbol bg= white # interior (default) pch=21# circle (default) cex=2 # tamaño symbol (def:1) lwd=1 # ancho de lineas.", "width": "800" } 22 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. { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_22.jpg", "name": "22 Lea la base de datos Litiasis.txt (archivo de texto delimitado por tabulaciones) en R.", "description": "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..", "width": "800" } 23 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 x 1 + ……+ β n x n + e Tipos de modelo de regresión 1. Modelos de regresión LinealY= 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 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_23.jpg", "name": "23 6. Modelos de Regresión.", "description": "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 x 1 + ……+ β n x n + e Tipos de modelo de regresión 1. Modelos de regresión LinealY= 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.", "width": "800" } 24 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 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_24.jpg", "name": "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", "description": "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", "width": "800" } 25 25 < vector 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 # simbolo col=“black” # borde de simbolo c(“Masc”,”Fem”) # texto de legenda > legend(locator(1)) { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_27.jpg", "name": "27 Gráfico de dos grupos de datos: points y legend El comando points permite agregar puntos a un dispositivo gráfico abierto.", "description": "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 # simbolo col= black # borde de simbolo c( Masc , Fem ) # texto de legenda > legend(locator(1)).", "width": "800" } 28 28 Gráfico de dos grupos de datos: points y legend { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_28.jpg", "name": "28 Gráfico de dos grupos de datos: points y legend", "description": "28 Gráfico de dos grupos de datos: points y legend", "width": "800" } 29 29 BONUS TRACK Agregar 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) ) opciones útiles (abline): col=“red“ # default: black h=100 # linea en y=100 v=1.7 # linea en x=1.7 lwd=2 # ancho (default:1) lty=1 # tipo linea (2=segmentos) > # intercepto y pendiente conocidos: > abline(-21.52, 52.39, col=“red”)
11 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 12 Problema 6. A un total de 10 pacientes con diagnostico de VIH se les midió el número de linfocitos T En la sangre. La siguiente tabla muestra el conteo de linfocitos antes y después de un tratamiento 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 pacienteantesdespués 13171 215793 3453 4109240 5283181 6141181 73664 8164367 9154114 102248 > antes despues t.test(antes,despues,paired=T) Paired t-test data: antes and despues t = -1.1006, df = 9, p-value = 0.2996 alternative 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 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, H 0 : μ 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 14 Ciudad 1Ciudad 2 3171 15793 453 109240 283181 141181 3664 164367 154114 2248 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.
15 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. Ciudadlinfocitos 131 1157 14 1109 1283 1141 136 1164 1154 122 271 293 253 2240 2181 2 264 2367 2114 248 > ciudadlinfocitos t.test(linfocitos[ciudad==1],linfocitos[ciudad==2]) Welch Two Sample t-test data: linfocitos[ciudad == 1] and linfocitos[ciudad == 2] t = -0.7308, df = 17.564, p-value = 0.4745 alternative 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 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=3 notch=T# gráfico acinturado horizontal=F# por defecto ylim=c(20,140) log=“both” # también “x”, “y”
17 17 Problema 8. Genere un grafico de bigotes, lo mas completo posible, para los datos del ejercicio 8. Propuesta
18 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-Wallis Análisis de comparación de medianas entre dos o mas poblaciones.
19 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 ks.test(x,y) # si x e y tienen la misma distribución Test de Shapiro Wilk sirve n sw print(sw) 4. Test de Normalidad H0: p1 = p2 Son normales H1: p1 ≠ p2 No son normales Análisis para comparar distribuciones de variables frente a una normal. { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_19.jpg", "name": "19 El comando ks.test permite determinar si un vector x tiene distribución Normal.", "description": "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 ks.test(x,y) # si x e y tienen la misma distribución Test de Shapiro Wilk sirve n sw print(sw) 4. Test de Normalidad H0: p1 = p2 Son normales H1: p1 ≠ p2 No son normales Análisis para comparar distribuciones de variables frente a una normal..", "width": "800" } 20 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) { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_20.jpg", "name": "20 El comando cor permite obtener la correlación entre dos vectores x e y.", "description": "> 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).", "width": "800" } 21 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 symbol bg=“white”# interior (default) pch=21# circle (default) cex=2 # tamaño symbol (def:1) lwd=1 # ancho de lineas { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_21.jpg", "name": "21 Gráfico de dos variable numéricas.", "description": "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 symbol bg= white # interior (default) pch=21# circle (default) cex=2 # tamaño symbol (def:1) lwd=1 # ancho de lineas.", "width": "800" } 22 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. { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_22.jpg", "name": "22 Lea la base de datos Litiasis.txt (archivo de texto delimitado por tabulaciones) en R.", "description": "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..", "width": "800" } 23 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 x 1 + ……+ β n x n + e Tipos de modelo de regresión 1. Modelos de regresión LinealY= 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 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_23.jpg", "name": "23 6. Modelos de Regresión.", "description": "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 x 1 + ……+ β n x n + e Tipos de modelo de regresión 1. Modelos de regresión LinealY= 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.", "width": "800" } 24 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 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_24.jpg", "name": "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", "description": "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", "width": "800" } 25 25 < vector 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 # simbolo col=“black” # borde de simbolo c(“Masc”,”Fem”) # texto de legenda > legend(locator(1)) { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_27.jpg", "name": "27 Gráfico de dos grupos de datos: points y legend El comando points permite agregar puntos a un dispositivo gráfico abierto.", "description": "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 # simbolo col= black # borde de simbolo c( Masc , Fem ) # texto de legenda > legend(locator(1)).", "width": "800" } 28 28 Gráfico de dos grupos de datos: points y legend { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/17/3414350/slides/slide_28.jpg", "name": "28 Gráfico de dos grupos de datos: points y legend", "description": "28 Gráfico de dos grupos de datos: points y legend", "width": "800" } 29 29 BONUS TRACK Agregar 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) ) opciones útiles (abline): col=“red“ # default: black h=100 # linea en y=100 v=1.7 # linea en x=1.7 lwd=2 # ancho (default:1) lty=1 # tipo linea (2=segmentos) > # intercepto y pendiente conocidos: > abline(-21.52, 52.39, col=“red”)
20 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 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 symbol bg=“white”# interior (default) pch=21# circle (default) cex=2 # tamaño symbol (def:1) lwd=1 # ancho de lineas
22 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 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 x 1 + ……+ β n x n + e Tipos de modelo de regresión 1. Modelos de regresión LinealY= 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 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 25 < vector
26 26 GRACIAS
27 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 # simbolo col=“black” # borde de simbolo c(“Masc”,”Fem”) # texto de legenda > legend(locator(1))
28 28 Gráfico de dos grupos de datos: points y legend
29 29 BONUS TRACK Agregar 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) ) opciones útiles (abline): col=“red“ # default: black h=100 # linea en y=100 v=1.7 # linea en x=1.7 lwd=2 # ancho (default:1) lty=1 # tipo linea (2=segmentos) > # intercepto y pendiente conocidos: > abline(-21.52, 52.39, col=“red”)