En la finca El Guayabal, ubicada en la vereda El Coral del municipio de La Plata (Huila), se desarrollara un estudio sobre el crecimiento del cafe arábigo en cuatro puntos de una hectarea, considerando variables ambientales como temperatura, humedad del aire y del suelo, pH, precipitacion e intensidad luminica, registradas durante dos meses con tres tomas diarias para analizar su influencia en el desarrollo del cultivo respecto al crecimiento como variable independiente. Dado que tenemos datos de distintos puntos de cultivo (P1, P2, P3, P4) con variables ambientales,el muestreo estratificado por punto es el más apropiado, asi cada zona estara representada, y podemos comparar su influencia en el crecimiento.
#DATOS
#Variables: # Punto 1 - crecimiento de planta cm # Punto 2 - instenidad luminica
cafe_1 <- read.csv("cafe_1.csv", sep = ";", stringsAsFactors = FALSE)
cat("Columnas detectadas:\n")
## Columnas detectadas:
print(names(cafe_1))
## [1] "Punto" "Crecimiento_cm" "Temp_C" "Humedad_Suelo_."
## [5] "pH_Suelo"
cat("\nPrimeras filas:\n")
##
## Primeras filas:
print(head(cafe_1))
## Punto Crecimiento_cm Temp_C Humedad_Suelo_. pH_Suelo
## 1 P1 50,55 18,32 18,8 5,6
## 2 P1 48,62 21,37 21,3 5,6
## 3 P1 49,08 17,97 16,7 5,6
## 4 P2 50,71 16,79 25,2 5,8
## 5 P2 50,11 21,19 22,9 5,8
## 6 P2 49,5 16,79 19,4 5,8
##2 MUESTREO ESTRATIFICADO POR PUNTO## # Paso 1: Cargar la base de datos
cafe_1=as.data.frame(unclass(cafe_1),stringsAsFactors = TRUE)
str(cafe_1)
## 'data.frame': 99 obs. of 5 variables:
## $ Punto : Factor w/ 4 levels "P1","P2","P3",..: 1 1 1 2 2 2 3 3 3 4 ...
## $ Crecimiento_cm : Factor w/ 85 levels "48,04","48,49",..: 49 3 6 52 35 13 43 60 25 2 ...
## $ Temp_C : Factor w/ 92 levels "14,86","14,91",..: 49 75 46 21 72 21 52 70 20 16 ...
## $ Humedad_Suelo_.: Factor w/ 81 levels "15,1","15,4",..: 12 22 5 42 30 14 72 73 71 59 ...
## $ pH_Suelo : Factor w/ 4 levels "5,6","5,8","5,9",..: 1 1 1 2 2 2 4 4 4 3 ...
nrow(cafe_1)
## [1] 99
names(cafe_1)
## [1] "Punto" "Crecimiento_cm" "Temp_C" "Humedad_Suelo_."
## [5] "pH_Suelo"
cols_posibles <- names(cafe_1)
cols_coma <- sapply(cafe_1[ , cols_posibles], function(col) {
any(grepl("^[0-9]+/,[0-9]+$", as.character(col)))
})
cols_coma <- names(cols_coma)[cols_coma]
cat("Columnas con formato con coma detectadas (se intentará convertir):/n")
## Columnas con formato con coma detectadas (se intentará convertir):/n
print(cols_coma)
## character(0)
for (col in cols_coma) {
cafe_1[[col]] <- as.numeric(gsub(",", ".", cafe_1[[col]]))
}
cols_num_manual <- c() # ejemplo: c("Crecimiento_cm","Temp_C")
for (col in cols_num_manual) {
if (col %in% names(cafe_1)) {
cafe_1[[col]] <- as.numeric(gsub(",", ".", as.character(cafe_1[[col]])))
}
}
cat("\nEstructura del data.frame luego de conversiones:\n")
##
## Estructura del data.frame luego de conversiones:
str(cafe_1)
## 'data.frame': 99 obs. of 5 variables:
## $ Punto : Factor w/ 4 levels "P1","P2","P3",..: 1 1 1 2 2 2 3 3 3 4 ...
## $ Crecimiento_cm : Factor w/ 85 levels "48,04","48,49",..: 49 3 6 52 35 13 43 60 25 2 ...
## $ Temp_C : Factor w/ 92 levels "14,86","14,91",..: 49 75 46 21 72 21 52 70 20 16 ...
## $ Humedad_Suelo_.: Factor w/ 81 levels "15,1","15,4",..: 12 22 5 42 30 14 72 73 71 59 ...
## $ pH_Suelo : Factor w/ 4 levels "5,6","5,8","5,9",..: 1 1 1 2 2 2 4 4 4 3 ...
#Paso 3 Definir el estrato (usaremos “Punto” de la base)
nombre_estrato <- "Punto"
unique(cafe_1[[nombre_estrato]])
## [1] P1 P2 P3 P4
## Levels: P1 P2 P3 P4
if (! nombre_estrato %in% names(cafe_1)) {
stop(paste0("No se encontró la columna de estrato '", nombre_estrato, "'. Revisa los nombres de columnas."))
}
cat("Conteo por estrato (Punto):\n")
## Conteo por estrato (Punto):
print(table(cafe_1[[nombre_estrato]], useNA = "ifany"))
##
## P1 P2 P3 P4
## 27 24 24 24
prop_muestra <- 0.30
n_por_estrato <- 5
cat("Se usará prop_muestra =", prop_muestra, " (si n_por_estrato es 5)\n")
## Se usará prop_muestra = 0.3 (si n_por_estrato es 5)
set.seed(123)
nombre_estrato <- "Punto"
muestra_estratificada <- data.frame()
niveles <- unique(cafe_1[[nombre_estrato]])
for (nivel in niveles) {
estrato <- subset(cafe_1, cafe_1[[nombre_estrato]] == nivel)
n_estrato <- ceiling(nrow(estrato) * prop_muestra)
muestra_estrato <- estrato[sample(1:nrow(estrato), n_estrato), ]
muestra_estratificada <- rbind(muestra_estratificada, muestra_estrato)
}
head(muestra_estratificada)
## Punto Crecimiento_cm Temp_C Humedad_Suelo_. pH_Suelo
## 51 P1 50,28 17,79 20,9 5,6
## 73 P1 51,04 18,92 21,8 5,6
## 50 P1 50,09 22,15 18,3 5,6
## 3 P1 49,08 17,97 16,7 5,6
## 37 P1 50,55 18,46 17 5,6
## 63 P1 50,06 17,58 15,1 5,6
#prop_muestra <- 0.30 → significa que se seleccionará el 30 % de las observaciones dentro de cada estrato (en este caso, dentro de cada “Punto”).
#n_por_estrato <- 5 → sirve como referencia indicando que, idealmente, se espera obtener 5 observaciones por grupo, pero la proporción real depende del tamaño de cada estrato.
#En este caso, si un punto tiene 15 registros, se seleccionarán alrededor de 15 × 0.3 = 4.5 ≈ 5 observaciones, Si otro punto tiene solo 8 registros, se seleccionarán 8 × 0.3 = 2.4 ≈ 3 observaciones
#El muestreo estratificado aplicado aquí garantiza cobertura completa de la finca o área de estudio, ya que todos los “Puntos” están incluidos.
##3 Media poblacional (μ):## #Se estima la media de Punto1, Punto2, Punto3 y Punto4 para la variable crecimiento_cm#
datos <- c (50.28, 51.04,50.09,49.08,50.55,50.06,49.54,49.43,
51.14,49.99,49.5,50.36,50.17,50.01,49.56,50.5,49.86,49.41,50.73,49.64,51.92,50.88,50.03,51.49)
# Calcular la media
media <- mean(datos)
# Imprimir la media
print(media)
## [1] 50.21917
datos <- c (50.28, 51.04,50.09,49.08,50.55,50.06,49.54,49.43,
51.14,49.99,49.5,50.36,50.17,50.01,49.56,50.5,49.86,49.41,50.73,49.64,51.92,50.88,50.03,51.49)
summary(datos)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 49.08 49.62 50.08 50.22 50.59 51.92
#El crecimiento promedio de las plantas de cafe arbiga en los puntos 1,2,3,4 es de 50.2 cm.
varianza <- var(datos)
# Redondear la varianza a dos cifras significativas
varianza_redondeada <- round(varianza, 2)
# Imprimir la varianza redondeada
print(varianza_redondeada)
## [1] 0.5
desviacion <- sd(datos)
# Imprimir la varianza redondeada
print(desviacion)
## [1] 0.7091999
##Tomamos una muestra##
#5. Media muestral (x):
datos_muestra<- c(50.28, 51.04,50.09,49.08,50.55,50.06)
# Calcular la media
media_muestra <- mean(datos_muestra)
# Imprimir la media
print(media_muestra)
## [1] 50.18333
summary(datos_muestra)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 49.08 50.07 50.19 50.18 50.48 51.04
#6. Varianza muestral (s^2):
varianza_muestra<- var(datos_muestra)
# Redondear la varianza a dos cifras significativas
varianza_muestra_redondeada <- round(varianza_muestra, 2)
# Imprimir la varianza redondeada
print(varianza_muestra_redondeada)
## [1] 0.42
desviacion_muestra <- sd(datos_muestra)
# Imprimir la varianza redondeada
print(desviacion_muestra)
## [1] 0.650989
#7. Determinacion el sesgo :
if (media != media_muestra) {
print("Si hay sesgo en el estimador de crecimiento_cm")
} else {
print("El estimador de crecimiento_cm es insesgado")
}
## [1] "Si hay sesgo en el estimador de crecimiento_cm"
#8.Determinacion de consistencia: Para determinar la consistencia de los datos, primero de toman muestras con distinto tamaño:
muestra1 <-c(50.28, 51.04,50.09,49.08,50.55,50.06)
Tamaño_muestra1<-length(muestra1)
muestra2<- c(50.28, 51.04,50.09,49.08,50.55,50.06,49.54,49.43,
51.14,49.99,49.5,50.36)
Tamaño_muestra2<-length(muestra2)
datos <- c(50.28, 51.04,50.09,49.08,50.55,50.06,49.54,49.43,
51.14,49.99,49.5,50.36,50.17,50.01,49.56,50.5,49.86,49.41,50.73,49.64,51.92,50.88,50.03,51.49)
Tamaño_poblacio<-length(datos)
media_1<- mean(muestra1)
media_1
## [1] 50.18333
media_2<- mean(muestra2)
media_2
## [1] 50.08833
media_datos<- mean(datos)
media_datos
## [1] 50.21917
cat("El promedio del crecimiento_cm para una muestra con:",Tamaño_muestra1,"elementos es igual a:" ,media_1)
## El promedio del crecimiento_cm para una muestra con: 6 elementos es igual a: 50.18333
cat("El promedio del crecimiento_cm para una muestra con:",Tamaño_muestra2,"elementos es igual a:" ,media_2)
## El promedio del crecimiento_cm para una muestra con: 12 elementos es igual a: 50.08833
cat("El promedio del crecimiento_cm para las plantas:",Tamaño_poblacio,"es igual a:" ,media_datos)
## El promedio del crecimiento_cm para las plantas: 24 es igual a: 50.21917
cat("El promedio del crecimiento_cm para las plantas:",Tamaño_poblacio,"es igual a:" ,media_datos)
## El promedio del crecimiento_cm para las plantas: 24 es igual a: 50.21917
#Debido a las variaciones de la media para cada una de las distintas muestras con respecto a la media del crecimiento de las plantas se puede determinar que los datos son inconsistentes.
#9. Determinacion de Eficiencia
varianza_Poblacional <- var(datos)
varianza_Poblacional
## [1] 0.5029645
varianza_muestra1 <- var(muestra1)
varianza_muestra1
## [1] 0.4237867
varianza_muestra2 <- var(muestra2)
varianza_muestra2
## [1] 0.4038879
if (varianza_Poblacional < varianza_muestra1) {
print("Es eficiente")
} else {
print("No es eficiente")
}
## [1] "No es eficiente"