Modelos Estadísticos. Grado Biotecnología



Librerías


# Cargamos las librerías
library(tidyverse)
library(forcats)
library(broom)
library(reshape2)
library(lmtest)
library(mgcv)
library(MASS)
library(modelr)
library(datasets)
library(dobson)

Enunciados


Ejercicio 1. El conjunto de datos proporciona los resultados de un experimento para determinar el efecto del tipo de lana (A o B) y la tensión (baja, media o alta) en el número de roturas de deformación por telar. Se recopilaron datos de nueve telares para cada combinación de configuraciones. Las variables consideradas son breaks (número de roturas), wool (tipo de lana), y tension (tensión de la lana). ¿Resulta posible predecir el número de roturas en función del tipo de lana y de la tensión?

require(datasets)
glm_poi_01 <- warpbreaks

Ejercicio 2. En el banco de datos siguiente aparecen los datos correspondientes a un pequeño experimento en el que 7 de un total de 16 ratones fueron aleatoriamente seleccionados para recibir un nuevo tratamiento médico. Los 9 ratones restantes fueron asignados a un grupo control en el que no se administró ningún tipo de tratamiento. El objetivo del tratamiento era prolongar el tiempo de supervivencia después de una operación quirúrgica. La tabla muestra los tiempos de supervivencia (en días) tras la operación para los 16 ratones. El tratamiento, ¿prolongaba la vida de los ratones tras la operación?

grupo <- c(rep("T",7),rep("C",9))
tiempo <- c(94,38,23,197,99,16,141,52,104,146,10,51,30,40,27,46)
glm_poi_02 <- data.frame(grupo,tiempo)

Ejercicio 3. Los datos siguientes contienen el tiempo de supervivencia, que es el tiempo hasta la muerte (en semanas) desde el diagnóstico de leucemia, y el número inicial de células blancas en sangre (en escala \(log_{10}\)), para un grupo de 17 sujetos que fueron diagnosticados de leucemia. Cuáles son tus conclusiones sobre la utilidad de saber el número de células blancas en la sangre para predecir el tiempo de supervivencia? ¿ Cuál es la probabilidad de sobrevivir de un paciente con 5000 células blancas en la sangre?

lcelulas <- c(3.36,2.88,3.63,3.41,3.78,4.02,4.00,4.72,5.00,4.23,3.73,3.85,3.97,4.51,4.54,5.00,5.00)
tiempo <- c(65,156,100,134,16,108,121,5,65,4,39,143,56,26,22,1,1)
glm_poi_03 <- data.frame(lcelulas,tiempo)

Ejercicio 4. Los datos de este ejercicio provienen de un famoso estudio realizado por Sir Richard Doll y colegas. En 1951, a todos los médicos británicos se les envió un breve cuestionario sobre si fumaron tabaco. Desde entonces, la información sobre sus muertes han sido recogidas. El conjunto de datos muestra el número de muertes por enfermedad coronaria (deaths), si eran o no fumadores (smoking), el grupo de edad al fallecimiento (age), y el número total de personas-años de observación en el momento del análisis (person-years). Para aprovechar el carácter ordinal de la variable age se sugiere utilizar una codificación numérica que identifique con un 1 al grupo de menor edad y con un 5 al grupo de mayor edad (otra opción sería utilizar el punto medio del intervalo). Representa la tasa de muertes por 100000 habitantes-año para el grupo de edad identificando si eran o no fumadores y ajusta el modelo que consideres más oportuno atendiendo a ese comportamiento. Los datos aparecen en Breslow and Day (1987).

require(dobson)
glm_poi_04 <- doctors
# Construimos el vector numérico de edad
glm_poi_04$age_num <- c(1,2,3,4,5,1,2,3,4,5)
glm_poi_04$age_num2 <- c(40,50,60,70,80,40,50,60,70,80)

Ejercicio 5. Los datos de este ejercicio contienen el número de pólizas de seguros de coches (n) y el número de reclamaciones o partes recibidos (y). Se registra además:

  • el distrito donde se contrato la póliza (district), que toma valor 1 para las contratadas en la ciudad de Londres y 0 para el resto de ciudades,
  • el nivel de la póliza contratada (car), registrada con un valor numérico donde 1 representa la categoría más baja y 4 la más alta,
  • el grupo de edad del conductor (age), registrada con un valor numérico donde 1 indica los conductores de menor edad y 4 los de mayor edad.

