Está en la página 1de 15

Grado en Enfermería – Prácticas con R

Práctica 1: Introducción a R, vectores y estadística descriptiva


1.1 Introducción a R

R es un lenguaje de programación y entorno computacional dedicado a la estadística.

Decimos que es un lenguaje de programación porque nos permite dar instrucciones, usando código,
a nuestros equipos de cómputo para que realicen tareas específicas.

Cuando instalamos R en nuestra computadora en realidad lo que estamos instalando es el entorno


computacional, y para que podamos hacer algo en ese entorno necesitamos conocer la manera de
escribir instrucciones que el software pueda interpretar y ejecutar. Eso es lo que aprenderemos a
hacer en este curso.

La manera de instalar R cambia dependiendo del sistema operativo. El sitio oficial de CRAN, en el
que encontrarás más información sobre este repositorio es el siguiente:

 https://cran.r-project.org/

Consola de R: Lo primero que nos encontramos al ejecutar R es una pantalla que nos muestra la
versión de este lenguaje que estamos ejecutando y un prompt:
>_

Esta es la consola de R y corresponde al entorno computacional de este lenguaje. Es aquí donde nuestro
código es interpretado. Podemos escribir código directamente en la consola y R nos dará el resultado
de lo pidamos allí mismo.

El entorno R ofrece ayuda al usuario mediante el menú Ayuda en la barra de la ventana R Console o
en otras ventanas específicas. También se puede buscar ayuda mediante comandos:
?help
help(package="readxl")
help("pie")
help("exp")
?summary
?mean

Directorio de trabajo: El directorio o carpeta de trabajo es el lugar en nuestro ordenadro en el que se


encuentran los archivos con los que estamos trabajando en R. Este es el lugar donde R buscara archivos
para importarlos y al que serán exportados, a menos que indiquemos otra cosa. Puedes seleccionar el
directorio de trabajo usando la función setwd(), dando como argumento la ruta del directorio que
quieres usar, por ejemplo, en una carpeta que he creado que se llama Practicas R:
setwd("C:/Users/Usuario/Documents/Practicas R")

También puedo indicarle el escritorio:


setwd("C:/Users/Usuario/Desktop")

1 Prof. Inmaculada Roldán


Grado en Enfermería – Prácticas con R

Por último, también podemos cambiar de directorio con la siguiente ruta de la barra de menú:

1.2 R como calculadora

R permite realizar operaciones como si se tratara de una calculadora. Las operaciones que se escriben
en la consola, en R se dice que se ejecutan. Cuando hablamos de ejecutar, llamar o correr nos referimos
a pedir que R realice algo, en otras palabras, estamos dando una instrucción o una entrada. Cuando
decimos que R nos devuelve algo, es que ha realizado algo que le hemos pedido, es decir, nos está
dando una salida. Por ejemplo, si escribimos lo siguiente en la consola y le damos a Enter, estamos
pidiendo que se ejecute esta operación: > 1 + 1
Y nos será devuelto su resultado: [1] 2
Operadores:
Aritméticos Comparativos Lógicos
+ Suma = igualdad & Y lógico
- Resta != Diferente de ! No lógico
* Multiplicación < Menor que | O lógico
/ División > Mayor que
^ Potencia <= Menor o igual
>= Mayor o igual

Funciones:
Raíz cuadrada de x sqrt(x)
Exponencial de x exp(x)
Logaritmo neperiano log(x)
Nº de elementos de un vector x length(x)
Suma los elementos del vector x sum(x)
Seno de x sin(x)
Coseno de x cos(x)
Tangente de x tan(x)

2 Prof. Inmaculada Roldán


Grado en Enfermería – Prácticas con R

5+3 # suma
5-3 # resta
5*3 # producto
5/3 # cociente
5^3 # potencia
sqrt(5) # raíz cuadrada
exp(5) # el número "e" elevado a (función exponencial)
log(5) # logaritmo neperiano
log10(5) # logartimo en base 10
pi # el número "pi" está definido
sin(pi/2) # la función seno (ángulo en radianes)

