EJERCICIO 1. Genere un vector aleatorio de distribución de Poisson, con número de observaciones 40, y promedio de 8. Use set.seed(2025).

set.seed(2025)
vector=rpois(40,8)
print(vector)
##  [1] 10  8  8  8 10  8 12  5  9  8  7 13  9  3  8 11  7  7 10  5  7 10  3  9  7
## [26] 12 10  6 11  6  7  5  8  8  9  5  4  5 16 12

A) Ordenelos de menor a mayor

Vector_Ordenado=sort(vector)
print(Vector_Ordenado)
##  [1]  3  3  4  5  5  5  5  5  6  6  7  7  7  7  7  7  8  8  8  8  8  8  8  8  9
## [26]  9  9  9 10 10 10 10 10 11 11 12 12 12 13 16

B) Extraiga el octavo y veinteavo elemento del vector

Vector_Ordenado[c(8,20)]
## [1] 5 8

C) Extraiga los valores de las posiciones impares

Valores_Pos_Imp=Vector_Ordenado[seq(1, length(Vector_Ordenado), by = 2)]
print(Valores_Pos_Imp)
##  [1]  3  4  5  5  6  7  7  7  8  8  8  8  9  9 10 10 10 11 12 13

D) Extraiga los valores que son mayores que 3, pero menores que 8

Vector_Ordenado[c(Vector_Ordenado>3&Vector_Ordenado<8)]
##  [1] 4 5 5 5 5 5 6 6 7 7 7 7 7 7

EJERCICIO 2. Un cliente busca información sobre conjuntos de datos relacionados con experimentos quımicos. Recuerda que sus nombres son:esoph y trees. El cliente necesita que usted realice lo siguiente:

A) Indique en qué paquete se encuentran estos conjuntos

?esoph 
## starting httpd help server ... done
data(esoph)
str(esoph)
## 'data.frame':    88 obs. of  5 variables:
##  $ agegp    : Ord.factor w/ 6 levels "25-34"<"35-44"<..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ alcgp    : Ord.factor w/ 4 levels "0-39g/day"<"40-79"<..: 1 1 1 1 2 2 2 2 3 3 ...
##  $ tobgp    : Ord.factor w/ 4 levels "0-9g/day"<"10-19"<..: 1 2 3 4 1 2 3 4 1 2 ...
##  $ ncases   : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ ncontrols: num  40 10 6 5 27 7 4 7 2 1 ...
View(esoph)

El paquete esoph (Smoking, Alcohol and (O)esophageal Cancer): Registra datos relacionados a Tabaquismo, alcohol y cáncer de esófago, el conjunto de datos forma parte del paquete datasets en R El conjunto de datos contiene 88 observaciones agrupadas en función de los niveles de exposición a alcohol y tabaco, con lo que tal parece se busco analizar la asociación entre factores de riesgo y la presencia de la enfermedad en grupos de personas de distintas caracteristicas.Cada observación en el dataset representa un grupo de individuos clasificados según edad, consumo de alcohol y consumo de tabaco, proporcionando el número de casos y controles para cada combinación.

?trees
data(trees)
str(trees)
## 'data.frame':    31 obs. of  3 variables:
##  $ Girth : num  8.3 8.6 8.8 10.5 10.7 10.8 11 11 11.1 11.2 ...
##  $ Height: num  70 65 63 72 81 83 66 75 80 75 ...
##  $ Volume: num  10.3 10.3 10.2 16.4 18.8 19.7 15.6 18.2 22.6 19.9 ...
View(trees)

El paquete ‘trees’ (Diameter, Height and Volume for Black Cherry Trees): Registra datos relacionados al Diámetro, altura y volumen de cerezos negros. El conjunto de datos trees, disponible en el paquete base de R (datasets), contiene información sobre las dimensiones de 31 árboles de dicha especie.

Cabe aclarar que ambos conjuntos de datos se encuentran en el paquete datasets de R.

B) Proporcione una descripcion breve de las variables contenidas en cada conjunto.

Variables de esop

Variables de trees

C) Realice una caracterización de la variable Volume segun Height (convertida en categorías por cuantiles) en trees. Use el paquete dplyr de tidyverse y elimine los valores NA (si lo hay)