Estas dos últimas variables son categóricas ordinales que se codifican numéricamente para indicar el carácter ordinal de dicho factor. Analiza los datos teniendo en cuenta:

  • Debes calcular el ratio entre pólizas y asegurados para cada categoría de las variables predictoras y representa sus posibles efectos.
  • Ajusta un modelo adecuado a la información recogida y explica las conclusiones obtenidas.

Los datos provienen de Baxter, Coutts, and Ross (1980)

require(dobson)
glm_poi_05 <- insurance
glm_poi_05$car_f <- as.factor(glm_poi_05$car)
glm_poi_05$age_f <- as.factor(glm_poi_05$age)

Ejercicio 6. En este ejemplo están recogidos los datos de un estudio sobre 44 médicos que trabajaban en el servicio de urgencias de un hospital Le (1998). El objetivo del estudio era determinar qué variables estaban relacionadas con el número de quejas que recibían los médicos a lo largo de un año. Para ello se controló. para cada médico el número de consultas que realizó a lo largo del año (consultas) y el número de quejas recibidas (quejas). Se tuvieron en cuanta además otras posibles características que podrían influir como:

  • el salario anual del médico (en dolares por hora) (ingresos)
  • la carga de trabajo (en horas) en el servicio de urgencias (horas)
  • el sexo del médico (H = hombre y M = Mujer) (sexo)
  • si el médico recibió o no entrenamiento como residente en el servicio de urgencias

Representa la tasa de quejas para cada posible variable predictora y obtén el modelo correspondiente a estos datos que te permita responde sobre la influencia de cada una de las características recogidas en el número de quejas recibidas.

consultas <- c(2014, 3091, 879, 1780, 3646, 2690, 1864, 2782, 3071, 
1502, 2438, 2278, 2458, 2269, 2431, 3010, 2234, 2906, 
2043, 3022, 2123, 1029, 3003, 2178, 2504, 2211, 2338, 
3060, 2302, 1486, 1863, 1661, 2008, 2138, 2556, 1451, 
3328, 2927, 2701, 2046, 2548, 2592, 2741, 3763)
quejas <- c(2, 3, 1, 1, 11, 1, 2, 6, 9, 3, 2, 2, 5, 2, 7, 
2, 5, 4, 2, 7, 5, 1, 3, 2, 1, 1, 6, 2, 1, 1, 1, 
0, 2, 2, 5, 3, 3, 8, 8, 1, 2, 1, 1, 10)
residente <- c("Si", "No", "Si", "No", "No", "No", "Si", "No", "No", "Si", "No", "No", "No", 
"No", "No", "Si", "Si", "No", "Si", "No", "No", "Si", "Si", "No", "Si", "No", "Si", "Si", "No", 
"Si", "Si", "No", "No", "No", "No", "Si", "Si", "No", "No", "Si", "Si", "No", "Si", "Si")
sexo <- c("M", "H", "H", "H", "H", "H", "H", "H", "M", "H", "M", "H", "H", 
"M", "H", "H", "H", "H", "H", "H", "M", "M", "M", "H", "M", "M", "H", "H", "H", 
"M", "H", "H", "H", "H", "H", "M", "H", "H", "H", "H", "H", "H", "M", "H")
ingresos <-c(263.03, 334.94, 206.42, 226.32, 288.91, 275.94, 295.71, 224.91, 
249.32, 269, 225.61, 212.43, 211.05, 213.23, 257.3, 326.49, 290.53, 
268.73, 231.61, 241.04, 238.65, 287.76, 280.52, 237.31, 218.7, 
250.01, 251.54, 270.52, 247.31, 277.78, 259.68, 260.92, 240.22, 
217.49, 250.31, 229.43, 313.48, 293.47, 275.4, 289.56, 305.67, 
252.35, 276.86, 308.84)
horas <- c(1287.25, 1588, 705.25, 1005.5, 1667.25, 1517.75, 967, 1609.25, 
1747.75, 906.25, 1787.75, 1480.5, 1733.5, 1847.25, 1433, 1520, 
1404.75, 1608.5, 1220, 1917.25, 1506.25, 589, 1552.75, 1518, 
1793.75, 1548, 1446, 1858.25, 1486.25, 933.75, 1168.25, 877.25, 
1387.25, 1312, 1551.5, 973.75, 1638.25, 1668.25, 1652.75, 1029.75, 
1127, 1547.25, 1499.25, 1747.5)
glm_poi_06 <- data.frame(consultas,quejas,residente,sexo,ingresos,horas)