Si el resultado tiene muchos decimales y queremos ajustarlo a un número concreto, por ejemplo 3:
round(sqrt(5),3)

1.3 Creación de vectores y matrices

R es capaz de manejar una variedad de tipos de datos, que se almacenan en diferentes estructuras. La
asignación se puede realizar mediante = o <-. Algunas estructuras son las siguientes:

Tipo de dato Descripción Ejemplo


Numeric Número (con decimales) x <- 1.1
Character Cadena de texto ciudad <- “Ceuta”

Para identificar el tipo de dato utilizaremos la función class(), por ejemplo,


x = 4.1 y = 2*sqrt(x)+7 ; y # para mostrar el valor de y round(y,2)
class(x) [1] 11.04969 [1] 11.05
[1] "numeric"

ciudad = "Ceuta"
class(ciudad)
[1] "character"

x = "4.1"
class(x)
[1] "character"

2*sqrt(x)+7
Error in sqrt(x) : non-numeric argument to mathematical function

Creamos vectores usando la función c() (combinar). Llamamos esta función y le damos como
argumento los elementos que deseamos combinar en un vector, separados por comas.
v1 <- c(1, 2, 3, 5, 8, 13); v1 # Vector numérico
[1] 1 2 3 5 8 13
v2 = 1:10 # Secuencia de valores
[1] 1 2 3 4 5 6 7 8 9 10

3 Prof. Inmaculada Roldán


Grado en Enfermería – Prácticas con R

v3 <- c("Peor", "Mejor", "Igual"); v3 # Vector de cadena de texto


[1] "Peor" "Mejor" "Igual"

seq(2, 5, 0.5) # o seq(from=2, to=5, by=0.5) secuencia del 2 al 5 a 0.5


[1] 2.0 2.5 3.0 3.5 4.0 4.5 5.0

Para resolver tests de Chi-cuadrado necesitaremos introducir los datos en matrices que crearemos a
partir de un vector de datos indicando el número de filas, el de columnas o ambos.
matrix(1:12, nrow = 3, ncol = 4)

1.4 Carga de datos a partir de archivos excel y obtención de nuevas variables

En este curso, la carga de datos se realizará mediante la librería de R readxl. La instalación de


cualquier librería se puede realizar de dos formas:
 Utilizando la función: install.packages(). Se escribe directamente esta orden en la consola
con el nombre del paquete que queremos instalar entre comillas. Así lo haremos en esta sesión.
 Siguiendo la ruta de la barra de menús: Paquetes → Cargar paquete … A continuación
seleccionamos el espejo si lo pide (por ejemplo Spain (A Coruña) [https]) y buscamos el
nombre del paquete en el listado.

Pasos para cargar el archivo de datos de Excel, osteo.xlsx:

install.packages("readxl")
library(readxl)
osteo <- read_excel(path = "osteo.xlsx", sheet = 1)

Otra forma para cargar el archivo:

osteo <- read_excel(file.choose())

osteo
El archivo de datos que utilizaremos en las prácticas para ilustrar con ejemplos las técnicas estadísticas
analizadas en los apuntes de teoría contiene los datos correspondientes a un estudio acerca de la
densidad mineral ósea en pacientes diabéticos insulin-dependientes. En la tabla siguiente se detallan
todas las variables: especificando el nombre reducido y la descripción de cada una de ellas.

num Número del paciente


sexo Sexo del paciente (Hombre; Mujer)
edad Edad del paciente (años)
grupo_edad Grupo de edad del paciente: (<25 años, de 25 a 33años, >33 años)
peso Peso del paciente (Kg)
talla Talla del paciente (cm)
imc Índice de masa corporal (Kg/m2)
tevol Tiempo de evolución de la enfermedad (años)
tabaco Consumo de tabaco (Sí; No)
alcohol Consumo de alcohol (No; Sí, pero no en exceso; Sí, en exceso)
ingca Ingesta de calcio (Suficiente; Insuficiente)
4 Prof. Inmaculada Roldán
Grado en Enfermería – Prácticas con R