library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.4.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(dplyr)
cuantil= quantile(trees$Height, q= c(0, 0.25, 0.50, 0.75, 1), na.rm = TRUE)
trees %>% 
  mutate(Height_Categorizada=case_when(
  Height<=cuantil[2] ~ "Bajo",
  Height<=cuantil[3] ~ "Mediano",
  Height<=cuantil[4] ~ "Alto",
  TRUE~ "Altisimo"
)) %>% group_by(Height_Categorizada) %>% 
  summarise(
    vol_max = max(Volume, na.rm = TRUE),
    vol_prom = mean(Volume, na.rm = TRUE),
    vol_min = min(Volume, na.rm = TRUE),
    sd_vol=sd(Volume, na.rm = TRUE)
    
  )
## # A tibble: 4 × 5
##   Height_Categorizada vol_max vol_prom vol_min sd_vol
##   <chr>                 <dbl>    <dbl>   <dbl>  <dbl>
## 1 Altisimo               77       41.1    18.8  22.0 
## 2 Alto                   58.3     39.6    22.6  13.3 
## 3 Bajo                   38.3     19.2    10.2   9.38
## 4 Mediano                36.3     22.6    18.2   6.20

Se observa que los árboles más altos (“Altísimo” y “Alto”) tienen los mayores volúmenes promedio (41.11 y 39.55), mientras que los más bajos presentan menores valores (Bajo: 19.22, Mediano: 22.58). Adicionalmnete la tabla sugiere que la relación entre altura y volumen no es homogénea, ya que se obtuvo una mayor variabilidad en árboles altos,indicando mayor variabilidad en su volumen, mientras que los más bajos presentan una menor dispersión.

EJERCICIO 3. Se define una variable rquote <- “r’s internals are irrefutably intriguing”. Esta variable se ha dividido en un vector que contiene letras separadas y se ha almacenado en un vector chars con la función strsplit(). ¿Puedes escribir un código que cuente el número de r’s que vienen antes de la primera u en rquote?

rquote="r’s internals are irrefutably intriguing"
chars=strsplit(rquote, split="")[[1]]
Num_r=0
for (i in 1:length(chars)) {
  if (chars[i] == "u") {
    break  
  }
  if (chars[i] == "r") {
    Num_r <- Num_r + 1  
  }
}

print(paste("El número de 'r' antes de encontrar la primera 'u' es:", Num_r))
## [1] "El número de 'r' antes de encontrar la primera 'u' es: 5"

EJERCICIO 4. Suponga que se extraen números aleatorios entre 1 y 100. Realice un script que simule extracciones hasta queaparezca un número mayor a 90, exactamente 3 veces. Debe mostrar el historial de numeros extraídos.

extraccion=0
numero_mayor_90=0
historial=c()
while(numero_mayor_90<3){
  numero=sample(1:100,1)
  extraccion=extraccion+1
  historial=c(historial,numero)
  if(numero>90){
    numero_mayor_90=numero_mayor_90+1
  }
}
print(historial)
##  [1] 57 49 46 68 24 20 90 77 11 51 41 27 16 86 48 82 17 81 25 38 56 48  4 24  5
## [26] 98 29 69 80 41 54 24 87 15 52 12 85  3 44  8  8 23  8  2 98 26 13 16 49 47
## [51] 68 14 59 12 84 96
print(paste("El total de extracciones fue:",extraccion))
## [1] "El total de extracciones fue: 56"

EJERCICIO 5. Escriba una función (llámela r i c) que imprima el rango intercuartílico de una variable aleatoria con distribución beta de longitud 40 y parámetro beta igual a 5. Debe calcular el rango intercuartílico desde su definición, sin usar la función quantile dentro del cuerpo de la función. Dentro de la función, debe utilizar paste en su programa.

El rango intercuartílico se define como la diferencia entre el tercer cuartil (Q3) y el primer cuartil (Q1), es decir: RQ = Q3 - Q1. Por tanto, acontinuación vamos se desarrollo un codigo que facilita dicho cálculo:

set.seed(2025)
RIC=function(){
  x=rbeta(40,shape1 = 0.5, shape2 = 5)
  sort(x)
  Q1=x[round(0.25*length(x))]
  Q3=x[round(0.75*length(x))]
  ric=Q3-Q1
  print(paste("El Rango Intercualitico es:",ric))
}
RIC()
## [1] "El Rango Intercualitico es: 0.011084552014541"