Ejercicio 7.

En este banco de datos se analizan lo datos proporcionados por la aseguradora Lloyd·s con respecto al número de incidentes causados por la olas en cierto componente de los buques cargueros. El banco de datos contiene información sobre:

  • type: el tipo de barco (codificado de A hasta E)
  • year: el año de construcción del barco en los periodos 1960–64, 65–69, 70–74, 75–79 (codificados como 60, 65, 70, 75)
  • period: período de operación del barco 1960-74, 75-79 (codificados como 60, 75)
  • service: meses de servicio
  • incidents: número de incidentes

Representa la tasa de incidentes para cada posible variable predictora (también para los factores construidos partir de la variables year y period que aparecen en el código de lectura. Si ajustamos un modelo con los factores creados y otro con las variables con el código numérico ¿qué modelo proporciona mejores resultados?. (Ten en cuenta que en factores ordinales es muy habitual utilizar el código numérico par ajustar el modelo y que de esta forma podemos controlar posibles efectos no lineales en la evolución de factor ordinal)

require(MASS)
glm_poi_07 <- ships
glm_poi_07$year_f <- as.factor(glm_poi_07$year)
glm_poi_07$period_f <- as.factor(glm_poi_07$period)

Ejercicio 8.

Disponemos de los pesos (g) de dos pikas afganas preñadas, a lo largo de 14 periodos de tiempo igualmente espaciados entre sí desde la concepción al parto. Ajusta una curva de crecimiento para describir estos datos ¿Puedes detectar alguna diferencia entre los dos animales?

animal <- c(rep("Pika1",14),rep("Pika2",14))
peso <- c(251,254,267,267,274,286,298,295,307,318,341,342,367,370,258,263,269,266,282,289,295,308,338,350,359,382,390,400)
semana <- c(1:14,1:14)
glm_poi_08 <- data.frame(animal,peso,semana)

Ejercicio 9.

Este problema se refiere a datos de un estudio de cangrejos herradura anidados. Cada cangrejo de herradura hembra en el estudio tenía un cangrejo macho unido a ella en su nido. El estudio investigó los factores que afectan si el cangrejo hembra tenía otros machos, llamados satélites, que residían cerca de ella. La característica que se cree que afecta el ancho del caparazón de la hembra. Se recogió información sobre las hembras y los machos, y estas se agruparon en grupos según su anchura. Cada grupo se caracterizo con la anchura media. Además se registro el número de hembras correspondientes a cada anchura y el número de satélites alrededor de ellas. representa la tasa media de satélites por hembra en función de la anchura y construye un modelo que represente la información contenida en estos datos. Extrae todas las conclusiones derivadas de el.

anchura <- c(22.69, 23.84, 24.77, 25.84, 26.79, 27.74, 28.67, 30.41)
hembras <- c(14,14,28,39,22,24,18,14)
satel <- c(14,20,67,105,63,93,71,72)
glm_poi_09 <- data.frame(anchura,hembras,satel)

Bibliografía


Baxter, L.A., S.M Coutts, and G.A.F. Ross. 1980. Applications of Linear Models in Motor Insurance. Proceedings of the 21st International Congress of Actuaries.

Breslow, N.E., and N. E. Day. 1987. Statistical Methods in Cancer Research, Volume 2: The Design and Analysis of Cohort Studies. International Agency for Research on Cancer.

Le, C.T. 1998. Applied Categorical Data Analyis. Wiley.


Copyright © 2018 Javier Morales. Universidad Miguel Hernández de Elche.