acfis Actividad física (Sí; No)


retin Presencia de retinopatía (No; Leve; Grave)
nefro Presencia de nefropatía (No; Leve; Grave)
neuro Presencia de neuropatía (No; Leve; Grave)
hba1c Hemoglobina glicoxilada
ca Calcio
p Fósforo
cr Creatinina
pthm Pth media
tpi Pth intacta
bmdcue Densidad de masa ósea en el cuello del fémur
szl24 Valor tipificado de la densidad de masa ósea en L24
sztri Valor tipificado de la densidad de masa ósea en triángulo de Ward
szcue Valor tipificado de la densidad de masa ósea en el cuello del fémur
osteo_cue Presencia de osteoporosis en el cuello del fémur (Sí, No)
osteo_tri Presencia de osteoporosis en el triángulo de Ward (Sí, No)

Obtención de nuevas variables:

Nueva variable obtenida mediante selección de datos:

pesoHombres <- subset(osteo$peso, subset=(osteo$sexo=="Hombre")); pesoHombres

pesoHombresquefuman <- subset(osteo$peso,


subset=(osteo$sexo=="Hombre")&(osteo$tabaco=="Si")); pesoHombresquefuman

Nueva variable obtenida mediante recodificación variables:

install.packages("car")
library(car)

osteo$edadNiveles <- recode(osteo$edad, "0:29='Hasta 29 años'; 30:39='30-39';


40:49='40-49'; 50:100='A partir de 50 años'"); osteo$edadNiveles

osteo$imcNiveles <- recode(osteo$imc, "seq(18,24.9,0.1)='Normal';


seq(25,29.9,0.1)='Sobrepeso'; seq(30,60,0.1)='Obeso'"); osteo$imcNiveles

Nueva variable a partir de otra mediante una fórmula:


osteo$pesoGramos <- with(osteo, osteo$peso*1000); osteo$pesoGramos

Nueva variable que vale 1 cuando una variable es menor que una cantidad:
osteo$joven <- with(osteo, as.numeric(osteo$edad<40)); osteo$joven

5 Prof. Inmaculada Roldán


Grado en Enfermería – Prácticas con R

6 Prof. Inmaculada Roldán


Grado en Enfermería – Prácticas con R

Práctica 2: Estadística Descriptiva

2.1 Representaciones gráficas

 Variables cualitativas: 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 es el 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.

7 Prof. Inmaculada Roldán


Grado en Enfermería – Prácticas con R

 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(“Histograma
de” , xname))

boxplot(x, range = 1.5, col = NULL, main = NULL)

donde, en este caso,

x es el vector de valores de la variable a partir de los cuales se dibujará el gráfico.

breaks indica la forma en la que se calcularán los intervalos en el histograma. Las opciones disponibles
para este parámetro son “Sturges” (que es la opción por defecto) “Scott” y “FD” “Freedman-Diaconis“.
Para más información sobre estos métodos, así como la fórmula que emplea cada uno de ellos para
determinar el número de intervalos, se puede consultar el siguiente enlace (en inglés):
http://www.mas.ncl.ac.uk/~nlf8/teaching/mas1343/notes/chap4-5.pdf

freq si es TRUE determina que el intervalo se represente con las frecuencias absolutas.

Range es un valor numérico que determina la extensión de los bigotes de la caja. Para un valor positivo
de range, los bigotes se extienden hasta el último dato que no supere 1.5 veces la longitud de la caja
(el rango intercuartílico). Para un valor de 0, los bigotes se extienden hasta el dato más lejano.

right es un argumento lógico que indica si los intervalos son cerrados por la izquierda y abiertos por
la derecha (en cuyo caso, right = TRUE, que es la opción por defecto) o viceversa (right = FALSE).

Las opciones col y paste funcionan igual que en los gráficos de barras y sectores.

2.2 Estadística descriptiva para variables cualitativas

- Suponemos que los datos que aporta el problema son las modalidades y las
correspondientes frecuencias absolutas

Ejercicio 1 En una muestra de 500 alumnos de la UGR se determinó que 150 tenían el grupo sanguíneo
A, 75, el B, 25 AB y 250 el 0. Obtén la tabla de frecuencias y representa la variable utilizando un
diagrama de barras y otro de sectores.

etiquetas <- c("A","B","AB","0")


fi <- c(150,75,25,250)
n <- sum(fi); n
hi <- fi/n; hi
pi <- hi*100; pi
barplot(pi, names.arg=etiquetas)
pie(pi,etiquetas)

8 Prof. Inmaculada Roldán


Grado en Enfermería – Prácticas con R

Tabla de frecuencias:
Grupo fi hi pi
A 150 0.30 30 %
B 75 0.15 15 %
AB 25 0.05 5%
0 250 0.50 50 %
500 1.00 100 %

- Suponemos que x es la variable que contiene los datos.

Tablas de frecuencias

 Absolutas: table(x)
 Relativas: table(x)/length(x)
 Porcentajes: table(x)/length(x) * 100

Gráficas:

 Diagrama de barras: barplot(height=table(x))


 Diagrama de sectores: pie(x=table(x))

Ejercicio 2 Calcula la tabla de frecuencias absolutas y relativas para la variable sexo (del archivo
osteo), y haz un diagrama de barras y otro de sectores, cambiando los colores y añadiendo títulos para
practicar.

Seleccionamos el directorio de trabajo Practicas R (carpeta con los archivos de las prácticas
disponibles en PRADO 2) y a continuación cargamos el archivo de datos utilizando el archivo Excel

library(readxl)
osteo <- read_excel(file.choose())

O bien cargando el archivo osteo.RData con la ruta Archivo → Cargar área de trabajo…

Y comprobar que está cargado utilizando la función head()


head(osteo) #Muestra los datos de los primeros 6 pacientes

9 Prof. Inmaculada Roldán


Grado en Enfermería – Prácticas con R

A continuación resolvemos el ejercicio:


x <- osteo$sexo
fi <- table(x); fi
n <- sum(fi); n
hi <- round(table(x)/length(x),3); hi
pi <- round(hi*100,1); pi

barplot(height=fi,col=c("cornflowerblue","pink"),ylim=c(0,50),main="Sexo",
ylab ="Frecuencia absoluta")

barplot(height=hi,col=c("cornflowerblue","pink"),ylim=c(0,0.6),main="Sexo",
ylab ="Frecuencia relativa")

barplot(height=pi,col=c("cornflowerblue","pink"),ylim=c(0,60),main="Sexo",
ylab ="Porcentaje")

pie(pi, clockwise=TRUE, col= c("cornflowerblue","pink"),main="Sexo")

pie(pi, labels=pi, clockwise=TRUE, col= c("cornflowerblue","pink"),main="Sexo")


legend("topright", legend = c("Hombre", "Mujer"),fill=c("cornflowerblue","pink"))

Tabla de frecuencias:
Sexo fi hi pi
Hombre 45 0.479 47.9 %
Mujer 49 0.521 52.1 %
94 1.000 100.0 %

Ejercicio 3 Repite el ejercicio con la variable alcohol (del archivo osteo).

x <- osteo$alcohol
# etiquetas <- c("No consume", "Moderado", "Excesivo")
fi <- table(x); fi
n <- sum(fi); n
hi <- round(table(x)/length(x),3); hi
pi <- round(hi*100,1); pi

barplot(height=fi, col=c("red","aliceblue","aquamarine2"), ylim=c(0,80),


main="Consumo de alcohol", ylab ="Frecuencia absoluta")

barplot(height=hi, col=c("red","aliceblue","aquamarine2"), ylim=c(0,1),


main="Consumo de alcohol", ylab ="Frecuencia relativa")

barplot(height=pi, col=c("red","aliceblue","aquamarine2"), ylim=c(0,100),


main="Consumo de alcohol", ylab ="Porcentaje")

Tabla de frecuencias:
Consumo alcohol fi hi pi
No consume 14 0.149 14.9 %
Moderado 79 0.840 84.0 %
Excesivo 1 0.011 1.1 %
94 1.000 100.0%

10 Prof. Inmaculada Roldán


Grado en Enfermería – Prácticas con R

2.3 Estadística descriptiva para variables cuantitativas

- Suponemos que los datos que aporta el problema son los valores de la variable y las
correspondientes frecuencias absolutas.

Ejercicio 4 En 50 niños de 12 años de edad se anotó el número de dientes permanentes cariados y


obturados, obteniéndose que 8, 12, 10, 6, 4, 4, 4, 0 y 2 niños tenían 0, 1, 2, 3, 4, 5, 6, 7 y 8 dientes,
respectivamente, en esas condiciones.
a) Calcula la tabla de frecuencias.
b) Representa gráficamente la variable mediante un diagrama de barras.
c) Calcula la mediana, la media y la desviación típica.
xi <- c(0,1,2,3,4,5,6,7,8)
fi <- c(8,12,10,6,4,4,4,0,2)
n <- sum(fi); n
hi <- fi/n; hi
pi <- hi*100; pi
Pi <- cumsum(pi); Pi
barplot(pi, names.arg=xi, main=c("Nº de dientes cariados"))
plot(fi,type="l",main=c("Polígono de frecuencias de nº de dientes cariados"),
ylab="Frecuencias absolutas", xlab="Número de dientes",col="blue")