En el enunciado del ejercicio, se entrega el parametro de beta solamente, por lo que se asume ALPHA como 0.5 y se planto la misma semilla que se especifico para el primer ejercicio del presente parcial para el desarrollo de este ejercicio.

EJERCICIO 6. El conjunto de datos llamado germination, que se encuentra en la carpeta de datos de Teams, se refiere a la germinación de semillas de dos genotipos de la planta parásita Orobanche (a75 = hiedra y a73 = trébol) y dos extractos de plantas residentes (frijol y pepino) que se utilizaron para estimular la germinación. La variable conteo es el número de semillas que germinaron de un lote muestral.

A) Cargue los datos germination y muestre las 3 primeras filas

setwd("C:/Users/Angelica Elena/Documents/GitHub/Estadistica-Computacional/Parcial")
datos=read.delim("germinacion.txt",sep="",stringsAsFactors = FALSE)
str(datos)
## 'data.frame':    21 obs. of  4 variables:
##  $ conteo   : int  10 23 23 26 17 5 53 55 32 46 ...
##  $ muestra  : int  39 62 81 51 39 6 74 72 51 79 ...
##  $ orobanche: chr  "a75" "a75" "a75" "a75" ...
##  $ extracto : chr  "frijol" "frijol" "frijol" "frijol" ...
summary(datos)
##      conteo         muestra       orobanche           extracto        
##  Min.   : 0.00   Min.   : 4.00   Length:21          Length:21         
##  1st Qu.: 8.00   1st Qu.:16.00   Class :character   Class :character  
##  Median :17.00   Median :39.00   Mode  :character   Mode  :character  
##  Mean   :20.19   Mean   :39.57                                        
##  3rd Qu.:26.00   3rd Qu.:51.00                                        
##  Max.   :55.00   Max.   :81.00
head(datos,3)
##   conteo muestra orobanche extracto
## 1     10      39       a75   frijol
## 2     23      62       a75   frijol
## 3     23      81       a75   frijol
print(datos)
##    conteo muestra orobanche extracto
## 1      10      39       a75   frijol
## 2      23      62       a75   frijol
## 3      23      81       a75   frijol
## 4      26      51       a75   frijol
## 5      17      39       a75   frijol
## 6       5       6       a75   pepino
## 7      53      74       a75   pepino
## 8      55      72       a75   pepino
## 9      32      51       a75   pepino
## 10     46      79       a75   pepino
## 11     10      13       a75   pepino
## 12      8      16       a73   frijol
## 13     10      30       a73   frijol
## 14      8      28       a73   frijol
## 15     23      45       a73   frijol
## 16      0       4       a73   frijol
## 17      3      12       a73   pepino
## 18     22      41       a73   pepino
## 19     15      30       a73   pepino
## 20     32      51       a73   pepino
## 21      3       7       a73   pepino

B) Cambie el nombre codificado de los dos genotipos de la planta al nombre comÚn de éstas. Use dplyrs

library(dplyr)
datos =datos%>% 
  mutate(orobanche = if_else(orobanche == "a73", "Trebol", "Hiedra"))
print(datos)
##    conteo muestra orobanche extracto
## 1      10      39    Hiedra   frijol
## 2      23      62    Hiedra   frijol
## 3      23      81    Hiedra   frijol
## 4      26      51    Hiedra   frijol
## 5      17      39    Hiedra   frijol
## 6       5       6    Hiedra   pepino
## 7      53      74    Hiedra   pepino
## 8      55      72    Hiedra   pepino
## 9      32      51    Hiedra   pepino
## 10     46      79    Hiedra   pepino
## 11     10      13    Hiedra   pepino
## 12      8      16    Trebol   frijol
## 13     10      30    Trebol   frijol
## 14      8      28    Trebol   frijol
## 15     23      45    Trebol   frijol
## 16      0       4    Trebol   frijol
## 17      3      12    Trebol   pepino
## 18     22      41    Trebol   pepino
## 19     15      30    Trebol   pepino
## 20     32      51    Trebol   pepino
## 21      3       7    Trebol   pepino

C) Extraiga todas las observaciones en las que el número de semillas que germinaron sea distinto de 10 y muestre las 5 muestras más grandes

