Practica DESCRIPCION DE RSTUDIO Objeti
Practica DESCRIPCION DE RSTUDIO Objeti
Practica DESCRIPCION DE RSTUDIO Objeti
DESCRIPCIÓN DE RSTUDIO
Objetivos
• Instalar R y RStudio
• Familiarizarse con el entorno de RStudio
• Introducir, almacenar e importar datos
• Funciones en RStudio.
Descripción e instalación de R
RStudio es una interfaz que permite acceder de manera sencilla a toda la potencia
de R, para utilizar RStudio se requiere haber instalado R previamente.
R es un lenguaje orientado a objetos, es un lenguaje para el cálculo estadístico y la
generación de gráficos, que ofrece una gran variedad de técnicas estadísticas y
gráficas. Es un entorno de análisis y programación estadísticos que, en su aspecto
externo, es similar a S. Es un lenguaje de programación completo con el que se
añaden nuevas técnicas mediante la definición de funciones.
Aunque comenzar a trabajar con R es más complejo que hacerlo con programas
como SPSS, Statgraphics,…, sin embargo tiene muchas ventajas sobre ellos una de la
más importante es que es un software libre en el que colaboran muchos usuarios
para ampliar sus funciones.
A lo largo del texto veremos cómo utilizar R para realizar análisis convencionales,
como los que se encuentran en BMDP, SAS, SPSS o Statgraphics, y dejaremos patente
en algunos momentos sus posibilidades de análisis más complejos, como GLIM o
GENSTAT, así como el desarrollo de nuevos análisis. R se distribuye de acuerdo a
GNU GENERAL PUBLIC LICENSE.
Cada uno de estos menús contiene distintas opciones que se muestran pulsando en
cada una de ellos.
El menú FILE
Este menú contiene las opciones más generales que suelen tener todos los
programas como abrir un archivo, guardar, cerrar…
R.
En la ventana de edición se escriben las instrucciones y para ejecutar estas
instrucciones se pulsa (Ctrl+Intro); (Ctrl+r) o pinchando en el icono Run (en la
parte superior derecha de la ventana de edición).
• New File->Text File: Permite abrir la ventana de texto, en los archivos tipo texto no
se pueden ejecutar ninguna función a menos que se copien y se peguen en el espacio
de trabajo.
• New File->C++ File: Permite compilar funciones de C++ en R.
• New File->R Sweave: Crea un archivo que permite trabajar con LaTeX.
• New File->R Markdown y New File->R HTML: Herramientas de RStudio para la
creación de informes web. Markdown es un lenguaje simple de marcas diseñado
para hacer que el contenido web sea fácil. En lugar de escribir el código HTML y CSS,
Markdown permite el uso de una sintaxis mucho más cómoda (leer más).
• New File->R Presentation. Herramientas de RStudio para hacer presentaciones
sencillas. El objetivo de las presentaciones es hacer diapositivas que hacen uso del
código R y ecuaciones LaTeX lo más sencillo posible.
• New File->Rd File. Uno de los requisitos básicos para los paquetes de R es que todas
las funciones exportadas, objetos y conjuntos de datos tienen la documentación
completa. RStudio también incluye un amplio soporte para la edición de
documentación de R, (Los archivos Rd utilizan un formato simple de marcas que se
asemeja sintácticamente LaTeX).
• New Project: Permite crear proyectos que hacen que sea más fácil dividir el trabajo
en múltiples contextos, cada uno con su propio directorio de trabajo, espacio de
trabajo, historial y los documentos de origen. Los proyectos de RStudio están
asociados a los directorios de trabajo.
Se puede personalizar aún más la búsqueda con expresiones regulares y filtros para
tipos de archivos específicos. El resultado de la búsqueda se mostrará en el panel
junto a la consola (por defecto).
• Clear Console: Limpia por completo la consola, pero no borra los objetos que se
hayan almacenado anteriormente en la memoria.
El menú CODE
En este menú están las opciones más directas con el espacio de trabajo.
El menú BUILD
• Configure Build Tools: Permite construir paquetes y herramientas dentro de un
proyecto creado por el usuario.
El menú DEBUG
• Toggle Breakpoint: Permite introducir un punto de interrupción en el texto de la
ventana de edición con la finalidad de averiguar si, hasta la línea donde se coloca
dicho punto, la ejecución del texto es correcta.
• Clear All Breakpoints: Permite eliminar todos los puntos de interrupción que se
hayan utilizado hasta el momento.
• Execute Next Line: Permite ejecutar texto colocado después de la línea donde se ha
introducido un punto de interrupción.
• Continue: Permite continuar con la ejecución una vez que se ha detenido dicha
ejecución en el punto de interrupción.
• Stop Debugging: Detiene la depuración.
• On Error: En caso de error, permite elegir entre que sólo salga un mensaje de aviso,
que se inspeccione el error o que no ejecute más código a partir del error.
• Debugging Help: Muestra la página web del programa con la ayuda sobre la
depuración de errores.
El menú TOOLS
> help()
> apropos(“med”)
[1] “.__C__namedList” “.rs.emptyNamedList”
[3] “.rs.namedVectorAsList” “elNamed”
[5] “elNamed<-” “median”
[7] “median.default” “medpolish”
[9] “runmed”
> example(median)
> example(median)
median> median(1:4) # = 2.5 [even number]
[1] 2.5
Un vector está formado por elementos del mismo tipo. Si se mezclan números y
cadenas de caracteres, se obtendrá un vector alfanumérico. Si se mezclan números
reales y complejos, se obtendrá un vector de números complejos.
También podemos utilizar las funciones cbind y rbind para construir matrices:
> v1 = c(1,2,3,4)
> v2 = c(5,6,7,8)
> v3= c(9,10,11,12)
> FA = rbind(v1,v2,v3)
> FA
[,1] [,2] [,3] [,4]
v1 1 2 3 4
v2 5 6 7 8
v3 9 10 11 12
>QA = cbind (v1, v2, v3)
> QA
v1 v2 v3
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
> matriz= rbind (c(1,2,3), c(4,5,6), c(7,8,9))
> matriz
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
> matriz = cbind (c(1,2,3), c(4,5,6), c(7,8,9))
>matriz
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
◊ Seleccionar los ementos de una matriz
• Seleccionar el término que ocupa la posición primera fila, segunda columna, [1, 2]
de la matriz N:
La matriz N es la siguiente
>N
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> N[1, 2]
[1] 4
• Para seleccionar sólo una fila (columna), dejamos en blanco la posición de la
columna (fila)
Para añadir una variable de tipo carácter, como por ejemplo los nombres de los
individuos, en el data.frame, se puede hacer de la siguiente forma:
> Nombres = c
(“Pepe”,”Ana”,”Manolo”,”Rafa”,”María”,”Auxi”,”Germán”,”Celia”,”Carmen”,”Juan”,”D
ani”,”Antonio”,”Belinda”,”Sara”)
>Nombres
[1]
“Pepe” “Ana” “Manolo” “Rafa” “María” “Auxi” “Germán” “Celia” “Carmen”
[10] “Juan” “Dani” “Antonio” “Belinda” “Sara”
> dataframe1 <- data.frame(dataframe, Nombres)
> dataframe1
Peso Altura Edad Sexo Nombres
1 77 1.63 23 1 Pepe
2 58 1.63 23 2 Ana
3 89 1.85 26 1 Manolo
4 55 1.62 23 1 Rafa
5 47 1.60 26 2 María
6 60 1.63 26 2 Auxi
7 54 1.70 22 1 Germán
8 58 1.65 23 2 Celia
9 75 1.78 26 2 Carmen
10 65 1.70 24 1 Juan
11 82 1.77 28 1 Dani
12 85 1.83 42 1 Antonio
13 75 1.74 25 2 Belinda
14 65 1.65 26 2 Sara
• Listas
Una lista es un objeto formado por objetos de varias clases. Una colección de
elementos que pueden ser de distintos tipos y que generalmente están identificados
por un nombre. Para crear una lista se utiliza la función list()
> milista = list(números = 1:5, A = matrix(1:6, nrow =3), B = matrix(1:8, ncol = 2),
ciudades = c(“Sevilla”, “Granada”, “Málaga”))
> milista
$números
[1] 1 2 3 4 5
$A
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
$B
[,1] [,2]
[1,] 1 5
[2,] 2 6
[3,] 3 7
[4,] 4 8
$ciudades
[1] “Sevilla” “Granada” “Málaga”
> milista$números
[1] 1 2 3 4 5
> milista[[“números”]]
[1] 1 2 3 4 5
> milista[[1]]
[1] 1 2 3 4 5
> milista[c(1,3,4)] # Acceder a una sublista NombreDeLaLista[c(Posicion1,
Posicion2, …)]
$números
[1] 1 2 3 4 5
$B
[,1] [,2]
[1,] 1 5
[2,] 2 6
[3,] 3 7
[4,] 4 8
$ciudades
[1] “Sevilla” “Granada” “Málaga”
$nom.alumno2
[1] “German”
$nom.profesora
[1] “Ana”
$ProyectoInnovacionDocente
[1] TRUE
$NumeroDeAlumnos
[1] 2
$EdadAlumnos
[1] 21 23
$nom.alumno2
[1] “German”
$ProyectoInnovacionDocente
[1] TRUE
$NumeroDeAlumnos
[1] 2
$nom.alumno2
[1] “German”
$nom.profesora
[1] “Ana”
$EdadAlumnos
[1] 21 23
Comparamos con el comando anterior (subset) para ver que los resultados
coinciden.
>subset(dataframe1, Altura>1.80)
Peso Altura Edad Sexo Nombres
3 89 1.85 26 1 Manolo
12 85 1.83 42 1 Antonio
◊ Creción de variables a partir de otras existentes
>transform(dataframe1,logPeso=log(Peso))
Peso Altura Edad Sexo Nombres logPeso
1 77 1.63 23 1 Pepe 4.343805
2 58 1.63 23 2 Ana 4.060443
3 89 1.85 26 1 Manolo 4.488636
4 55 1.62 23 1 Rafa 4.007333
5 47 1.60 26 2 María 3.850148
6 60 1.63 26 2 Auxi 4.094345
7 54 1.70 22 1 Germán 3.988984
8 58 1.65 23 2 Celia 4.060443
9 75 1.78 26 2 Carmen 4.317488
10 65 1.70 24 1 Juan 4.174387
11 82 1.77 28 1 Dani 4.406719
12 85 1.83 42 1 Antonio 4.442651
13 75 1.74 25 2 Belinda 4.317488
14 65 1.65 26 2 Sara 4.174387
Nota: Ver también Estructura de datos con R en la Práctica 1 de la Guía R
Lectura de datos desde ficheros externos
♦ readtable()
Para leer un fichero .txt en R se emplea la función read.table
read.table (file, header, sep, quote, dec , row.names, col.names,
as.is, na.strings, skip)
• file: Nombre del archivo a leer, que debe tener una línea por individuo
• header: Es un valor lógico. Si es TRUE, la primera línea del archivo contiene los
nombres de las variables. Es conveniente especificar este campo explícitamente
• sep: Separador entre campos. El valor predeterminado es uno o varios espacios en
blanco
• dec: Separador decimal
• quote: Conjunto de caracteres que delimitan cadenas de caracteres
• row.names: Especifica los nombres para las filas. Se puede especificar de dos formas:
Con un vector de cadenas de caracteres de la misma longitud que el número de filas o
mediante un nombre o número que indica un campo del archivo que contiene los
nombres.Si se deja en blanco, los nombres dependen de la existencia o no de un campo
de caracteres con valores distintos. Si lo hay, los utiliza como nombres, en caso contrario
utiliza como nombres los números de orden de cada fila. Esta última opción puede
forzarse dando a este parámetro el valor NULL.
• col.names: Especifica los nombres para las columnas o variables. Si no los indica aquí,
ni están incluidos en la primera fila del archivo, se construyen con la letra V y el
número de columna.
• as.is:Vector de valores lógicos que indica cómo tratar los campos no numéricos. El
valor predeterminado es FALSE con el cual dichos campos se transforman en factores,
salvo que se utilicen como nombres de filas. Si este vector es de longitud inferior al
número de campos no numéricos se repetirá las veces necesarias. También puede ser un
vector numérico que indica que columnas deben conservarse como caracteres.
• na.strings: Vector de caracteres y controla con qué valor se indica un valor NA. Así,
podrá utilizar * para leer este tipo de datos procedentes de BMDP.
• colClasses: Vector de caracteres que indica la clase de cada columna.
• nrows:Número máximo de filas que se leerán.
• skip:Indica el número de líneas del principio del archivo que deben saltarse sin leer.
• check.names: De tipo lógico, si es TRUE se comprueba que los nombres de variables
son correctos y que no hay duplicados.
• fill: De tipo lógico, si es TRUE se completan las filas con blancos si es necesario.
• strip.white: De tipo lógico, si es TRUE y se ha definido un separador, se eliminan los
espacios.
• blank.lines.skip: De tipo lógico, si es TRUE se ignoran las líneas en blanco.
• comment.char:Indica un carácter a partir del cual no se lee la línea, interpretándose
comoun comentario.
♦ write()
La función write permite escribir un vector o una matriz en un archivo. La matriz debe
ser traspuesta para que coincida con la representación internade R.
Esta función devuelve el valor lógico TRUE si la suma de los elementos del vector es
menor que 100 y FALSE en caso contrario.
Bucles
• for: Contador (recorre cada elemento del vector o matriz y efectúa una operación
con dicho elemento)
• while: Condición (evalúa la condición y mientras esta es cierta se evalúa la acción)
• repeat: Repetición (evalúa la acción indefinidamente)
> x <- c(1:5)
> for (i in 1: length (x) ) {
+ cat ( ‘El cuadrado de ‘, i, ‘ es: ‘, i^2, ‘\n’ )
+}
El cuadrado de 1 es: 1
El cuadrado de 2 es: 4
El cuadrado de 3 es: 9
El cuadrado de 4 es: 16
El cuadrado de 5 es: 25
Este ejemplo imprime los cuadrados del vector x formado por los elementos del 1
al 5.
>x=1
> while (x <= 10 ){
+ cat (‘El cuadrado de ‘, x, ‘ es: ‘, x^2, ‘\n’)
+x=x+1
+}
El cuadrado de 1 es: 1
El cuadrado de 2 es: 4
El cuadrado de 3 es: 9
El cuadrado de 4 es: 16
El cuadrado de 5 es: 25
El cuadrado de 6 es: 36
El cuadrado de 7 es: 49
El cuadrado de 8 es: 64
El cuadrado de 9 es: 81
El cuadrado de 10 es: 100
Práctica 2
ESTADÍSTICA DESCRIPTIVA:
REPRESENTACIONES GRÁFICAS
Objetivos
• Resumir, ordenar y analizar conjuntos de datos
• Calcular medidas de posición, de dispersión y de forma de un conjunto de datos
• Representar gráficamente la distribución de frecuencias
• Realizar análisis exploratorios de datos.
En esta práctica tomaremos un primer contacto con las técnicas estadísticas que se
utilizan para ordenar, analizar y representar un conjunto de datos, con el fin de
describir apropiadamente sus características. El primer paso en el análisis de datos,
una vez introducidos los mismos, es realizar un análisis descriptivo o análisis
exploratorio de datos. Los principales objetivos de un análisis descriptivo o análisis
exploratorio de datos son la descripción y la síntesis de los datos. Para ello, los datos
se organizan en tablas, se calculan medidas que describen sus características más
importantes y se realizan representaciones gráficas.
Este análisis inicial proporciona una idea de la forma que tiene la distribución de las
observaciones y permite obtener estadísticos de tendencia central (media, mediana
y moda), de dispersión (varianza, desviación típica, rango), de forma (asimetría,
curtosis), de posición (percentiles), así como gráficos de barras, de sectores e
histograma.
La principal diferencia entre las dos funciones reside en el tipo de los argumentos
que necesita cada una.
>setwd(“F:/Desktop/EJEMPLOS”)
A continuación seleccionamos el fichero de trabajo, al que llamamo datos. Para ello
en el edtiroe de RStudio escribimos
Figura 1: read.table(“F:/Desktop/EJEMPLOS/ejemplo 1-RStudio.txt”, header =
TRUE)
>datos <- read.table(“F:/Desktop/EJEMPLOS/ejemplo 1-RStudio.txt”, header =
TRUE)
Ejecutar la sentencia, para ello Click en la tecla Run o bien presionar las teclas Ctrl+
Enter y se ejecuta, mostrándose en la Consola de RStudio
Figura 2: >datos <- read.table(“F:/Desktop/EJEMPLOS/ejemplo 1-RStudio.txt”,
header = TRUE)
Nota: Se aconseja trabajar en el Editor de RStudio y ejecutar con el comando Run o
bien con Ctrl+ Enter
> datos <- read.table(“F:/Desktop/EJEMPLOS/ejemplo 1-RStudio.txt”, header =
TRUE)
> datos
Peso Altura Edad Sexo Nombres
1 77 1.63 23 1 Pepe
2 58 1.63 23 2 Ana
3 89 1.85 26 1 Manolo
4 55 1.62 23 1 Rafa
5 47 1.60 26 2 María
6 60 1.63 26 2 Auxi
7 54 1.70 22 1 Germán
8 58 1.65 23 2 Celia
9 75 1.78 26 2 Carmen
10 65 1.70 24 1 Juan
11 82 1.77 28 1 Dani
12 85 1.83 42 1 Antonio
13 75 1.74 25 2 Belinda
14 65 1.65 26 2 Sara
Calculamos las frecuencias absolutas y relativas de las variables peso y nombre
> tabla_peso <- table(datos$Peso)
> tabla_peso
47 54 55 58 60 65 75 77 82 85 89
1 1 1 2 1 2 2 1 1 1 1
> prop.table(tabla_peso)
47 54 55 58 60 65 75
0.07142857 0.07142857 0.07142857 0.14285714 0.07142857 0.14285714
0.14285714
77 82 85 89
0.07142857 0.07142857 0.07142857 0.07142857
> tabla_nombre <- table(datos$Nombres)
> tabla_nombre
Ana Antonio Auxi Belinda Carmen Celia Dani Germán Juan Manolo
1 1 1 1 1 1 1 1 1 1
María Pepe Rafa Sara
1 1 1 1
> prop.table(tabla_nombre)
Ana Antonio Auxi Belinda Carmen Celia Dani
0.07142857 0.07142857 0.07142857 0.07142857 0.07142857 0.07142857
0.07142857
Germán Juan Manolo María Pepe Rafa Sara
0.07142857 0.07142857 0.07142857 0.07142857 0.07142857 0.07142857
0.07142857
Representaciones gráficas
RStudio y R ofrecen una gran variedad de gráficos, el
comando demo(graphics) muestra dichos gráficos. Atendiendo al tipo de datos
vamos a utilizar varios tipos de gráficos.
• Variables cualitativas o variables cuantitativas de tipo discreto: Se pueden
considerar gráficos de sectores o gráficos de barras, los cuales se obtienen
en R mediante las funciones pie y barplot, respectivamente. Los argumentos más
importantes de estas funciones son:
pie(x, labels = names(x), clockwise = FALSE, init.angle = if(clockwise) 90 else
0, col = NULL, main = NULL)
barplot(x, horiz = FALSE, height, col = NULL, width space, names.arg, beside,
main = NULL, sub = NULL, xlab = NULL, ylab = NULL)
donde
x es un vector con las frecuencias de las observaciones. Igualmente, puede ser una
tabla de frecuencia (de las obtenidas con table o prop.table)
labels es un vector de cadenas de caracteres que indican los nombres de cada una
de las categorías que aparecen en el gráfico de sectores
clockwise es un argumento lógico que indica si los sectores se dibujan en sentido
horario (clockwise = TRUE) o en sentido antihorario (clockwise = FALSE, que es la
opción por defecto).
init.angle es un valor numérico que indica el ángulo (en grados) en el que se sitúa
el primer sector. Por defecto, el primer sector empieza a dibujarse a los 90 grados (-
a las 12 en punto -, cuando clockwise es igual a TRUE) o a los 0 grados (- a las 3 en
punto -, cuando clockwise es igual a FALSE)
horiz es un argumento lógico que indica si las barras del gráfico de barras se dibujan
de forma vertical (horiz = FALSE, que es la opción por defecto) u horizontal (horiz =
TRUE)
height: vector de frecuencias para cada valor
width: especifica mediante un vector el ancho de las barras
space: fija el espacio entre las barras
names.arg: vector de nombres para colocarlos bajo las barras
beside: valor lógico, FALSE indica barras apiladas y TRUE yuxtapuestas
col es un vector en el que se indican los colores de las barras o los sectores del
gráfico
main y sub son cadenas de caracteres en la que se especifican el título y el subtítulo
del gráfico
xlab e ylab son cadenas de caracteres en las que se especifican los nombres de los
ejes X e Y.
• Variables cuantitativas: Los gráficos que se suelen emplear con más frecuencia
son el histograma, el diagrama de tallos y hojas y el diagrama de caja y bigotes.
En R, se utilizan las órdenes hist, stem y boxplot para la obtención de histogramas,
de diagramas de tallos y hojas y de diagramas de caja y bigotes, respectivamente.
Éstas son las principales opciones de estas funciones:
hist(x, breaks = “Sturges”, freq=TRUE, right = TRUE, col = NULL, main =
paste(“Histogram of” , xname))
stem(x)
boxplot(x, range = 1.5, col = NULL, main = NULL)
Figura 3: Diagrama
de barras para la variable Edad
> barplot(table(datos$Sexo,datos$Edad),col=c(2,3))
Figura 5: Histograma
para la variable Edad
> stem(table(datos$Peso))
The decimal point is at the |
1 | 00000000
1|
2 | 000
> boxplot(datos$Edad, xlab=”Edad”, main = “Cajas y bigotes para la variable edad”)
Figura 6: Caja y bigotes para la
variable Edad
tabla_peso<-table(datos$Peso)
tabla_peso
prop.table(tabla_peso)
tabla_nombre<-table(datos$Nombres)
tabla_nombre
prop.table(tabla_nombre)
barplot(table(datos$Sexo,datos$Edad),col=c(2,3))
stem(table(datos$Peso))
Algunas de las medidas más populares dentro del grupo de medidas de tendencia
central son la media, la mediana y la moda.Las funciones que calculan las dos
primeras medidas en R son mean y median.
mean (x, na.rm = FALSE)
median (x, na.rm = FALSE)
donde:
Mode (x)
En el caso de que existan varias modas (es decir, cuando estemos ante una
distribución plurimodal), esta función mostrará únicamente la menor de ellas (o la
primera en orden alfabético, si se está analizando una variable cualitativa).
> Mode(datos$Edad)
[1] 26
Entre las medidas de posición de tendencia no central, los cuantiles figuran
entre las más utilizadas. Para obtener los cuantiles de una variable en R se emplea
la función quantile.
quantile(x, probs = seq(0, 1, 0.25), na.rm = FALSE)
donde:
• x vector numérico
• na.rm valor lógico que indica si los valores de NA deben ser despojados antes de
que continúe la computación
• decreasing se utiliza para indicar orden decreciente o creciente
>sort(datos$Peso)
[1] 47 54 55 58 58 60 65 65 75 75 77 82 85 89
> sort(datos$Peso, decreasing = FALSE)
[1] 47 54 55 58 58 60 65 65 75 75 77 82 85 89
> sort(datos$Peso, decreasing = TRUE)
[1] 89 85 82 77 75 75 65 65 60 58 58 55 54 47
Medidas de forma
Como su propio nombre indica, estas medidas se centran en el estudio de la forma
que presenta una distribución a través del análisis de la simetría y la curtosis o el
apuntamiento de la distribución en cuestión.
donde
Ejercicios
Ejercicios Guiados
Ejercicio guiado
Considérese el siguiente conjunto de datos que contiene información acerca
del sexo, edad, estatura, puntuación y calificación de 20 estudiantes:
Tabla2. Datos del
Ejercicio Guiado 1
> min(datos1$Puntuación)
[1] 2
> max(datos1$Puntuación)
[1] 9
> quantile(datos1$Puntuación, probs = c(0.25, 0.75))
25% 75%
4.75 7.25
> mean(datos1$Puntuación )
[1] 5.75
> median(datos1$Puntuación)
[1] 6
e) Calcula la estatura media de los estudiantes y proporciona, al menos, dos
medidas que indiquen la dispersión de esta variable.
Para calcular la estatura media de los estudiantes, tenemos que tener en cuenta que
la variable Estatura incluye dos valores faltantes entre sus observaciones. Este
hecho tiene que ser indicado estableciendo como TRUE el valor del parámetro na.rm
> mean(datos1$Estatura, na.rm = TRUE)
[1] 1.776111
La estatura media de los estudiantes es de 1.776 cm..
Una vez obtenida la varianza, la desviación típica se obtiene como su raíz cuadrada
positiva.
Ejercicios Propuestos
Ejercicio Propuesto
Se está realizando un estudio sobre los niveles de glucosa en una población
con el objetivo de estudiar si dichos niveles varían en función del sexo, edad,
estatura y grupo sanguíneo de la persona. Para ello se toman dos muestras de
20 individuos cada una
Ta
bla3. Datos del Ejercicio Propuesto 1
Se pide:
a) Crear dos conjuntos de datos, de nombre GrA y GrB que contengan la
información recogida en las tablas anteriores.
b) Representar la variable Gr_Sang mediante un diagrama de sectores en cada
uno de los grupos. Incluir un título descriptivo en cada gráfico y colorear los
sectores de azul, amarillo, rosa y verde.
c) Representar la variable Estatura mediante un histograma en cada uno de
los grupos.
d) ¿Existe algún dato atípico en la variable Edad en el grupo A? ¿Y en el grupo
B?
e) ¿Cuál es el valor máximo del 40% de las estaturas más pequeñas de los
individuos en el grupo A? ¿Y el valor mínimo del 30% de las estaturas
mayores de los individuos en el grupo B?
f) ¿Dónde son las variables edad y estatura más homogénea: en el grupo A o
en el B?
g) ¿En qué grupo presentan los individuos una altura media mayor? ¿En qué
grupo presentan los individuos una altura mediana menor?
h) Estudia la asimetría y la curtosis de la variable Estatura en en el grupo A.
Ejercicio Propuesto (Resuelto)
a) Crear dos conjuntos de datos, de nombre GrA y GrB que contengan la
información recogida en las tablas anteriores.
>Sexo_A <- factor(c(“Mujer”, “Hombre”, “Mujer”, “Mujer”, “Mujer”, “Hombre”,
“Mujer”, “Hombre”, “Hombre”, “Mujer”, “Mujer” ,”Hombre”, “Hombre”, “Mujer”,
“Mujer”, “Hombre”, “Mujer”, “Mujer”, “Mujer”, “Mujer” ), levels = c(“Mujer”,
“Hombre”))
>Edad_A <- c(25, 30, 28, 20, 23, 22, 22, 22, 21, 21, 22, 20, 22, 29, 29, 21, 30, 21, 22,
23)
>Estatura_A <- c(1.82, 1.83, 1.78, 1.79, 1.80, 1.90, 1.79, 1.83, NA, 1.65, 1.73, 1.79,
1.80, 1.77, 1.69, 1.75, 1.66, NA, 1.79, 1.80)
>Gr_Sang_A <- c(“A”, “B”, “A”, “AB”, “0”, “A”, “B”, “A”, “B”, “AB”, “A”, “B”, “0”, “0”, “A”,
“B”, “AB”, “B”, “B”, “B”)
Figura 15:
Diagrama de Sectores del Grupo Sanguíneo (Grupo B)
c) Representar la variable Estatura mediante un histograma en cada uno de
los grupos.
Histograma de Altura en el Grupo A
Figura 16:
Histograma de la estatura (Grupo A)
Histograma de la Estatura para el Grupo B
Figura 17:
Histograma de la estatura (Grupo B)
d) ¿Existe algún dato atípico en la variable Edad en el grupo A? ¿Y en el grupo
B?
Para responder a esta pregunta, vamos a calcular los gráficos de caja y bigotes para
la variable Edad en ambos grupos.
No hay valores atípicos (datos más allá de los extremos de los bigotes) para la
variable Edad en ninguno de los grupos.
e) ¿Cuál es el valor máximo del 40% de las estaturas más pequeñas de los
individuos en el grupo A? ¿Y el valor mínimo del 30% de las estaturas
mayores de los individuos en el grupo B?
Los valores que nos están pidiendo son el percentil 40 de la variable Estatura en la
región A y el percentil 70 de la variable Altura en la región B, respectivamente.
Por lo tanto,
CV de la Estatura del Grupo A = 0.5813903
CV de la Estatura del Grupo B =0.02937938
Atendiendo a los resultados que hemos obtenido, podemos afirmar que la variable
Estatura es más homogénea en el Grupo B dado que es en esta región donde el
coeficiente de variación para la variable Estatura está más próximo a 0.
g) ¿En qué grupo presentan los individuos una altura media mayor? ¿En qué
grupo presentan los individuos una altura mediana menor?
Práctica 3
Métodos de regresión
REGRESIÓN Y CORRELACIÓN
Objetivos
• Ajustar modelos de regresión lineal simple y múltiple estimando los valores de sus
parámetros
• Obtener información adicional sobre los modelos de regresión (contrastes de
significación de los parámetros, test de bondad de ajuste,…)
• Contrastar las hipótesis del modelo de regresión lineal
• Ajustar un modelo de regresión cuadrático
• Estudiar la correlación entre variables.
Regresión
El objetivo del Análisis de regresión es determinar una función matemática sencilla
que describa el comportamiento de una variable dados los valores de otra u otras
variables. En el Análisis de regresión simple, se pretende estudiar y explicar el
comportamiento de una variable que notamos y, y que
llamaremos variable explicada, variable dependiente o variable de interés, a
partir de otra variable, que notamos x, y que llamamos variable
explicativa, variable independiente o variable de predicción. El
principal objetivo de la regresión es encontrar la función que mejor explique
la relación entre la variable dependiente y las independientes.
Para cumplir dicho objetivo, el primer paso que debe realizar el investigador, es
representar las observaciones de ambas variables en un gráfico llamado diagrama
de dispersión o nube de puntos. A partir de esta representación el investigador
puede especificar la forma funcional de la función de regresión.
Por ejemplo:
Ejemplo 1
La siguiente tabla muestra información sobre la edad y la presión sanguínea de 10
mujeres:
> setwd(“F:/Desktop/EJEMPLOSRS3”)
> datos <- read.table(“F:/Desktop/EJEMPLOSRS3/ejemplo1.txt”, header = TRUE)
> datos
edad Presión
1 56 148
2 42 126
3 72 159
4 36 118
5 63 149
6 47 130
7 55 151
8 47 142
9 38 114
10 42 141
Supongamos que nuestro objetivo es determinar la edad de una mujer a partir de su
presión sanguínea o, lo que es lo mismo, supongamos que la variable dependiente
es edad y que la variable independiente es presión. Vamos a representar el
diagrama de dispersión de las dos variables para determinar si la relación existente
entre ambas puede considerarse lineal, y por tanto, tiene sentido plantear un
modelo de regresión lineal simple.
> plot(presion, edad)
Figura 1: Diagrama de
Dispersión
A la vista del gráfico de dispersión, se puede asumir un cierto grado de relación lineal
entre ambas variables, por lo que procedemos al ajuste del modelo lineal.
para los parámetros, en nuestro caso y . Por tanto, el modelo lineal puede
escribirse del siguiente modo:
edadi = -43.5440 + 0.6774 presioni
Estos dos parámetros pueden interpretarse del siguiente modo: –43.5440 es el
valor de la edad para una persona de presión sanguínea 0, lo cual no tiene sentido.
El parámetro es igual a 0.6774 indica que, por término medio, cada mmHg
(milímetros de mercurio) de incremento en la presión sanguínea de una persona
supone un incremento de 0.6774. en su edad.
Podemos obtener más información sobre el modelo de regresión que hemos
calculado aplicando la función summary al objeto que contiene los datos de la
regresión, al cual hemos llamado reg_lin en este ejemplo.
> summary(reg_lin)
Call:
lm(formula = edad ~ presion)
Residuals:
Min 1Q Median 3Q Max
-9.9676 -2.9835 -0.0973 3.8623 7.8394
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -43.5440 17.6126 -2.472 0.038571 *
presion 0.6774 0.1271 5.328 0.000704 ***
—
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 5.742 on 8 degrees of freedom
Multiple R-squared: 0.7802, Adjusted R-squared: 0.7527
F-statistic: 28.39 on 1 and 8 DF, p-value: 0.000704
Esta salida contiene una información más completa sobre el análisis. Así, por
ejemplo, encontramos información sobre los residuos (en el apartado Residuals),
que se definen como la diferencia entre el verdadero valor de la variable
dependiente y el valor que pronostica el modelo de regresión. Cuanto más pequeños
sean estos residuos mejor será el ajuste del modelo a los datos y más acertadas serán
las predicciones que se realicen a partir de dicho modelo.
En la tabla Coefficients encontramos los valores de los parámetros que aparecían
en la salida por defecto junto a su error estándar. Cada parámetro aparece
acompañado del valor de un estadístico t de Student y un p-valor que sirven para
contrastar la significación del parámetro en cuestión, es decir, para resolver los
siguientes contrastes de hipótesis:
Lo que se pretende mediante estos contrastes,
es determinar si los efectos de la constante y de la variable independiente son
realmente importantes para explicar la variable dependiente o si, por el contario,
pueden considerarse nulos.
En nuestro ejemplo, los p-valores que nos ayudan a resolver estos contrastes
son 0.038571 y 0.000704 ambos menores que 0.05. Así, considerando un nivel del
significación del 5%, rechazamos la hipótesis nula en ambos contrastes, de manera
que podemos suponer ambos parámetros significativamente distintos de 0.
Por último, en la parte final de la salida, encontramos el valor de R² (Multiple R-
squared) y de R² ajustado (Adjusted R-squared), que son indicadores de la bondad
del ajuste de nuestro modelo a los datos. R² oscila entre 0 y 1, de manera que,
valores de R² próximos a 1 indican un buen ajuste del modelo lineal a los datos. Por
otro lado, R² ajustado es similar a R², pero penaliza la introducción en el modelo de
variables independientes poco relevantes a la hora de explicar la variable
dependiente. Por tanto, R² ajustado <= R². En nuestro
ejemplo, R² = 0.7802 y R² ajustado = 0.7527, por lo que podemos concluir que el
modelo lineal se ajusta de forma aceptable a nuestros datos. La última línea de la
salida incluye un estadístico F de Snedecor y el p-valor correspondiente que se
utilizan para resolver el siguiente contraste:
Al aplicar la función plot sobre el objeto que contiene la información del modelo
obtenemos 4 gráficos que nos ayudan para la validación del modelo. Estos gráficos
son:
Los gráficos parecen indicar que los residuos son aleatorios, independientes y
homocedásticos. Sin embargo, no parece que los residuos sigan una distribución
Normal. Vamos a confirmar si esto es así mediante métodos analíticos.
donde
• x es un vector numérico con los datos a los que vamos a aplicar el test (en nuestro
caso, los residuos)
• distrib indica la distribución de referencia que se usará en el contraste (en nuestro
caso, la distribución Normal, por lo que distrib = pnorm)
Al realizar un análisis de regresión lineal, R y RStudio guardan automáticamente los
residuos en el objeto que almacena la información de la regresión (y que nosotros
hemos llamado reg_lin). Para acceder a estos residuos, escribiremos $residuals a
continuación del nombre del objeto que contiene la información del análisis. Por
tanto, podemos realizar el contraste de Kolmogorov-Smirnov del siguiente modo:
> ks.test(reg_lin$residuals, “pnorm”)
One-sample Kolmogorov-Smirnov test
data: reg_lin$residuals
D = 0.3935, p-value = 0.06608
alternative hypothesis: two-sided
Los resultados del test nos confirman lo que se intuía en el gráfico Q-Q: a un 10% de
significación los residuos no siguen una distribución normal, puesto que el p-valor
que se obtiene (0.06608) es menor que 0.1. Sin embargo para una significación del
5% no se debe rechazar la hipótesis nula.
donde
En este caso, con un p-valor de 0.5879 no podemos rechazar la hipótesis de que los
residuos son independientes.
Regresión lineal múltiple
El modelo de regresión múltiple es la extensión a k variables explicativas del modelo
de regresión simple. En general, una variable de interés y depende de varias
variables x1, x2, …, xk y no sólo de una única variable de predicción x. Por ejemplo, para
estudiar la contaminación atmosférica, parece razonable considerar más de una
variable explicativa, como pueden la temperatura media anual, el número de
fábricas, el número de habitantes, etc. Además de las variables observables, la
variable de interés puede depender de otras desconocidas para el investigador. Un
modelo de regresión representa el efecto de estas variables en lo que se conoce
como error aleatorio o perturbación.
Un modelo de regresión teórico en el que las variables se pueden relacionar
mediante una función de tipo lineal, podemos expresarlo de la siguiente forma:
donde
> gastos <- c(1000, 580, 520, 500, 600, 550, 400)
> ingresos <- c(50000, 2500, 2000, 1900, 3000, 4000, 2000)
> tamaño <- c(7, 4, 3, 3, 6, 5, 2)
> hijosU <- c(3,1,1,0,1,2,0)
Y vamos a agrupar la información relativa a las 4 variables de las que disponemos
en un data frame al que pondremos por nombre datos2:
> datos2 <- data.frame(gastos, ingresos, tamaño, hijosU)
Comprobemos que, efectivamente, el data frame que hemos creado contiene la
información sobre las 4 variables:
> datos2
gastos ingresos tamaño hijosU
1 1000 50000 7 3
2 580 2500 4 1
3 520 2000 3 1
4 500 1900 3 0
5 600 3000 6 1
6 550 4000 5 2
7 400 2000 2 0
A continuación ajustamos el modelo de regresión lineal múltiple
> reg_lin_mul <- lm(gastos ~ ingresos + tamaño + hijosU)
> summary(reg_lin_mul)
Call:
lm(formula = gastos ~ ingresos + tamaño + hijosU)
Residuals:
1234567
1.216 48.164 29.125 15.209 -10.134 -35.402 -48.178
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.590e+02 6.291e+01 5.706 0.0107 *
ingresos 7.247e-03 1.802e-03 4.021 0.0276 *
tamaño 3.734e+01 2.046e+01 1.825 0.1655
hijosU 5.359e+00 4.061e+01 0.132 0.9034
—
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 48.57 on 3 degrees of freedom
Multiple R-squared: 0.9677, Adjusted R-squared: 0.9353
F-statistic: 29.93 on 3 and 3 DF, p-value: 0.009772
donde
> cor(datos2)
gastos ingresos tamaño hijosU
gastos 1.0000000 0.9465675 0.8457301 0.8627733
ingresos 0.9465675 1.0000000 0.6886470 0.7885404
tamaño 0.8457301 0.6886470 1.0000000 0.8416254
hijosU 0.8627733 0.7885404 0.8416254 1.0000000
En este caso, en lugar de un único valor numérico, la función cor devuelve una
matriz simétrica con las correlaciones entre las variables.
Habitualmente, se está interesado en contrastar si la correlación lineal entre pares
de variables puede considerarse 0 o no. Es decir, se quiere resolver el contraste
donde
El p-valor asociado a este contraste es de 0.001231 < 0.05, por lo que rechazamos la
hipótesis de que la correlación lineal entre estas dos variables sea 0.
Ejercicios
Ejercicios Guiados
Ejercicio guiado
Una empresa fabricante de cereales está interesada en conocer cómo afecta a
las ventas del producto, la publicidad en la televisión, en la radio y en los
periódicos. Para ello, realiza un estudio de los gastos mensuales (en miles de
euros) correspondientes a los últimos 20 meses. Estos datos se presentan en
la siguiente tabla.
a) Crea 4 vectores numéricos, de manera que cada uno contenga los datos de
una columna y un data frame llamado Cerealescon los 4 vectores que acabas
de crear
> cereales
ventas tv radio periodicos
1 10.0 13.0 56 40
2 12.0 14.0 55 40
3 11.0 15.0 60 42
4 13.0 17.0 65 50
5 12.0 17.5 69 40
6 14.0 13.0 67 44
7 16.0 14.5 68 40
8 12.0 9.0 67 44
9 14.0 8.0 97 46
10 11.0 9.0 66 46
11 10.0 8.0 65 45
12 19.0 10.0 60 110
13 8.5 17.0 70 30
14 8.0 18.0 110 50
15 9.0 18.5 75 45
16 13.0 19.0 80 40
17 16.0 20.0 85 80
18 18.0 20.0 90 90
19 20.0 13.0 56 90
20 22.0 14.0 55 110
Otra opción es, Seleccionar en el menú principal: Session/Set Working
Directory/Choose Directory (Ctrl+Shift+H) y en la Consola de RStudio se muestra la
siguiente orden:
> setwd(“F:/Desktop/EJEMPLOSRS3”)
A continuación leemos el fichero utilizando read.table
> cereales <- read.table(“F:/Desktop/EJEMPLOSRS3/cereales.txt”, header = TRUE).
b) Representa el diagrama de dispersión de las ventas y la publicidad en tv
Por otra parte, el valor de R² (0.001785) nos lleva a concluir que el ajuste del
modelo a los datos es muy malo.
e) ¿Cuál sería la recta de regresión en el caso de que se considere un modelo
de regresión lineal simple sin constante?
> reg_lin2 <- lm(ventas ~ 0 + tv, data = cereales)
> reg_lin2
Call:
lm(formula = ventas ~ 0 + tv, data = cereales)
Coefficients:
tv
0.8673
Call:
lm(formula = ventas ~ tv + radio, data = cereales)
Coefficients:
(Intercept) tv radio
17.38543 0.03823 -0.06370
Solución:
Ejercicios Propuestos
Ejercicio Propuesto
Con el objetivo de realizar un estudio de mercado sobre el precio de los pisos,
se seleccionan de forma aleatoria una muestra estratificada representativa de
los distintos barrios de una ciudad. Los datos sobre el precio de los pisos en
miles de euros, la superficie en m² y la antigüedad del inmueble en años, se
muestran en la siguiente tabla.
Tabla4. Datos del Ejemplo Propuesto 1
Se pide:
a) Crear un data frame de nombre pisos que almacene los datos del ejemplo
propuesto
b) Dibujar el diagrama de dispersión de las variables precio y superficie y
determinar si puede existir una cierta relación lineal entre ambas
c) ¿Cuál es la recta de regresión lineal simple que considera a la precio como
variable dependiente y a la superficie como variable independiente?
Interpreta los parámetros de esa recta
d) ¿Son significativos estos parámetros? ¿Qué puede decirse del ajuste del
modelo a los datos?
e) ¿Cuál es la correlación lineal de Pearson entre ambas variables? ¿Es
significativa?
f) ¿Cuál es la recta de regresión lineal si se considera también como variable
independiente la antigüedad?
g) Ajustar un modelo de regresión lineal múltiple. Obtener una estimación de
los parámetros del modelo y su interpretación
h) Contrastar la significación del modelo propuesto
i) ¿Puede eliminarse alguna variable del modelo? Razona la respuesta
j) Coeficiente de determinación y de determinación corregido. Interpretación
En el gráfico se aprecia un cierto patrón lineal entre las variables, aunque esto
debe confirmarse mediante métodos analíticos.
d) ¿Son significativos estos parámetros? ¿Qué puede decirse del ajuste del
modelo a los datos?
Call:
lm(formula = precio ~ superficie, data = pisos)
Residuals:
Min 1Q Median 3Q Max
-69.436 -25.020 -3.061 12.960 154.147
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -7.8131 27.5629 -0.283 0.78
superficie 1.7472 0.2181 8.012 2.4e-07 ***
—
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 47.92 on 18 degrees of freedom
Multiple R-squared: 0.781, Adjusted R-squared: 0.7688
F-statistic: 64.19 on 1 and 18 DF, p-value: 2.399e-07
Considerando un nivel de significación del 5%, sólo es significativamente distintos
de 0 el parámetro superficie, ya que su p-valor (2.4e-07 ) es inferior a 0.05.
El ajuste del modelo a los datos es aceptable, ya que el valor de R² es de 0.781
e) ¿Cuál es la correlación lineal de Pearson entre ambas variables? ¿Es
significativa?
Pearson’s product-moment correlation
data: pisos$precio and pisos$superficie
t = 8.012, df = 18, p-value = 2.399e-07
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.7245916 0.9534095
sample estimates:
cor
0.883743
El coeficiente de correlación lineal de Pearson entre las dos variables es
de 0.883743
Con un p-valor de 2.399e-07 < 0.05, rechazamos la hipótesis de que el coeficiente de
correlación lineal de Pearson entre ambas variables pueda considerarse 0.
f) ¿Cuál es la recta de regresión lineal si se considera también como variable
independiente la antigüedad?
Call:
lm(formula = precio ~ antiguedad, data = pisos)
Coefficients:
(Intercept) antiguedad
110.423 4.107
En este caso, la recta de regresión lineales: precio = 110.423 + 4.107 antiguedad
g) Ajustar un modelo de regresión lineal múltiple. Obtener una estimación de
los parámetros del modelo y su interpretación
Call:
lm(formula = precio ~ superficie + antiguedad, data = pisos)
Coefficients:
(Intercept) superficie antiguedad
-6.82133 1.75516 -0.09239
En este caso, la recta de regresión lineal múltiple es: precio = -6.82133 + 1.75516
superficie – 0.09239 antiguedad
h) Contrastar la significación del modelo propuesto
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -6.82133 31.73892 -0.215 0.832
superficie 1.75516 0.25176 6.972 2.25e-06 ***
antiguedad -0.09239 1.32791 -0.070 0.945
—
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 49.3 on 17 degrees of freedom
Multiple R-squared: 0.7811, Adjusted R-squared: 0.7553
F-statistic: 30.32 on 2 and 17 DF, p-value: 2.47e-06
El único parámetro significativamente distinto de cero es superficie (P-valor
= 2.25e-06)
i) ¿Puede eliminarse alguna variable del modelo? Razona la respuesta
Se puede eliminar la variable antiguedad ya que su p-valor es 0.945 > α = 0.05, por
lo que no rechazamos la hipótesis nula de significación de dicha variable. Esta
variable no es válida para predecir el precio de los pisos
j) Coeficiente de determinación y de determinación corregido. Interpretación
El coeficiente de determinaciónes 0.7811 y el de determinación corregido es 0.7553.
No se aprecian grandes diferencias entre ambos coeficientes.
Call:
lm(formula = precio ~ superficie + antiguedad^2, data = pisos)
Coefficients:
(Intercept) superficie antiguedad
-6.82133 1.75516 -0.09239
precio <- c(250, 130, 165, 310, 320, 400, 200, 80, 69, 179, 120, 223,
300, 198, 165, 69, 73, 123, 356, 183)
superficie <- c(120, 80, 100, 180, 190, 250, 99, 90, 60, 100, 110,
120, 180, 130, 90, 50, 60, 70, 120, 130)
antiguedad <-c(15, 20, 30, 15, 12, 40, 30, 27, 14, 20, 22, 25, 21, 33,
5, 12, 6, 10, 28, 30)
pisos <- data.frame(precio, superficie, antiguedad)
pisos
plot(pisos$precio,pisos$superficie)
reg_lin <- lm(precio ~ superficie, data = pisos)
reg_lin
summary(reg_lin)
cor(pisos$precio, pisos$superficie)
reg_lin2 <- lm(ventas ~ 0 + tv, data = cereales)
reg_lin2
cor(pisos$precio, pisos$superficie)
cor.test(pisos$precio, pisos$superficie)
reg_lin1 <- lm(precio ~ antiguedad, data = pisos)
reg_lin1
reg_lin_mul <- lm(precio ~ superficie + antiguedad, data = pisos)
reg_lin_mul
summary(reg_lin_mul)
reg_lin_mul2 <- lm(precio ~ superficie + antiguedad^2, data = pisos)
reg_lin_mul2
Práctica 4
DISTRIBUCIONES DE PROBABILIDAD:
BINOMIAL, POISSON Y NORMAL
Objetivos
• Seleccionar la distribución de probabilidad para modelizar un experimento
aleatorio
• Calcular probabilidades de las distribuciones Binomial, Poisson y Normal
• Calcular cuantiles
• Generar valores aleatorios de una distribución determinada.
Introducción
Una variable aleatoria se puede definirse, intuitivamente, como una cantidad cuyo
valor no es fijo pero puede tomar diferentes valores. La distribución de
probabilidad se utiliza para describir la probabilidad de que se den los diferentes
valores.
Es evidente que los posibles valores que puede tomar la variable aleatoria (o, lo que
es lo mismo, el número de ensayos exitosos de los que se realizan) son los valores
comprendidos entre 0 y n.
donde:
Supuesto Práctico 1
Se ha comprobado que la probabilidad de que se funda la lámpara de un
televisor en un mes es 0.02. Si el televisor tiene 5 años. Se pide:
E[X] = np = 60×0.02 = 12
σ² = npq = 60×0.02×0.98 = 1.176
c) Calcular la probabilidad de que no haya ninguna rotura
En este apartado nos piden la probabilidad de que la variable aleatoria tome,
exactamente, un valor o, lo que es lo mismo, el valor de la función masa de
probabilidad evaluada en el punto xi = 0. Debemos, por tanto, calcular P[X=0]. Para
ello, utilizaremos la función dbinom del siguiente modo
> dbinom(0, 60, 0.02)
[1] 0.2975531
Nota: Dado el carácter aleatorio de los valores generados en este apartado, dichos
valores pueden no coincidir con los que se obtengan a través de otra llamada a la
función rbinom.
Solución
Supuesto Pr�ctico 1
Distribución de Poisson
La distribución de Poisson es una distribución de probabilidad discreta que sirve
para modelizar la probabilidad de que ocurra un determinado número de eventos
durante cierto período de tiempo. A modo de ejemplo, la distribución de Poisson se
utiliza frecuentemente para contar el número de llamadas que una centralita
telefónica recibe por unidad de tiempo o el número de clientes que llegan a un
determinado establecimiento en un período de tiempo dado.
dond:
donde:
donde:
donde:
Supuesto Práctico 2
El número medio de enfermos recibidos cada 10 minutos en un centro
sanitario entre las 10 horas y las 15 horas es 1.8. Suponiendo que dicho
número de enfermos sigue una distribución de Poisson. Se pide:
a) Definir una variable aleatoria que cuente el número de enfermos recibidos
cada 10 minutos e identificar la distribución de probabilidad que sigue esta
variable aleatoria
P[X = 2] = 0.2677842
b3) Más de 8 enfermos
La probabilidad que nos piden calcular en este caso es P[X ≥9] . Para
calcularla, expresamos una probabilidad del tipo ≥ en función de los valores de la
función de distribución de la variable. Para ello, tendremos en cuenta que
P[X ≥ 9] = 1 – P[X ≤ 8] = 1 – F(8)
De manera que para calcular P[X ≥ 9] únicamente necesitamos calcular el valor de
la función de distribución de la variable evaluada en el punto 8, para lo cual
utilizaremos la función ppois.
> 1 – ppois(8, 9)
[1] 0.5443474
Por tanto, necesitamos obtener, y después sumar, los valores de la función masa de
probabilidad de la variable evaluada en los puntos 8, 9, 10,…, 15. De esta forma hay
demasiados sumandos
dpois (8, 1.8) + dpois (9, 1.8) +…+ dpois (15, 1.8)
Esta estrategia sólo tiene cabida cuando el intervalo para el cual queremos calcular
su probabilidad es relativamente estrecho y está compuesto por pocos valores. En
cualquier otro caso, debemos utilizar un enfoque distinto, basado en la función de
distribución.
Distribución Normal
La distribución Normal es la más importante y de mayor uso de las distribuciones
continuas, debido a la gran cantidad de fenómenos aleatorios que modeliza. Esta
distribución también se conoce como gaussiana o de Gauss, en honor a su
descubridor. La distribución Normal viene identificada por dos parámetros, μ y σ,
que coinciden con la media y la desviación típica de la distribución. Cuando una
variable aleatoria, X , siga una distribución normal lo notaremos X → N(μ, σ)
La función de densidad de probabilidad, función de densidad, o,
simplemente, densidad de una variable aleatoria continua es una función,
usualmente denominada \(f(x)\) que describe la densidad de la probabilidad en
cada punto del espacio de tal manera que la probabilidad de que la variable aleatoria
tome un valor dentro de un determinado conjunto sea la integral de la función de
densidad sobre dicho conjunto(
El tratamiento computacional con R y RStudio de la distribución Normal en
particular, y de cualquier distribución de probabilidad continua en general, es
similar al que se utiliza con las distribuciones discretas. La principal salvedad se
encuentra en la función dnorm. Esta función es la equivalente para la distribución
normal a dbinom y dpois en las distribuciones binomal y de Poisson,
respectivamente. Recordemos que las funciones, dbinom y dpois devuelven la
probabilidad puntual para cada uno de los valores posibles que puede tomar una
variable con distribución binomial y de Poisson, respectivamente. Pero el cálculo de
probabilidades en valores concretos en una distribución continua no tiene sentido,
ya que dicha probabilidad vale 0. Por todo ello, dnorm devuelve el valor de la
función de densidad en un punto (o puntos) determinado. Veamos cuáles son los
argumentos de esta función:
dnorm(x, mean = 0, sd = 1)
siendo:
siendo:
Supuesto Práctico 3
En unos estudios realizados a un determinado tipo de aves rapaces. Se
comprueba que la longitud de las alas extendidas, X, es una variable aleatoria
que se distribuye aproximadamente según una curva Normal, de media 110
cm. y desviación típica 4 cm. Elegida un ave al azar y suponiendo que las
longitudes se distribuyen normalmente, calcular:
a) La probabilidad de que la longitud de las alas esté comprendida entre 110
y 115 cm.
b) La probabilidad de que la longitud de las alas sea mayor que 105 cm.
c) La probabilidad de que la longitud de las alas sea menor de 100 cm.
d) La longitud mínima del 20% de las alas que más miden
e) Quince longitudes aleatorias que sigan dicha distribución.
Solución
En primer lugar, vamos a definir la variable aleatoria X. Por el enunciado del
problema, sabemos que X → N(110, 4)
a) La probabilidad de que la longitud de las alas esté comprendida entre 110
y 115 cm.
En este primer apartado, nos piden calcular P[110 ≤ X ≤ 115] . Esta probabilidad
puede reescribirse como
P[110 ≤ X ≤ 115] = P[X ≤ 115] – P[ X ≤ 110] = F(115) – F(110)
es decir, como una diferencia de valores de la función de distribución de la variable.
Vamos a utilizar la función pnorm para obtener estos valores, de manera que la
diferencia entre ambos nos dará la probabilidad que buscamos.
> pnorm(c(115, 110), mean = 110, sd = 4)
[1] 0.8943502 0.5000000
> 0.8943502 – 0.5000000
[1] 0.3943502
La probabilidad de que la longitud de las alas sea mayor que 105 cm. es 0.8943502.
Gráfico 1:
Representación del percentil 80 en la recta real
Suponiendo que la recta azul representa los valores de la variable ordenados de
menos a mayor, buscamos el 20% de los valores más grandes de la variable (que
estarán situados a la derecha). El mínimo de estos valores (representado con un
punto rojo) será aquel valor que deje a su derecha el 20% de las observaciones. Pero
este punto será también aquel que deja a su izquierda el 80% de las observaciones
restantes. Por tanto, el valor que debemos calcular es el percentil 80. Utilizaremos
para ello la función qnorm.
> qnorm(0.8, mean = 110, sd = 4)
[1] 113.3665
Ejercicios
Ejercicios Guiados
Ejercicio Guiado1
Por larga experiencia se ha determinado que la meningitis por salmonelas,
enfermedad rara, pero muy grave de los lactantes, produce una mortalidad
del 60%. Durante un brote epidémico en una gran ciudad, en un hospital de
dicha ciudad, ingresaron 16 niños lactantes atacados por la enfermedad. Se
pide:
a) Definir una variable aleatoria que cuente el número de supervivientes que
ingresan en el hospital con la enfermedad e identificar la distribución de
probabilidad que sigue esta variable aleatoria
b) Probabilidad de que sobrevivan todos los pacientes
c) Probabilidad de que sobrevivan más de la mitad de los pacientes
d) Probabilidad de que mueran todos los pacientes
e) Probabilidad de que más de dos pacientes sobrevivan
f) Probabilidad de que el número de sobrevivientes esté comprendido entre
6 y 10 pacientes, incluidos estos extremos
g) Generar una muestra aleatoria con 10 de valores de esta distribución.
Ejercicio Guiado2
Solución:
a) Definir una variable aleatoria que cuente el número de supervivientes que
ingresan en el hospital con la enfermedad e identificar la distribución de
probabilidad que sigue esta variable aleatoria
Definimos la variable aleatoria X = “Nº de pacientes que sobreviven”
Esta variable aleatoria tiene una distribución Binomial de parámetros n = 16 y p =
0.4. (X → B (16, 0.4))
b) Probabilidad de que sobrevivan todos los pacientes
Solución:
a) Definir una variable aleatoria que cuente el número de virus en la solución
e identificar la distribución de probabilidad que sigue esta variable aleatoria
Definimos la variable aleatoria X = “Nº de virus por bacterias en la solución”
Los virus se distribuyen al azar entre las bacterias. La distribución del número de
virus por bacterias es una distribución de Poisson de media λ = (6×106) ⁄(3×106)=
2. X → P(2)
b) Probabilidad de que las bacterias no estén afectas por el virus
Hay que calcular la probabilidad de que la variable aleatoria X tome el valor 0
P[No afectadas por el virus] = P[X = 0]
Es decir, el valor de la función masa de probabilidad de la variable aleatoria X en el
punto 0. Para ello, vamos a utilizar la función dpois
> dpois(0, 2)
[1] 0.1353353
P[No afectadas por el viru] = P[X = 0] = 0.1353353
c) Probabilidad de que las bacterias estén afectas por el virus
P[Afectadas por el viru] = 1 – P[No afectadas por el viru] = 1 – P[X = 0]
> 1 – dpois(0, 2)
[1] 0.8646647
[1] 0.5939942
o bien
P[Lleguen menos de cinco pacientes en una hora] = P[X < 5] = P[X ≤ 4] = P[X = 0]
+ P[X = 1] + P[X = 2] + P[X = 3] + P[X = 4]
Es decir, el valor de la función masa de probabilidad de la variable aleatoria X en los
puntos: 0, 1, 2, 3 y 4. Para ello, vamos a utilizar la función dpois
> dpois (0, 10) + dpois (1, 10) + dpois (2, 10) + dpois (3, 10) + + dpois (4, 10)
[1] 0.02925269
P[X = 2] = 0.2706706
f) Probabilidad de que las bacterias tengan más de cuatro y menos de 8 virus
fijados en ellas
P[más de cuatro y menos de ocho virus] = P[4 < X < 8] = P[X < 8] – P[X ≤ 4] = P[X
≤ 7] – P[X ≤ 4] = F(7) – F(4)
Hemos expresado la función masa de probabilidad en función de la función de
distribución de la variable evaluada en los puntos 7 y 4. Para resolverlo utilizamos
la función ppois
> ppois(c(4, 7), 2)
[1] 0.9473470 0.9989033
> 0.9989033 – 0.9473470
[1] 0.0515563
Solución
a) Definir una variable aleatoria que cuente el número de supervivientes que
ingresan en el hospital con la enfermedad e identificar la distribución de
probabilidad que sigue esta variable aleatoria
Se define la variable, X = “Concentración en plomo de un individuo”. Esta variable
tiene distribución Normal con media 0.25 y desviación típica 0.11; X → N(0.25, 0.11)
b) Una concentración superior o igual a 0.6 partes por millón se considera
extremadamente alta ¿Cuál es la probabilidad de que un individuo
seleccionado al azar esté incluido en esa categoría?a)
P[ X ≥ 0.6 ] = 1 – P[X ≤ 0.6] = 1 – F(0.6)
Calculamos la probabilidad pedida utilizando la función de distribución. Usamos la
función pnorm
> 1 – pnorm(0.6, mean = 0.25, sd = 0.11)
[1] 0.0007317683
Por lo tanto, P[Niveles comprendidos entre 0.3 y 0.7] = P[0.3 ≤ X ≤ 0.7] = P[X ≤
0.7] – P[X ≤ 0.3] = 0.3246966
e) Determinar la concentración mínima del 30% de los individuos con más
concentración
Se pide calcular un valor de la distribución de X, tal que P[X < x] = 0.30
El valor que tenemos que calcular es el cuantil 25. Utilizamos la función qnorm.
> qnorm(0.30, mean = 0.25, sd = 0.11)
[1] 0.1923159
Ejercicios Propuestos
Ejercicio Propuesto 1
El delegado de una casa dedicada a la fabricación de calculadoras, vende el
mismo días 5 calculadoras iguales a distintas empresas de una misma
localidad. La probabilidad de que este tipo de calculadoras estén en
funcionamiento 3 años después es 0.8. Calcular las siguientes probabilidades.
a) Las cinco calculadoras estén fuera de servicio 3 años más tarde
b) Las cinco calculadoras estén en servicio 3 años más tarde
c) Dos calculadoras a lo sumo estén fuera de servicio
d) No más de tres calculadoras a lo sumo estén fuera de servicio
e) Entre 1 y 4 calculadoras estén fuera de servicio
f) Generar una muestra aleatoria de tamaño 8 del número de calculadoras en
funcionamiento.
Ejercicio Propuesto 2
El número de capturas diarias de loros en la cuenca del Amazonas para su
utilización como animales domésticos sigue una distribución de Poisson de
parámetro 5. Calcular las siguientes probabilidades:
a) No se produzcan más de cuatro capturas en un día
Ejercicio Propuesto 3
Se observó que el número de glóbulos rojos (en millones por microlitro) de un
grupo de individuos sigue una distribución Normal de media 4.5 y desviación
típica 0.5. Se pide:
a) La probabilidad de que una persona tenga más de 4.85
b) La probabilidad de que una persona tenga menos de 4.85
c) La probabilidad de que una persona tenga entre 4.25 y 4.75
Ejercicio Propuesto 4
La cantidad de radiación que puede ser absorbida por un individuo antes de
que le sobrevenga la muerte tiene una media de 500 roentgen y una
desviación típica de 150 roentgen. Supongamos que la distribución de la
cantidad de radiación sigue una ley Normal. Se pide:
a) ¿Cuál es la probabilidad de que la cantidad de radiación sea superior a
600 roentgen?
b) ¿Cuál es la probabilidad de que la cantidad de radiación esté entre
650 roentgen y 750 roentgen?
c) ¿Cuál es el porcentaje de supervivientes para un nivel de radiación de
800 roentgen?
d) ¿Por encima de qué nivel de dosificación sobrevivirían solamente el 5% de
los expuestos?
Solución:
Se define la variable, X = “Número de capturas diarias de loros” X → P(5)
a) No se produzcan más de cuatro capturas en un día
P[X ≤ 4] = 0.4404933
b) Se produzcan al menos cuatro capturas en un día
P[X ≥ 4] = 0.5595067
c) Se produzcan menos de cuatro capturas en un día
P [X < 4] = 0.2650259
d) Calcular la mediana de la variable aleatoria
La mediana es 5
e) En una semana no se produzcan más de cuatro capturas ningún día
Y = “Número de capturas en los 7 días de la semana donde no se producen más
de 4 capturas” Y → B(7, 0.4405)
P[Y = 7] = 0.003218262
f) Generar una muestra aleatoria de tamaño 8 del número de capturas
diarias de loros.
Solución:
a) La probabilidad de que una persona tenga más de 4.85
P[X > 4.85] = 0.2419637
b) La probabilidad de que una persona tenga menos de 4.85
P[X < 4.85] = 0.7580363
c) La probabilidad de que una persona tenga entre 4.25 y 4.75
P[4.25 ≤ X ≤ 4.75] = 0.382925
d) Los cuartiles de la distribución
los tres cuartiles de esta distribución son 4.162755, 4.500000, 4.837245
e) Si se desea estudiar los hábitos alimenticios del 20% de personas con
mayor número de glóbulos rojos ¿Cuál es el número mínimo de glóbulos
rojos de dichas personas?
El número mínimo pedido es : 4.920811
e) Una muestra aleatoria de 20 valores de la distribución.
Para obtener una muestra de 20 valores aleatorios de la distribución normal
utilizamos la función rnorm
Solución del Ejercicio Propuesto 3
1 - pnorm(4.85, mean = 4.5, sd = 0.5)
pnorm(4.85, mean = 4.5, sd = 0.5)
pnorm(c(4.75, 4.25), mean = 4.5, sd = 0.5)
0.6914625 - 0.3085375
qnorm(c(0.25, 0.5, 0.75), mean = 4.5, sd = 0.5)
qnorm(0.8, mean = 4.5, sd = 0.5)
rnorm(10, mean = 4.5, sd = 0.5)
Solución:
X → N(500, 150)
a) ¿Cuál es la probabilidad de que la cantidad de radiación sea superior a
600 roentgen?
P[X > 600] = 0.2524925
b) ¿Cuál es la probabilidad de que la cantidad de radiación esté entre
650 roentgen y 750 roentgen?
P[Un ave presente un nivel de mercurio en sangre superior a 0.40 ppm] = P[X > 0.40] = 1 – P[X
≤ 0.40] = 1- F(0.40)
b) ¿Cuál es la probabilidad de que un ave tenga un nivel de mercurio en sangre entre 0.20
y 0.50 ppm?
P[Un ave tenga un nivel de mercurio en sangre entre 0.20 y 0.50 ppm] = P[0.20 < X < 0.50] =
P[X < 0.50] – P[X ≤ 0.20] = F(0.50) – F( 0.20)
c) ¿Cuál es el nivel máximo de concentración de mercurio en sangre del 40% de las aves
menos contaminadas?
Se pide calcular el percentil 40 de la distribución, es decir, calcular P40, tal que P[X < P40] = 0.40.
Práctica 5
INTERVALOS DE CONFIANZA
Objetivos
• Calcular e interpretar intervalos de confianza para la media en una población
Normal con varianza conocida
• Calcular e interpretar intervalos de confianza para la media en una población
Normal con varianza desconocida
• Calcular e interpretar intervalos de confianza para la proporción
• Calcular e interpretar intervalos de confianza para la diferencia de medias en dos
poblaciones normales independientes con varianzas desconocidas, pero supuestas
iguales en las dos poblaciones
• Calcular e interpretar intervalos de confianza para la diferencia de medias en dos
poblaciones normales independientes con varianzas desconocidas, pero supuestas
iguales
• Calcular e interpretar intervalos de confianza para la diferencia de medias en dos
poblaciones normales relacionadas
• Calcular e interpretar intervalos de confianza para la diferencia de proporciones.
Introducción
El objetivo de la estimación mediante intervalos de confianza o estimación
confidencial es la determinación de dos valores, θ*1 y θ*2, que verifiquen θ* 1 < θ*2,
tales que, al constituirse en intervalo [θ*1, θ*2] contengan, con una probabilidad
prefijada, el verdadero valor del parámetro que deseamos estimar. De forma gráfica,
un intervalo de confianza puede representarse del siguiente modo:
de contener al parámetro
poblacional θ
Figura 1:
Representación gráfica de un I.C.
donde
que sigue una distribución normal de media 0 y desviación típica 1. Buscamos los
cuantiles de esta distribución tales que
𝑋̅ − 𝜇
𝑃 [−𝑧1−𝛼/2 ≤ ≤ 𝑧1−𝛼/2 ] = 1 − 𝛼
𝜎/√𝑛
O, equivalentemente,
𝜎 𝜎
[𝑋̅ − 𝑧1−𝛼/2 , 𝑋̅ + 𝑧1−𝛼/2 ]
√𝑛 √𝑛
Nota: R y RStudio no incluyen una función específica para el cálculo de este tipo de
intervalos de confianza . Aun así, pueden calcularse de una forma muy sencilla
como se muestra en el siguiente ejemplo.
Supuesto Práctico 1
De una cierta población se ha extraído una muestra de 64 individuos, cuyo
valor medio es 1012. Se sabe por otras experiencias del mismo tipo, que la
desviación típica vale 25. Hallar intervalos de confianza para el valor medio
de la población a los niveles de confianza del 0.95 y 0.99.
Solución
Iniciamos un nuevo Script en RStudio donde introducimos los datos relativos a la
media, varianza, tamaño muestral y nivel de significación que proporciona el
enunciado.
> alpha<- 0.05
> n = 64
> varianza <- 625
> media <- 1012
> cuantil<- qnorm(1 – alpha/2)
Una vez introducidos los datos del enunciado, pasamos a calcular los extremos
inferior y superior del intervalo de acuerdo a la expresión que se vio
anteriormente:
Por lo tanto, el intervalo de confianza que debemos calcular es
𝜎 𝜎
[𝑋̅ − 𝑧1−𝛼/2 , 𝑋̅ + 𝑧1−𝛼/2 ]
√𝑛 √𝑛
Para el nivel de confianza del 0.99, lo único que tenemos que cambiar es el valor de
α
alpha<- 0.01
cuantil<- qnorm(1 - alpha/2)
lim_inf<-media - cuantil * sqrt(varianza) / sqrt(n)
lim_inf
donde
>alpha<-0.02
>n=9
>cuasi<-2.45
> media <- 21
La función que devuelve resultados de los cuantiles de la t-Student es:
qt(p, df, ncp, lower.tail = T)
donde:
• p: Vector de probabilidades
• df: Grados de libertad
• lower.tail: Parámetro booleano, si es TRUE (por defecto), las probabilidades son
P[X ≤ x], de lo contrario, P [X > x].
> cuantil<- qt((1 – alpha/2), 8, lower.tail = T)
> lim_inf<-media – cuantil * cuasi / sqrt(n)
> lim_inf
[1] 18.63456
> lim_sup<- media + cuantil * cuasi / sqrt(n)
> lim_sup
[1] 23.36544
P[18.63456 ≤ μ ≤ 23.36544] = 0.98
Por lo tanto, hay un 98% de confianza de que el intervalo
[18.63456, 23.36544] contenga el contenido medio en vitamina C del jugo de
tomate.
Supongamos el mismo ejemplo pero en el caso de disponer de los datos de los
9 preparados en contenido de vitamina C del jugo de tomate. Los datos se
muestran en el fichero tomate.txt
Contenido
24
20
21
19
22
23
16
23
21
Solución
En primer lugar nos situamos en el directorio de trabajo
> setwd(“F:/Desktop/EJEMPLOSRS5”)
> datos1 <- read.table(“tomate.txt”, header = TRUE)
> datos1
Contenido
1 24
2 20
3 21
4 19
5 22
6 23
7 16
8 23
9 21
Partiendo del conjunto de datos del Supuesto Práctico 2, el cual se había importado
y almacenado en una variable de nombre datos1, vamos a calcular el intervalo de
confianza que nos piden. Para ello, basta con realizar la siguiente llamada a la
función t.test
>t.test(datos1$Contenido, conf.level = 0.98)
data: datos1$Contenido
t = 25.72, df = 8, p-value = 5.601e-09
alternative hypothesis: true mean is not equal to 0
98 percent confidence interval:
18.63505 23.36495
sample estimates:
mean of x
21
De toda la información que devuelve la función t.test, sólo nos interesa la relativa al
intervalo de confianza. El resto hace referencia a los contrastes de hipótesis que,
como hemos comentado, se estudiarán en la práctica 6.
98 percentconfidenceinterval:
18.63505 23.36495
Por lo tanto, el intervalo de confianza para el contenido medio en vitamina C en el
jugo de tomate a un nivel de confianza del 98% es ( 18.63505 23.36495).
Intervalo de confianza para la proporción
Dada una variable aleatoria X con distribución de probabilidad binomial de
parámetros n y π, esto es, X→ B(n, π); con π desconocido. El objetivo es determinar
un intervalo de confianza para el parámetro π. Para ello, se extrae una muestra
aleatoria X1, X2, …, Xn de tamaño n de de dicha distribución. Sea p la proporción
muestral. Entonces, se sabe que el estadístico
Figura 10: Expresión de la variable aleatoria
sigue una distribución normal de media 0 y desviación típica 1. Por ello, calcular el
intervalo de confianza para la proporción consiste en obtener los cuantiles de la
distribución normal tales que
O, equivalentemente,
Figura 12:
Obtención del cuantil z{1 – α/2}
donde
• x: Valor numérico que indica el número de elementos del grupo que presentan la
característica de interés.
• n: Valor numérico que indica el número total de elementos del grupo.
• conf.level: Valor numérico que indica el nivel de confianza, en tanto por uno, al que
se construirá el intervalo. Si omitimos este parámetro en la llamada a la función, los
intervalos de confianza se calculan a un nivel de confianza del 95%.
Vamos a aplicar la función prop.test a los datos sobre las flexiones realizadas por
los alumnos que hemos utilizado en los ejemplos anteriores.
Supuesto Práctico 3
En una muestra de 900 personas con pelo oscuro se encontró que 150 de ellas
tenían los ojos azules. Construir un intervalo de confianza al 95% para la
proporción de individuos que teniendo el pelo oscuro posee los ajos azules.
¿Son compatibles estos resultados con la suposición de que dicha proporción
vale 1/4?
Solución
Para el cálculo del intervalo de confianza utilizamos la función prop.test
De las 900 personas que conforman la muestra, 150 tienen los ojos azules. Por lo
que la llamada a prop.test sería la siguiente:
>prop.test(150,900)
1-sample proportions test with continuity correction
data: 150 out of 900, null probability 0.5
X-squared = 398.67, df = 1, p-value < 2.2e-16
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.1432251 0.1930061
sample estimates:
p
0.1666667
Como el nivel de confianza para este intervalo es el 95% no ha sido necesario incluir
el argumento conf.level en la llamada aprop.test, puesto que este es el nivel de
confianza por defecto.
95 percentconfidenceinterval:
0.1432251 0.1930061
Por lo que el intervalo de confianza, a un nivel de confianza del 95% para la
proporción de personas con los ojos azules en la población es (0.1432251
0.1930061).
Este resultado no es compatible la suposición de que dicha proporción vale
1/4, ya que 1/4 no pertenece al intervalo (0.1432251 0.1930061).
Resolvamos este ejercicio utilizando la expresión del intervalo de confianza
para la proporción
[1] 0.1423188
> lim_sup<-p + cuantil * sqrt (p*(1 – p)) / sqrt (n)
> lim_sup
[1] 0.1910145
Intervalo de confianza para la diferencia de medias
en dos poblaciones normales independientes
Consideramos dos variables aleatorias independientes X1 y X2 con distribuciones
normales de parámetros (μ1, σ1) y (μ2, σ2), respectivamente, de las que vamos a
tomar muestras aleatorias independientes de tamaños n1 y n2, respectivamente.
Nuestro objetivo, en este caso, es obtener un intervalo de confianza para la
diferencia de las medias de ambas distribuciones, es decir, para μ1 – μ2. Pero previo
al cálculo de este intervalo, debemos determinar si las varianzas de ambas
distribuciones o, equivalentemente, sus desviaciones típicas, σ1 y σ2, aun siendo
desconocidas, pueden asumirse iguales o no. El cálculo del intervalo de confianza se
realiza de forma diferente dependiendo de este aspecto.
Para decidir si las varianzas de las dos distribuciones pueden asumirse iguales o no
construiremos un intervalo de confianza para el cociente de ambos valores, esto es,
para σ21 /σ22. En este caso, partimos de la variable aleatoria
Figura 15:
Obtención de los cuantiles F{ α/2} y F{1 – α/2}
O, equivalentemente,
Figura 16:
Obtención de los cuantiles F{ α/2} y F{1 – α/2}
siendo
Supuesto Práctico 4
La siguiente tabla proporciona datos sobre la precipitación total registrada en
11 estaciones meteorológicas de dos provincias españolas. Suponiendo
independencia y normalidad. Calcular un intervalo de confianza a un nivel de
confianza del 80% para el cociente de varianzas en ambas poblaciones.
¿Puede asumirse que ambas varianzas son iguales?
En este caso:
Supuesto Práctico 5
En vista de los resultados obtenidos en el supuesto práctico 4, y suponiendo
que las precipitaciones registradas en 11 estaciones meteorológicas de dos
provincias españolas se distribuyen de acuerdo a variables normales de
medias y varianzas desconocidas. Obtener un intervalo de confianza al 80%
para la diferencia del número medio de precipitaciones entre las dos
provincias. ¿Puede suponerse que el número medio de precipitaciones de las
dos provincias es igual?
Solución
Dado que en el supuesto práctico 4 se concluyó la igualdad de las varianzas del
número de precipitaciones entre las dos provincias, debemos establecer a TRUE el
valor del parámetro var.equal cuando realicemos la llamada a la función t.test.
> Prov_A <- c(100, 89, 84, 120, 130, 105, 60, 70, 90, 108, 130)
> Prov_B <- c(120, 115, 96, 115, 140, 120, 75, 90, 108, 130, 135)
> t.test(Prov_A, Prov_B, conf.level = 0.80, var.equal = TRUE)
Two Sample t-test
data: Prov_A and Prov_B
t = -1.5755, df = 20, p-value = 0.1308
alternative hypothesis: true difference in means is not equal to 0
80 percent confidence interval:
-26.446718 -2.280555
sample estimates:
mean of x mean of y
98.72727 113.09091
Tabla 2:
Tabla de datos del supuesto práctico 6
Solución
Como puede observarse, los datos vienen por parejas: producción antes y después
(dos datos por árbol). Parece lógico que los datos se encuentren relacionados entre
sí.
En primer lugar, vamos a introducir los datos en el Script de RStudio. Para ello
definimos dos vectores
> Antes <- c(25, 20, 25, 28, 30, 30, 26, 15, 18, 22)
> Despues <- c(30, 25, 28, 29, 30, 31, 24, 22, 25, 27)
A partir de estos datos, vamos a aplicar la función t.test, para obtener el intervalo de
confianza que buscamos.
>t.test(Antes, Despues, paired = TRUE, conf.level = 0.99)
Paired t-test
data: Antes and Despues
t = -3.2812, df = 9, p-value = 0.009511
alternative hypothesis: true difference in means is not equal to 0
99 percent confidence interval:
-6.36939969 -0.03060031
sample estimates:
mean of the differences
-3.2
O, lo que es lo mismo
Figura 27: Obtención del cuantil z{1 – α/2}
donde:
Supuesto Práctico 7
Se realiza un estudio sobre en un grupo de personas de las que se les anota el
número de Km en una caminata, el sexo y si hacen o no deporte. Para realizar
dicho estudio se toma una muestra de 55 personas. Calcular un intervalo de
confianza al 92% para la diferencia entre la proporción de hombres y de
mujeres que practican deporte ¿Puede considerarse que ambas proporciones
son iguales? Los datos correspondientes están en el fichero supuesto7.txt
Km Sexo Deporte
10 H 0
21 H 0
13 M 1
3 M 0
11 H 0
26 H 0
10 H 0
3 M 1
5 M 1
8 M 0
6 M 1
28 M 1
16 H 0
12 M 1
14 M 0
10 H 1
10 H 0
4 H 0
12 H 1
18 H 0
13 H 1
11 M 1
21 M 1
22 M 1
16 M 1
12 M 1
6 M 0
14 H 1
13 H 0
9 M 0
7 H 0
11 M 1
18 M 0
10 H 1
11 M 1
9 H 0
7 M 0
12 H 0
15 H 0
14 M 0
26 M 1
18 H 0
10 M 0
53 H 0
52 H 0
50 H 0
52 H 0
48 H 1
46 H 1
53 H 0
50 H 0
35 H 0
50 H 1
60 M 1
50 H 0
Solución
En primer lugar, nos situamos en el directorio de trabajo
> setwd(“F:/Desktop/EJEMPLOSRS5”)
A continuación, sino tenemos importado el fichero de datos, debemos importarlo.
Para ello, utilizamos la orden read.table
> datos <- read.table(“supuesto7.txt”, header = TRUE)
> datos
Km Sexo Deporte
1 10 H 0
2 21 H 0
3 13 M 1
4 3 M 0
5 11 H 0
6 26 H 0
7 10 H 0
8 3 M 1
9 5 M 1
10 8 M 0
11 6 M 1
12 28 M 1
13 16 H 0
14 12 M 1
15 14 M 0
16 10 H 1
………………………….
Una vez importado el fichero de datos, utilizamos el comando table para determinar
cuántos hombres y cuantas mujeres practican deporte.
> table(datos$Sexo, datos$Deporte)
0 1
H 23 8
M 9 15
En total, 8 de los 31 hombres y 15 de las 24 mujeres muestreados practican
deporte. Vamos a crear dos vectores con esta información:
• vector_Deport: Total de hombres y mujeres que practican deporte
• vector_Sexo:Total de hombres y mujeres en la muestra.
> vector_Deporte<- c(8, 15)
> vector_Deporte
[1] 8 15
Es muy importante que los valores se introduzcan en el mismo orden en los dos
vectores. A continuación podemos utilizar la función prop.test con estos dos
vectores como argumentos.
Ejercicios
Ejercicios Guiados
Ejercicio Guiado1
La concentración media de dióxido de carbono en el aire en una cierta zona no
es habitualmente mayor que 335 ppmv (partes por millon en volumen).
Se sospecha que esta concentración es mayor en la capa de aire más próxima
a la superficie. Se ha analizado el aire en 20 puntos elegidos aleatoriamente a
una misma altura cerca del suelo, resultando los siguientes datos: 332, 320,
312, 270, 330, 354, 356, 310, 341, 313, 223, 224, 305, 321, 325, 333, 332, 345,
312, 331.
Construir un intervalo de confianza al 98% de confianza:
a) Si la concentración de dióxido de carbono se distribuye según una Normal
de desviación típica σ = 120 ppmv
b) Si la concentración de dióxido de carbono se distribuye según una Normal
de desviación típica desconocida.
Ejercicio Guiado 2
Con el fin de estudiar el efecto de los rayos X sobre la viabilidad huevo-larva
en Tribolium casteneum, se irradiaron 1000 huevos de los que resultaron 572
larvas. Calcular un intervalo de confianza para la proporción de larvas en
huevos irradiados al nivel de confianza del 95%.
Ejercicio Guiado 3
Para realizar un estudio de la concentración de una hormona en una solución
vamos a utilizar dos métodos. Disponemos de 10 dosis preparadas en el
laboratorio y medimos la concentración de cada una con los dos métodos. Se
obtienen los siguientes resultados:
Suponiendo normalidad e independencia. Se pide:
a) Calcular un intervalo de confianza al nivel 0.9 para el cociente de varianzas
b) Calcular un intervalo de confianza al nivel 0.9 para la diferencia de
concentraciones medias.
Tabla 3: Datos del Ejercicio guiado 3
Ejercicio Guiado 4
En una unidad del sueño se está probando con un nuevo somnífero. Para
comprobar su eficacia se toman 10 individuos al azar, un día no se les
suministra el somnífero y se les comprueba el número de horas de sueño, al
día siguiente se les suministra y se vuelve a comprobar las horas de sueño. Los
resultados entes y después del tratamiento han sido los siguientes:
Ejercicio Guiado 5
Unos estudios sobre las ranas tigres en dos regiones de Méjico tienen como
objetivo comparar las proporciones de dichas ranas en cada una de las
regiones. Para ello se toma una muestra al azar de 100 ranas observando que
5 son ranas tigres en la zona A, mientras que de una muestra de 150 ranas en
la zona B, 9 son ranas tigres. Construir un intervalo de confianza al 95% y al
98% para la diferencia entre las verdaderas proporciones de ranas tigres en
la dos regiones. ¿Puede suponerse que la proporción de ranas tigres es igual
en ambas regiones?
Ejercicio Guiado 6
Solución:
En primer lugar, introducimos, en un vector, los datos de las 20 concentraciones
observadas y en segundo lugar introducimos el dato relativo al nivel de significación
>concentraciones<- c(332, 320, 312, 270, 330, 354, 356, 310, 341, 313, 223,
224, 305, 321, 325, 333, 332, 345, 312, 331)
>alpha<- 0.05
a) Si la concentración de dióxido de carbono se distribuye según una Normal
de desviación típica σ = 120 ppmv
>desv_tipica<- 120
Solución:
Para obtener un intervalo de confianza para la proporción poblacional, se utiliza la
función prop.test. Disponemos tanto del número de huevos que presentan la
característica de interés (de los que resultaron larvas) como del número total de
huevos en la muestra, de manera que podemos realizar la llamada a la función tal y
como sigue:
>prop.test(572, 1000)
1-sample proportions test with continuity correction
data: 572 out of 1000, null probability 0.5
X-squared = 20.449, df = 1, p-value = 6.124e-06
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.5406126 0.6028273
sample estimates:
p
0.572
El intervalo de confianza para la proporción poblacional de huevos conformes al
95% de confianza es (0.5406126, 0.6028273).
Solución:
En primer lugar introducimos, en el Script de RStudio, en dos vectores los los
datos:
> MetodoA <- c(10.7, 11.2, 15.3, 14.9, 13.9, 15, 15.6, 15.7, 14.3, 10.8)
> MetodoB <- c(11.1, 11.4, 15, 15.1, 14.3, 15.4, 15.4, 16, 14.3, 11.2)
a) Calcular un intervalo de confianza al nivel 0.9 para el cociente de
varianzas
Para calcular el intervalo de confianza para el cociente de varianza utilizamos la
función var.test.
>var.test(MetodoA, MetodoB, conf.level = 0.90)
F test to compare two variances
> Antes <- c(7.3, 8.2, 6.3, 5.2, 6.9, 5.8, 5.3, 7.1, 6.9, 8.1)
> Despues<- c(8.2, 7.9, 6.4, 5.1, 7.1, 6.3, 5.9, 8.2, 7.1, 7.7)
Estos datos son un claro ejemplo de datos pareados, ya que a los mismos individuos
se les ha comprobado las horas de sueño antes y después del tratamiento. Por lo que
tenemos que obtener un intervalo de confianza para la diferencia de medias de dos
poblaciones normales relacionadas. Para ello, realizamos la llamada a la
función t.test, sin olvidar indicar mediante el parámetro paired la relación que
existe entre los conjuntos de datos.
>t.test(Antes, Despues, paired = TRUE, conf.level = 0.96)
Paired t-test
data: Antes and Despues
t = -1.7925, df = 9, p-value = 0.1066
alternative hypothesis: true difference in means is not equal to 0
96 percent confidence interval:
-0.65464846 0.09464846
sample estimates:
mean of the differences
-0.28
El intervalo de confianza, al 96% de confianza, para la diferencia del número medio
de horas de sueño antes y después del tratamiento es ( -
0.65464846 0.09464846). Este intervalo contiene al 0, por lo que podemos
concluir que el número de horas de sueño antes y después del tratamiento pueden
considerarse iguales, poniendo así en duda la efectividad del somnífero.
Solución:
En este caso debemos utilizar la función prop.test para calcular el intervalo de
confianza para la diferencia de proporciones. Pero primero, debemos crear un
vector que indique el número de ranas tigres en cada región así como un segundo
vector con el número total de ranas en cada región.
>ranastigres<- c(5, 9)
>ranas<- c(100, 150)
Una vez hecho esto, llamamos a la función prop.test, indicando el nivel de confianza
adecuado.
>prop.test(ranastigres, ranas)
2-sample test for equality of proportions with continuity correction
data: ranastigres out of ranas
X-squared = 0.0031527, df = 1, p-value = 0.9552
alternative hypothesis: two.sided
95 percent confidence interval:
-0.07550922 0.05550922
sample estimates:
prop 1 prop 2
0.05 0.06
Según los resultados que proporciona prop.test, el intervalo de confianza para la
diferencia de proporciones que buscamos es (-0.07550922, 0.05550922), que
contiene al 0, por lo que se puede afirmar que la proporción de ranas tigres es igual
en ambas regiones con una confianza del 95%.
> prop.test(ranastigres, ranas, conf.level = 0.98)
2-sample test for equality of proportions with continuity correction
data: ranastigres out of ranas
X-squared = 0.0031527, df = 1, p-value = 0.9552
alternative hypothesis: two.sided
98 percent confidence interval:
-0.08619733 0.06619733
sample estimates:
prop 1 prop 2
0.05 0.06
El intervalo de confianza al 98% es ( -0.08619733, 0.06619733), que como el caso
anterior contiene al cero y por lo tanto se se puede afirmar que la proporción de
ranas tigres es igual en ambas regiones con una confianza del 98%.
Solución:
a) Obtener estimaciones puntuales de la audiencia media y de la varianza
En primer lugar introducimos los datos en RStudio
> datos <- c(521, 742, 593, 635, 788, 717, 606, 639, 666, 624)
> datos
[1] 521 742 593 635 788 717 606 639 666 624
Ejercicios Propuestos
Ejercicio Propuesto 1
Una compañía contrata 10 tubos con filamentos del tipo A y 12 tubos con
filamentos del tipo B. Las duraciones medias observadas se muestran en la
siguiente tabla:
Tabla 5: Datos del Ejercicio propuesto 1
Obtener los siguientes intervalos de confianza a un nivel del 99%
a) Para la duración media de los tubos
a1) del tipo A si la desviación típica σ = 203.25
a2) del tipo B si la desviación típica σ = 272.56
b) Para la duración media de los tubos del tipo A y de los tubos del tipo B
c) Para la diferencia entre las duraciones medias de los tubos del tipo A y del
tipo B.
Ejercicio Propuesto 2
Tabla
6: Datos del Ejercicio propuesto 2
Obtener un intervalo de confianza al 98% para la diferencia de los tiempos
medios que tardan los sujetos sobre la cinta sin fin antes y después del
experimento.
Ejercicio Propuesto 3
En una piscifactoría hay una proporción desconocida de peces de una especie
A. Para obtener información sobre la proporción se sacan 145 peces de los
cuales 29 son del tipo A. Estimar dicha proporción mediante un intervalo de
confianza al nivel de confianza 0.95. ¿Son compatibles estos resultados con la
suposición de que dicha proporción vale 1/5?
Ejercicio Propuesto 4
Se estudian dos procedimientos de fabricación de pistones. Una muestra al
azar de 100 pistones producidos por el primer procedimiento contiene 5
defectuosos mientras que una muestra de 150 pistones fabricados con el
segundo procedimiento contiene 9 defectuosos. Construir un intervalo de
confianza al 99% para la diferencia entre las verdaderas proporciones de
defectuosos en los dos procedimientos.
Solución:
a) Obtener un intervalo de confianza a un nivel del 99%
a1) Para la duración media de los tubos del tipo A si la desviación típica σ =
203.25
a2) Para la duración medialos tubos del tipo B si la desviación típica σ =
272.56.
a1) El intervalo de confianza al 99% para la duración media de los tubos del tipo A
es (1202.243 1533.357).
a2) El intervalo de confianza al 99% para la duración media de los tubos del tipo B
es (1057.164, 1462.503).
b) Para la duración media de los tubos del tipo A y de los tubos del tipo B
Intervalo pedido para el tipo A: (1169.235, 1566.365)
Intervalo pedido para el tipo B: (1017.253, 1502.414)
c) Para la diferencia entre las duraciones medias de los tubos del tipo A y del
tipo B.
El intervalo de confianza resultante es (-183.0579, 398.9913), dicho intervalo
contiene al 0, por lo que podemos concluir que la duración de los filamentos del tipo
A y B es la misma.
Solución del Ejercicio propuesto 1
Solución:
En primer lugar introducimos los datos
> TipoA <- c(1614, 1094, 1293, 1643, 1466, 1270, 1340, 1380, 1081, 1497)
> TipoB <- c(1383, 1138, 1092, 1143, 1017, 1061, 1627, 1021, 1711, 1065, 1162, 1698)
Por lo que el intervalo de confianza al 99% para la duración media de los tubos del tipo
A es (1202.243 1533.357).
nB <- length(TipoB)
mediaB <- mean(TipoB)
alpha <- 0.01
cuantilB<- qnorm(1 - alpha/2)
desv_tipicaB<- 272.56
lim_infB<- mediaB - cuantilB * desv_tipicaB / sqrt(nB)
lim_supB<- mediaB + cuantilB * desv_tipicaB / sqrt(nB)
ICB <- c (lim_infB,lim_supB)
ICB
[1] 1057.164 1462.503
Por lo que el intervalo de confianza al 99% para la duración media de los tubos del tipo
B es (1057.164, 1462.503).
b) Para la duración media de los tubos del tipo A y de los tubos del tipo B
data: TipoA
t = 22.386, df = 9, p-value = 3.353e-09
alternative hypothesis: true mean is not equal to 0
99 percent confidence interval:
1169.235 1566.365
sample estimates:
mean of x
1367.8
data: TipoB
t = 16.13, df = 11, p-value = 5.294e-09
alternative hypothesis: true mean is not equal to 0
99 percent confidence interval:
1017.253 1502.414
sample estimates:
mean of x
1259.833
c) Para la diferencia entre las duraciones medias de los tubos del tipo A y del tipo B.
Para obtener un intervalo de confianza para la diferencia entre las duraciones medias de
los tubos del tipo A y B, primero debemos obtener un intervalo de confianza para el
cociente de las varianzas entre ambas duraciones, para saber si estas varianzas pueden
asumirse iguales o no. Para ello, empleamos la función var.test.
Teniendo en cuenta esta información, realizaremos una función a la llamada t.test para
obtener el intervalo de confianza para la diferencia de medias.
>t.test(TipoA, TipoB, var.equal = TRUE, conf.level = 0.99)
Two Sample t-test
Tabla
6: Datos del Ejercicio propuesto 2
Obtener un intervalo de confianza al 98% para la diferencia de los tiempos
medios que tardan los sujetos sobre la cinta sin fin antes y después del
experimento.
Solución:
El intervalo de confianza para la diferencia de los tiempos medios que tardan los
sujetos sobre la cinta sin fin antes y después del experimento, a un nivel del 98%,
es (1.092016, 3.167984). Como el intervalo de confianza no contiene el 0 podemos
deducir que existen diferencias significativas entre las medias. Se puede apreciar
que el tiempo que tardan en la cinta sin fin es menor después del tratamiento.
Solución del Ejercicio Propuesto 2
Solución:
El intervalo de confianza pedido es (0.1400633, 0.2762259). Este resultado si es
compatible con la suposición de que dicha proporción vale 1/5, ya que 1/5
pertenece al intervalo.
Solución del Ejercicio Propuesto 3
> prop.test(29,145)
1-sample proportions test with continuity correction
El intervalo de confianza para la proporción de peces del tipo A, a un nivel del 95%, es
(0.1400633, 0.2762259). Este resultado es compatible con la suposición de que dicha proporción
vale 1/5, ya que 1/5 pertenece al intervalo
Solución:
El intervalo de confianza para la diferencia de proporciones de los dos
procedimientos al 99% es (-0.09347518 0.07347518).
Solución del Ejercicio Propuesto 4
> defectuososAB<- c(5, 9)
> pistones<- c(100, 150)
> prop.test(defectuososAB, pistones, conf.level = 0.99)