Tabla de frecuencias:
xi fi hi pi Pi
0 8 0.16 16 % 16 %
1 12 0.24 24 % 40 %
2 10 0.20 20 % 60 %
3 6 0.12 12 % 72 %
4 4 0.08 8 % 80 %
5 4 0.08 8 % 88 %
6 4 0.08 8 % 96 %
7 0 0.00 0 % 96 %
8 2 0.04 4 % 100%
50 1.00 100 %

media <- round(sum(fi*xi)/n,2); media


dt <- round(sqrt((sum(fi*xi^2)-sum(fi*xi)^2/n)/(n-1)), 4); dt

El número medio de dientes cariados es 2.52 con una variabilidad de 2.1404 dientes. El 50% de los
niños de 12 años tiene 2 dientes cariados o menos y el otro 50% tiene 2 dientes cariados o más.

Ejercicio 5 En 500 estudiantes de la UGR se anotó el número de hermanos, obteniéndose que 72, 155,
97, 81, 30, 27, 20 y 18 alumnos tenían 0, 1, 2, 3, 4, 5, 6 y 7 hermanos, respectivamente, en esas
condiciones.
a) Calcula la tabla de frecuencias.
b) Representa gráficamente la variable.
c) Calcula la mediana, la media y la desviación típica.

11 Prof. Inmaculada Roldán


