Medidas de Posici贸n y Variabilidad
MEDIDAS DE POSICIÓN Y VARIABILIDAD
R con R
PRINCIPALES MEDIDAS ESTADÍSTICAS I.
OBJETIVO Emplear comandos, funciones y librerías para calcular las principales medidas de posición y variabilidad.
II.
DESCRIPCIÓN En la aplicación de los métodos de estadística descriptiva resulta importante determinar el proceso adecuado para resumir la información recolectada a través de ciertos valores numéricos o indicadores, los cuales deben reflejar la tendencia de los datos a agruparse o concentrase alrededor de dichos valores. Clasificación de las medidas estadísticas: 1) De tendencia o posición - Media - Mediana - Moda 2) De variablilidad o dispersión - Rango - Rango intercuatílico - Variancia - Desviación estándar - Coeficiente de variabilidad 3) De asimetría - A la derecha o positiva - A la izquierda o negativa
III.
CASO APLICATIVO Se tiene un conjunto de registros del Hospital Centro de Salud Materno de San Bartolomé. Se desea realizar análisis exploratorio de las variables. Data: http://rconr.webcindario.com/data/bartolome.txt Descripción de variables:
IV.
caso edad estado partos peso sexo
: : : : : :
Número de caso Edad de la madre Estado civil de la madre Número de partos de la madre Peso del hijo en kg Sexo del hijo
DESARROLLO Para desarrollar la aplicación se tomará en cuenta la clasificación de la variable; entonces empezaremos con la lectura de los datos. 1
MEDIDAS DE POSICIÓN Y VARIABILIDAD
R con R
SOLUCIONARIO DE LA APLICACIÓN > getwd() #Identificar la dirección de trabajo [1] "C:/Users/DANNY/Documents" > setwd("G:/R") #Asignar la dirección donde se desea trabajar > dir() #Ver los archivos de
la carpeta de trabajo
[1] "bartolome.txt" "notas.txt" > data <- read.table("bartolome.txt", header = TRUE) #Leer la data > head(data) #Muestra los 6 primeros registros caso edad estado partos peso sexo 1 1 25 Conviv 2 2.90 Femenino 2 2 22 Conviv 2 2.90 Femenino 3 3 32 Conviv 4 4.04 Masculino 4 4 22 Conviv 1 4.35 Femenino 5 5 18 Casada 1 3.60 Masculino 6 6 21 Casada 3 3.50 Masculino > str(data) #Muestra el tipo de dato de las variables 'data.frame': 45 obs. of 6 variables: $ caso : int 1 2 3 4 5 6 7 8 9 10 ... $ edad : int 25 22 32 22 18 21 20 19 23 26 ... $ estado: Factor w/ 3 levels "Casada","Conviv",..: 2 2 2 2 1 1 3 1 1 1 ... $ partos: int 2 2 4 1 1 3 2 1 3 2 ... $ peso : num 2.9 2.9 4.04 4.35 3.6 3.5 3.2 3 3.6 2.8 ... $ sexo : Factor w/ 2 levels "Femenino","Masculino": 1 1 2 1 2 2 2 1 2 2 ... > names(data) #Muestra los nombres de las variables [1] "caso"
"edad"
"estado" "partos" "peso"
"sexo"
> attach(data) #Para jalar las variables de manera directa
1. MEDIDAS ESTADÍSTICAS A. DE POSICIÓN > length(peso) [1] 45 > sum(peso) [1] 147.76 > mean(peso) [1] 3.283556 > median(peso) [1] 3.18
> install.packages("modeest") > library(modeest) > mfv(peso) [1] 3.0 3.3
2
MEDIDAS DE POSICIĂ&#x201C;N Y VARIABILIDAD
R con R
> ###### > moda=function(x){ + m=sort(table(x),decreasing=TRUE) + mode=names(m[m==m[1]]) + mode=as.numeric(mode) + return(mode) } > ###### > moda(peso) [1] 3.0 3.3
> quantile(peso,prob=0.7) 70% 3.48 > quantile(peso,prob=c(0.2,0.5)) 20%
50%
2.932 3.180
B. DE VARIABILIDAD > rango<-max(peso)-min(peso) > range(peso) [1] 2.62 4.65 > RIC<-as.numeric(quantile(peso,0.75)-quantile(peso,0.25)) > RIC [1] 0.59
> ###### > RIC<-function(x){ + ric<-as.numeric(quantile(x,0.75)-quantile(x,0.25)) + return(ric) } > ###### > RIC(peso) [1] 0.59 > IQR(peso) [1] 0.59
> varianza<-sum((peso-mean(peso))^2)/(length(peso)-1) > varianza [1] 0.1998325
3
MEDIDAS DE POSICIÓN Y VARIABILIDAD
R con R
> ###### > VAR<-function(x){ + variance<-sum((x-mean(x))^2)/(length(x)-1) + return(variance) } > ######
> VAR(peso) [1] 0.1998325 > var(peso) [1] 0.1998325
> desv<-sqrt(varianza) > sd(peso) [1] 0.4470263
> cv<-(sd(peso)/abs(mean(peso)))*100 > cv [1] 13.61409
> ###### > CV<-function(x){ + coef.var<-(sd(x)/abs(mean(x)))*100 + return(coef.var) } > ###### > CV(peso) [1] 13.61409
C. DE ASIMETRÍA > notas<-read.table("notas.txt", header=TRUE) > notas A
B
C
1
1
4
5
2
3
5 11
3
3
8 14
4
5
9 23
5
8 15 15
6
11 18 12
7
15 15
9
8
24
9
6
9
16
8
2
10
9
5
2
11
5
4
1
4
MEDIDAS DE POSICIÓN Y VARIABILIDAD
R con R
> ##DISTRIBUCIÓN SIMETRICA > plot(notas$B,type="o",main="Poligono de Frecuencias",col="blue")
> ##DISTRIBUCIÓN ASIMETRICA A LA IZQUIERDA > plot(notas$A,type="o",main="Poligono de Frecuencias",col="red")
> ##DISTRIBUCIÓN ASIMETRICA A LA DERECHA > plot(notas$C,type="o",main="Poligono de Frecuencias",col="red")
> as<-3*(mean(peso)-median(peso))/sd(peso) > as [1] 0.6949628
5
MEDIDAS DE POSICIĂ&#x201C;N Y VARIABILIDAD
R con R
> ###### > as<-function(x){ + as<-3*(mean(x)-median(x))/sd(x) + return(as) } > ######
> desv.cuart<-(quantile(peso,prob=0.75)-quantile(peso,prob=0.25))/2 > ampl.cuart<-quantile(peso,prob=0.9)-quantile(peso,prob=0.1) > ku<-as.numeric(desv.cuart/ampl.cuart)
> ###### > ku<-function(x){ + desv.cuart<-(quantile(x,prob=0.75)-quantile(x,prob=0.25))/2 + ampl.cuart<-quantile(x,prob=0.9)-quantile(x,prob=0.1) + ku<-as.numeric(desv.cuart/ampl.cuart) + return(ku) } > ######
> install.packages("fBasics") > library(fBasics) > skewness(peso) [1] 0.9671392 attr(,"method") [1] "moment" > kurtosis(peso) [1] 0.5941128 attr(,"method") [1] "excess"
> boxplot(peso)
6
MEDIDAS DE POSICIÓN Y VARIABILIDAD
R con R
> boxplot(peso,main="Peso",col=5)
> stem(peso)
The decimal point is 1 digit(s) to the left of the |
26 | 255 28 | 006000457 30 | 000058000488 32 | 00000 34 | 00006 36 | 0022 38 | 050 40 | 04 42 | 5 44 | 46 | 5
2. EXPLORACIÓN DE DATOS > x<-c(NA,50,52,53,54,NA,NA,63,64,75,76,NA,85,120) > is.na(x) [1]
TRUE FALSE FALSE FALSE FALSE
TRUE
TRUE FALSE FALSE FALSE FALSE
TRUE FALSE FALSE
> x[!is.na(x)] [1]
50
52
53
54
63
64
75
76
85 120
> which(is.na(x)) [1]
1
6
7 12
> y<-c(11.8,NaN,10.5,NaN,12,NaN,63,64,75,76,14) > is.nan(y) [1] FALSE
TRUE FALSE
TRUE FALSE
TRUE FALSE FALSE FALSE FALSE FALSE
> x[!is.nan(y)] [1]
NA
52
54
NA
63
64
75
76
NA 120
7
MEDIDAS DE POSICIĂ&#x201C;N Y VARIABILIDAD
R con R
> which(is.nan(y)) [1] 2 4 6 > boxplot(x)
> stem(x) The decimal point is 1 digit(s) to the right of the | 4 | 0234 6 | 3456 8 | 5 10 | 12 | 0
> sum(x,na.rm=TRUE) [1] 692 > mean(x,na.rm=TRUE) [1] 69.2 > median(x,na.rm=TRUE) [1] 63.5 > sd(x,na.rm=TRUE) [1] 21.43103 > var(x,na.rm=TRUE) [1] 459.2889
8
MEDIDAS DE POSICIĂ&#x201C;N Y VARIABILIDAD V.
R con R
FUNCIONES CREADAS:
> ###### resumen <- function(x){ mean <- mean(x) median <- median(x) moda <- function(x){ m <- sort(table(x),decreasing = TRUE) mode <- names(m[m==m[1]]) mode <- as.numeric(mode) } var <- var(x) sd <- sd(x) cv <- (sd/mean)*100 as <- function(x){ as <- 3*(mean(x)-median(x))/sd(x) } ku <- function(x){ desv.cuart <- (quantile(x, prob = 0.75)-quantile(x, prob = 0.25))/2 ampl.cuart <- quantile(x, prob = 0.9)-quantile(x, prob = 0.1) ku <- as.numeric(desv.cuart/ampl.cuart) } cuadro <- cbind(length(x), mean, median, moda(x), var, sd, cv, as(x), ku(x)) colnames(cuadro) = c("N", "Mean", "Median", "Mode", "var", "sd", "cv", "As", "Ku") print(round(cuadro[1,],2)) par(mfrow = c(2,2)) plot(table(x), type = "p", main = "Poligono de Frecuencias", col = "blue") k <- 1+3.3*log10(length(x)) k <- round(k) freq.abs <- table(cut(x, breaks=k)) freq.porc <- round((freq.abs/length(x))*100, digits=2) plot(freq.porc,type="o", main="Poligono de Frecuencias", col=2) hist(x, main="Histograma", col="orange") boxplot(x, main = "Diagrama de cajas", col = "cyan") stem(x) }
9
MEDIDAS DE POSICIĂ&#x201C;N Y VARIABILIDAD
R con R
> resumen(peso) N 45.00
Mean Median
Mode
var
sd
cv
As
Ku
3.28
3.00
0.20
0.45
13.61
0.69
0.28
3.18
The decimal point is 1 digit(s) to the left of the |
26 | 255 28 | 006000457 30 | 000058000488 32 | 00000 34 | 00006 36 | 0022 38 | 050 40 | 04 42 | 5 44 | 46 | 5
10