datos_obs=datos %>% 
  filter(conteo!=10) %>%
  arrange(desc(conteo))
head(datos_obs,5)
##   conteo muestra orobanche extracto
## 1     55      72    Hiedra   pepino
## 2     53      74    Hiedra   pepino
## 3     46      79    Hiedra   pepino
## 4     32      51    Hiedra   pepino
## 5     32      51    Trebol   pepino

D) Hay diversos fungicidas biológicos que controlan la aparición de estas plantas parásitas con el fin de que no se pierdan las cosechas. Se muestran seis de ellas en la siguiente tabla:

orobanche = c(“a70”, “a71”, “a72”, “hiedra”, “a74”, “trebol”, “a76”) fungicida = c(“Ecoticid-K1”, “Ecoticid-K2”, “Ecoticid-K3”, “Ecoticid-K0”,“Ecoticid-K4”,“Ecoticid-K9”, “Ecoticid-K8”) tratamiento = data.frame(orobanche, fungicida)

A partir de lo anterior, cree una nueva tabla llamada control en donde se extraigan los fungicidas relevantes de la tabla de datos tratamiento para el control de la planta par´asita de la tabla de datos original. Use left join.

orobanche=c("a70", "a71", "a72", "Hiedra", "a74", "Trebol", "a76")
fungicida=c("Ecoticid-K1", "Ecoticid-K2", "Ecoticid-K3", "Ecoticid-K0", "Ecoticid-K4", "Ecoticid-K9", "Ecoticid-K8")
tratamiento=data.frame(orobanche, fungicida, stringsAsFactors = FALSE)
if ("fungicida" %in% names(datos)) {
  datos=datos %>% select(-fungicida)##Esto lo hago porque me estaba colocando otra columna de fungicida adicional a la que la estaba ya por defecto tal parece en la tabla.
}
control=datos %>%
  left_join(tratamiento, by = "orobanche")
print(control)
##    conteo muestra orobanche extracto   fungicida
## 1      10      39    Hiedra   frijol Ecoticid-K0
## 2      23      62    Hiedra   frijol Ecoticid-K0
## 3      23      81    Hiedra   frijol Ecoticid-K0
## 4      26      51    Hiedra   frijol Ecoticid-K0
## 5      17      39    Hiedra   frijol Ecoticid-K0
## 6       5       6    Hiedra   pepino Ecoticid-K0
## 7      53      74    Hiedra   pepino Ecoticid-K0
## 8      55      72    Hiedra   pepino Ecoticid-K0
## 9      32      51    Hiedra   pepino Ecoticid-K0
## 10     46      79    Hiedra   pepino Ecoticid-K0
## 11     10      13    Hiedra   pepino Ecoticid-K0
## 12      8      16    Trebol   frijol Ecoticid-K9
## 13     10      30    Trebol   frijol Ecoticid-K9
## 14      8      28    Trebol   frijol Ecoticid-K9
## 15     23      45    Trebol   frijol Ecoticid-K9
## 16      0       4    Trebol   frijol Ecoticid-K9
## 17      3      12    Trebol   pepino Ecoticid-K9
## 18     22      41    Trebol   pepino Ecoticid-K9
## 19     15      30    Trebol   pepino Ecoticid-K9
## 20     32      51    Trebol   pepino Ecoticid-K9
## 21      3       7    Trebol   pepino Ecoticid-K9

E) De los datos del ítem anterior, según cada fungicida, ¿cuantas semillas germinaron?:

Conteo_Semillas=control %>%
  group_by(fungicida) %>%
  summarise(semillas_germinadas= sum(conteo, na.rm = TRUE)) %>%
  arrange(desc(semillas_germinadas))
print(Conteo_Semillas)
## # A tibble: 2 × 2
##   fungicida   semillas_germinadas
##   <chr>                     <int>
## 1 Ecoticid-K0                 300
## 2 Ecoticid-K9                 124

La tabla muestra el número total de semillas germinadas según el tipo de fungicida utilizado. Se observa que Ecoticid-K0 tuvo la mayor cantidad de semillas germinadas (300), mientras que Ecoticid-K9 presentó un menor número (124). Esto sugiere que Ecoticid-K0 podría ser más efectivo en favorecer la germinación de semillas o que las condiciones en las que se aplicó posiblemente fueron más favorables.