Grado en Enfermería – Prácticas con R

Igual que antes pero ahora las cadenas de datos cambian:


xi <- c(0,1,2,3,4,5,6,7)
fi <- c(72,155,97,81,30,27,20,18)

Tabla de frecuencias:
xi fi hi pi Pi
0 72 0.144 14.4 % 14.4 %
1 155 0.310 31.0 % 45.4 %
2 197 0.194 19.4 % 64.8 %
3 81 0.162 16.2 % 81.0 %
4 30 0.060 6.0 % 87.0 %
5 27 0.054 5.4 % 92.4 %
6 20 0.040 4.0 % 96.4 %
7 18 0.036 3.6 % 100.0 %
500 1.000 100 %
El número medio de hermanos es 2.2 con una variabilidad de 1.81 hermanos. El 50% de los estudiantes
tienen 2 hermanos o menos y el otro 50%, 2 hermanos o más.

- Suponemos que x es la variable que contiene los datos.

Tablas de frecuencias
Primero hay que “cortar” la recta en intervalos, y luego se pide la tabla de frecuencias de los intervalos:
table(cut(x, breaks)) donde breaks es el número de intervalos, o el vector con los extremos
sucesivos

 Absolutas: table(cut(x, breaks))


 Relativas: table(cut(x, breaks)) /length(x)
 Porcentajes: table(cut(x, breaks)) /length(x) * 100

