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 8 8 8 8 8 8 8 8 9 9 9
## [26] 9 10 10 10 10 10 11 11 12 12 12 13 16 NA NA NA NA NA NA NA NA NA NA NA NA
## [51] NA NA NA NA
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, especificamente contiene datos de un estudio de casos sobre el cáncer de esófago y el control de estos.
?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.
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 esoph -Girth (Circunferencia o Perímetro): Variable numérica que representa el diámetro del árbol en pulgadas (en realidad, se refiere al diámetro en lugar de la circunferencia). -Height (Altura):* Variable numérica que indica la altura del árbol en pies. -Volume (Volumen):* Variable numérica que mide el volumen de madera en pies cúbicos.
Variables de esoph
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.
RIC=function(){
x=rbeta(40,shape1 = 1, 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.378871848357113"
En el enunciado del ejercicio, se entrega el parametro de beta solamente, por lo que se asume ALPHA como 1 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.