Gráficas:

 Histograma: hist(x, breaks, ...)


 Diagrama de caja: boxplot(...)

Estadísticos:

 Media: mean(x)
 Mediana: median(x)
 Mínimo: min(x)
 Máximo: max(x)
 Cuantil de orden pp: quantile(x, prob=pp)
 Recorrido: hay que calcularlo con su definición (max(x)-min(x)).
 Varianza: var(x)
 Desviación típica: sd(x)
 Recorrido intercuartílico: IQR(x)

Ordenación de datos: sort(x)

12 Prof. Inmaculada Roldán


Grado en Enfermería – Prácticas con R

Ejercicio 6 La concentración de sodio (en mEq/l) en el sudor de 25 estudiantes fue la siguiente


(resultados obtenidos por redondeo al entero más cercano):

46, 29, 35, 61, 54, 37, 53, 57, 57, 51, 43, 67, 66, 31, 53, 51, 48, 59, 55, 47, 76, 49, 59, 50, 65, 41 y 60

a) Calcula todas las medidas descriptivas, el tercer cuartil y el decil 9.


b) Representa gráficamente la variable.

x=c(46,29,35,61,54,37,53,57,57,51,43,67,66,31,53,51,48,59,55,47,76,49,59,50,65,41
,60)
m = mean(x); m
sort(x)
med = median(x); med
c3 = quantile(x, prob=0.75); c3
d9 = quantile(x, prob=0.9); d9
R = max(x)-min(x); R
var = var(x); var
dt = sd(x); dt
cv = sd(x)/abs(mean(x))*100; cv
RI = IQR(x); RI
hist(x, breaks=6)
boxplot(x)

La concentración media es de 51.85 mEq/l con una variabilidad de 11.1828 mEq/l. El 50% de los
estudiantes tiene una concentración sodio de 53 mEq/l o menos y el otro 50% de dicho valor o más. El
75% de los estudiantes tienen una concentración de sodio de 59 mEq/l o menos y para el 90% de los
estudiantes es de 65.4 mEq/l o menos. El rango es de 47 mg/dl (por lo que la desviación típica puede
considerarse pequeña y la media es representativa de la muestra). El coeficiente de variación es 21.57%
y el rango intercuartílico es 12.5 mEq/l.

Ejercicio 7 Se determinó 12 veces el contenido en glucosa en sangre (en mg/dl) de una misma muestra
utilizando dos métodos A y B, de determinación rápida de la misma (los resultados se han obtenido
por redondeo al entero más cercano):
Método A 140 141 142 127 138 136 142 126 148 139 151 136
Método B 130 146 132 138 145 148 147 135 137 137 134 138
a) Calcular la media, la mediana, el primer cuartil y el decil 8.
b) Calcular todas las medidas de dispersión. ¿Qué método es preferible?
Realiza un informe con esta información.

x1 = c(140,141,142,127,138,136,142,126,148,139,151,136)
x2 = c(130,146,132,138,145,148,147,135,137,137,134,138)
m1 = mean(x1); m1
m2 = mean(x2); m2
med1 = median(x1); med1
med2 = median(x2); med2
c1x1 = quantile(x1, prob=0.25); c1x1
c1x2 = quantile(x2, prob=0.25); c1x2
d8x1 = quantile(x1, prob=0.8); d8x1
d8x2 = quantile(x2, prob=0.8); d8x2

13 Prof. Inmaculada Roldán


Grado en Enfermería – Prácticas con R

R1 = max(x1)-min(x1); R1
R2 = max(x2)-min(x2); R2
var1 = var(x1); var1
var2 = var(x2); var2
dt1 = sd(x1); dt1
dt2 = sd(x2); dt2
cv1 = sd(x1)/abs(mean(x1))*100; cv1
cv2 = sd(x2)/abs(mean(x2))*100; cv2
RI1 = IQR(x1); RI1
RI2 = IQR(x2); RI2

El nivel medio de glucosa por el método A 138.8 mg/dl con una variabilidad de 7.26 mg/dl (varianza
de 52.7) y por el método B el promedio fue de 138.9 mg/dl con una variabilidad de 6.11 mg/dl (varianza
de 37.36). Con el método A el 50% de las mediciones fueron de 139.5 mg/dl o menos y el otro 50%
de 139.5 mg/dl o más, mientras que en por el método B el nivel mediano se situó en 137.5 mg/dl. El
25% de las mediciones con el método A fueron de 136 mg/dl o inferiores y, por el método B, fueron
de 134.75 mg/dl o menos. El 80% de las mediciones con el método A fueron de 142 mg/dl o inferiores
y, por el método B, fueron de 145 mg/dl o menos.

Los rangos fueron de 25 mg/dl en el caso del método A y 18 mg/dl para el método B. Los rangos
intercuartílicos fueron 6 y 10.5 mg/dl, respectivamente.

Los coeficientes de variación fueron 5.2% y 4.4%, respectivamente, por lo que ambos métodos son
muy parecidos, el método B sería un poco mejor.

Ejercicio 8 Calcula todas las medidas descriptivas para la variable peso (del archivo osteo) y
representa gráficamente la variable.

x = osteo$peso
table(x) # ¡no lo hace bien!
min(x)
max(x)
table(cut(x,breaks=5*(8:20))) # la tabla de frecuencias con intervalos
table(cut(x,breaks=5*(8:20)))/length(x)
table(cut(x,breaks=5*(8:20)))/length(x)*100

hist(x,breaks=5*(8:20),main="Histograma del Peso",ylab ="Frecuencia",


col="chocolate")
boxplot(x)

R = max(x)-min(x); R
quantile(x)
p65 = quantile(x,probs = 0.65); p65
m = mean(x); m
dt = sd(x); dt
cv = sd(x)/abs(mean(x))*100; cv
med = median(x); med
RI = IQR(x); RI

Intentadlo con la variable edad….


14 Prof. Inmaculada Roldán
Grado en Enfermería – Prácticas con R

Ejercicio 9 Obtenga una nueva base de datos que llamará osteo1 eliminando los pacientes:

45, 58, 69, 76, 90

El código en R para hacer esta operación es:

q = c(45, 58, 69, 76, 90)


osteo1 = osteo[-q,]

Como verificación, compruebe que la edad media de la nueva base de datos es: 30.3707865168539

Considere la variable valor tipificado de la densidad de masa ósea en L24 en los pacientes para los
cuales la Ingesta de calcio es Suficiente y calcule varias medidas estadísticas.

q = c(45, 58, 69, 76, 90) # vector con los números de pacientes de hay que quitar
osteo1 = osteo[-q,] # nueva base de datos osteo1

edadmedia = mean(osteo1$edad); edadmedia # comprobación

x = subset(osteo1$szl24, subset=(osteo1$ingca=="Suficiente")) # nueva variable

R = max(x)-min(x); R
m = mean(x); m
dt = sd(x); dt
cv = sd(x)/abs(mean(x))*100; cv
p65 = quantile(x,probs = 0.65); p65
med = median(x); med
RI = IQR(x); RI

La comprobación es correcta: edadmedia = 30.37079

R = 0.63
m = 0.8131395
dt = 0.1410904
cv = 17.35131
p65 = 0.8725
med = 0.825
RI = 0.1875

15 Prof. Inmaculada Roldán

También podría gustarte