#LIBRERIAS
library(plotly)
## Warning: package 'plotly' was built under R version 4.2.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.2.3
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(ggplot2)
library(ape)
## Warning: package 'ape' was built under R version 4.2.3
library(gstat)
## Warning: package 'gstat' was built under R version 4.2.3
library(distrEx)
## Warning: package 'distrEx' was built under R version 4.2.3
## Loading required package: distr
## Warning: package 'distr' was built under R version 4.2.3
## Loading required package: startupmsg
## Warning: package 'startupmsg' was built under R version 4.2.3
## Utilities for Start-Up Messages (version 0.9.6.1)
## For more information see ?"startupmsg", NEWS("startupmsg")
## Loading required package: sfsmisc
## Object Oriented Implementation of Distributions (version 2.9.3)
## Attention: Arithmetics on distribution objects are understood as operations on corresponding random variables (r.v.s); see distrARITH().
## Some functions from package 'stats' are intentionally masked ---see distrMASK().
## Note that global options are controlled by distroptions() ---c.f. ?"distroptions".
## For more information see ?"distr", NEWS("distr"), as well as
## http://distr.r-forge.r-project.org/
## Package "distrDoc" provides a vignette to this package as well as to several extension packages; try vignette("distr").
##
## Attaching package: 'distr'
## The following objects are masked from 'package:stats':
##
## df, qqplot, sd
## Extensions of Package 'distr' (version 2.9.2)
## Note: Packages "e1071", "moments", "fBasics" should be attached /before/ package "distrEx". See distrExMASK().Note: Extreme value distribution functionality has been moved to
## package "RobExtremes". See distrExMOVED().
## For more information see ?"distrEx", NEWS("distrEx"), as well as
## http://distr.r-forge.r-project.org/
## Package "distrDoc" provides a vignette to this package as well as to several related packages; try vignette("distr").
##
## Attaching package: 'distrEx'
## The following objects are masked from 'package:stats':
##
## IQR, mad, median, var
library(gridExtra)
## Warning: package 'gridExtra' was built under R version 4.2.3
library(statip)
## Warning: package 'statip' was built under R version 4.2.3
##
## Attaching package: 'statip'
## The following object is masked from 'package:distrEx':
##
## plot
## The following object is masked from 'package:distr':
##
## plot
library(tidyr)
## Warning: package 'tidyr' was built under R version 4.2.3
cc = 1000376863
set.seed(cc)
ultimo_digito <- as.numeric(substr(cc, nchar(cc), nchar(cc)))
if (!is.na(ultimo_digito)) {
if (ultimo_digito == 1 || ultimo_digito == 2) {
a <- 6
b <- 24
} else if (ultimo_digito == 3 || ultimo_digito == 4) {
a <- 8
b <- 18
} else if (ultimo_digito == 5 || ultimo_digito == 4) {
a <- 12
b <- 12
} else if (ultimo_digito == 6 || ultimo_digito == 7) {
a <- 16
b <- 9
} else if (ultimo_digito == 8 || ultimo_digito == 9) {
a <- 18
b <- 8
} else {
a <- NA
b <- NA
}
} else {
a <- NA
b <- NA
}
print(paste("El tamaño de la grilla es", a, "x", b))
## [1] "El tamaño de la grilla es 8 x 18"
resp = runif(n = 144, min = 0.66, max = 0.86)
xy = expand.grid(x = 1:a, y = 1:b)
plot(xy,cex=0.5,pch=15)
# UNION DE LOS DATOS EN DATA FRAME
datos1 = data.frame(resp, x = xy$x, y = xy$y)
ggplot(datos1, aes(x = x, y = y, fill = resp)) +
geom_tile() +
theme_minimal() +
scale_fill_gradient(low = "green", high = "red")
m_dist=as.matrix(dist(cbind(datos1$x,datos1$y)))
m_resp=1/m_dist
diag(m_resp)<-0
w=m_resp
Moran.I(datos1$resp, w)
## $observed
## [1] -0.006190945
##
## $expected
## [1] -0.006993007
##
## $sd
## [1] 0.008379577
##
## $p.value
## [1] 0.9237459
NDVI_all = c()
for(i in seq(0.1,5,0.5)){
g.dummy = gstat(formula = z~1, locations = ~x+y,
dummy = T, beta = 0.5, model = vgm(psill = 0.0009,
range = i, model = 'Sph'), nmax = 20)
NDVI = predict(g.dummy, newdata = xy, nsim = 100)
NDVI_all = c(NDVI_all, NDVI)
}
## [using unconditional Gaussian simulation]
## [using unconditional Gaussian simulation]
## [using unconditional Gaussian simulation]
## [using unconditional Gaussian simulation]
## [using unconditional Gaussian simulation]
## [using unconditional Gaussian simulation]
## [using unconditional Gaussian simulation]
## [using unconditional Gaussian simulation]
## [using unconditional Gaussian simulation]
## [using unconditional Gaussian simulation]
datos = as.data.frame(NDVI_all)
tablas <- list()
n_columnas <- 102
for (i in 1:10) {
start_col <- (i - 1) * n_columnas + 1
end_col <- i * n_columnas
sub_tabla <- datos[, start_col:end_col]
#calculo de la media
suma_columnas <- rowSums(sub_tabla[, 3:102], na.rm = TRUE)
media_columnas <- suma_columnas / 100
#añadir columna con la media al final de la tabla
sub_tabla <- cbind(sub_tabla, media = media_columnas)
tablas[[i]] <- sub_tabla
}
calcular_moran <- function(tabla) {
sapply(tabla[, 3:102], function(columna) Moran.I(columna, w)$p.value)
}
# Aplicar la función a cada tabla
resultados_moran <- lapply(tablas, calcular_moran)
# Crear un data frame con los p-valores
df_pvalores <- data.frame(
pvalores = unlist(resultados_moran),
tabla = rep(1:length(resultados_moran), each = 100)
)
ggplot(df_pvalores, aes(x = pvalores)) +
geom_histogram(binwidth = 0.05, color = "black", fill = "skyblue") +
geom_vline(xintercept = 0.05, color = "red", linetype = "dashed", linewidth = 1) +
labs(title = "Distribución de p-valores del Índice de Moran por Rango",
x = "p-valor",
y = "Frecuencia") +
theme_minimal() +
facet_wrap(~ tabla, ncol = 2)
r1 = tablas[[1]]
r2 = tablas[[2]]
r3 = tablas[[3]]
r4 = tablas[[4]]
r5 = tablas[[5]]
r6 = tablas[[6]]
r7 = tablas[[7]]
r8 = tablas[[8]]
r9 = tablas[[9]]
r10 = tablas[[10]]
m1 <- Moran.I(r1$media, w)$p.value
m2 <- Moran.I(r2$media, w)$p.value
m3 <- Moran.I(r3$media, w)$p.value
m4 <- Moran.I(r4$media, w)$p.value
m5 <- Moran.I(r5$media, w)$p.value
m6 <- Moran.I(r6$media, w)$p.value
m7 <- Moran.I(r7$media, w)$p.value
m8 <- Moran.I(r8$media, w)$p.value
m9 <- Moran.I(r9$media, w)$p.value
m10 <- Moran.I(r10$media, w)$p.value
tablamoran = as.data.frame(rbind(m1,m2,m3,m4,m5,m6,m7,m8,m9,m10))
barplot(tablamoran$V1)
abline(h = 0.05, col = "red")
# Creación de tratamientos
tratamientos = sample(rep(paste0("T", 1:12), each = 12))
print(tratamientos)
## [1] "T1" "T8" "T5" "T8" "T2" "T3" "T9" "T6" "T7" "T11" "T3" "T5"
## [13] "T4" "T7" "T4" "T9" "T5" "T9" "T3" "T1" "T7" "T4" "T2" "T1"
## [25] "T5" "T10" "T8" "T8" "T10" "T2" "T5" "T1" "T4" "T2" "T2" "T6"
## [37] "T8" "T3" "T10" "T1" "T6" "T9" "T12" "T11" "T11" "T11" "T8" "T9"
## [49] "T3" "T7" "T5" "T6" "T1" "T2" "T7" "T5" "T2" "T12" "T6" "T6"
## [61] "T12" "T12" "T4" "T11" "T8" "T8" "T1" "T2" "T9" "T6" "T5" "T11"
## [73] "T6" "T6" "T5" "T12" "T6" "T2" "T1" "T11" "T10" "T5" "T9" "T4"
## [85] "T1" "T10" "T4" "T8" "T5" "T3" "T9" "T7" "T12" "T4" "T7" "T10"
## [97] "T7" "T3" "T11" "T9" "T5" "T12" "T12" "T4" "T10" "T10" "T12" "T12"
## [109] "T6" "T9" "T2" "T10" "T7" "T1" "T8" "T3" "T4" "T7" "T3" "T4"
## [121] "T2" "T3" "T8" "T10" "T7" "T8" "T12" "T6" "T11" "T11" "T1" "T10"
## [133] "T3" "T2" "T3" "T4" "T11" "T9" "T1" "T10" "T11" "T9" "T12" "T7"
# Añadir tratamientos a tabla de rango
r1 <- cbind(Tratamientos = tratamientos, r1)
ggplot(r1,aes(x=x,y=y,fill=sim1,label=tratamientos))+
geom_tile()+
geom_label(fill='white')+
theme_minimal()+
theme(legend.position = "none")
# crear una submuestra con columnas de interes
sbt1 <- r1[, 4:103]
#ANOVA para cada columna con respecto a los tratamientos
ranova1 <- lapply(sbt1, function(x) {
aov(x ~ r1[[1]])})
#Extraer el estadístico F de cada análisis de varianza
ef1 <- sapply(ranova1, function(x) {
summary(x)[[1]][1, "F value"]})
# Mostrar los estadísticos F
print(ef1)
## sim1 sim2 sim3 sim4 sim5 sim6 sim7 sim8
## 1.0359573 1.0069870 0.7140450 0.4941639 1.6153835 0.7647960 0.6475578 0.3776863
## sim9 sim10 sim11 sim12 sim13 sim14 sim15 sim16
## 0.2405995 1.0715126 1.3625834 0.4661630 0.7456730 0.8544826 0.2268002 0.4269961
## sim17 sim18 sim19 sim20 sim21 sim22 sim23 sim24
## 0.8206079 1.1603940 0.3042917 0.5317910 0.8081928 1.5402828 0.5923557 1.3595678
## sim25 sim26 sim27 sim28 sim29 sim30 sim31 sim32
## 0.8528755 0.9160554 0.9523219 0.6770102 2.2647749 1.4649582 0.4764506 0.3240481
## sim33 sim34 sim35 sim36 sim37 sim38 sim39 sim40
## 0.6012303 0.4050221 1.4084562 0.9985730 1.8003595 0.2987230 0.6969862 0.5593294
## sim41 sim42 sim43 sim44 sim45 sim46 sim47 sim48
## 0.4444674 1.3353080 1.0197188 0.7222278 1.2501834 1.4398292 0.4346018 0.9425081
## sim49 sim50 sim51 sim52 sim53 sim54 sim55 sim56
## 0.7145364 1.2075784 0.7033118 0.8339556 0.9048862 1.5557245 1.3319325 1.2460926
## sim57 sim58 sim59 sim60 sim61 sim62 sim63 sim64
## 0.6999305 1.2439526 0.6934259 2.5542595 1.5595637 1.3507918 0.6562236 0.5253461
## sim65 sim66 sim67 sim68 sim69 sim70 sim71 sim72
## 1.6121199 1.1245503 0.4963043 0.7621490 0.7582430 1.2232827 1.1250761 0.9985771
## sim73 sim74 sim75 sim76 sim77 sim78 sim79 sim80
## 1.7063430 0.6465764 0.8619237 0.9066171 0.4895844 1.1380776 0.7134978 1.2306241
## sim81 sim82 sim83 sim84 sim85 sim86 sim87 sim88
## 0.9409849 1.5693282 0.2219053 1.1247629 0.7188291 0.8965573 0.8399943 1.4481618
## sim89 sim90 sim91 sim92 sim93 sim94 sim95 sim96
## 0.7958536 0.8833244 0.5316503 0.5212424 1.1701936 1.0870618 1.2413254 0.7683567
## sim97 sim98 sim99 sim100
## 2.3462536 0.5841306 1.0222248 0.5443690
# DATOS UNIVERSALES (GRADOS DE LIBERTAD)
gl_numerador = 11
gl_denominador = 132
cuantil_95 <- qf(0.95, gl_numerador, gl_denominador)
hist(ef1,
main = "Estadísticos F Rango1",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
abline(v = mean(ef1), col = "red", lwd = 2)
abline(v = cuantil_95, col = "red", lwd = 2, lty = 2)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE)
r2 <- cbind(Tratamientos = tratamientos, r2)
sbt2 <- r2[, 4:103]
ranova2 <- lapply(sbt2, function(x) {
aov(x ~ r2[[1]])})
ef2 <- sapply(ranova2, function(x) {
summary(x)[[1]][1, "F value"]})
hist(ef2,
main = "Estadísticos F Rango2",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
abline(v = mean(ef2), col = "red", lwd = 2)
abline(v = cuantil_95, col = "red", lwd = 2, lty = 2)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE)
r3 <- cbind(Tratamientos = tratamientos, r3)
sbt3 <- r3[, 4:103]
ranova3 <- lapply(sbt3, function(x) {
aov(x ~ r3[[1]])})
ef3 <- sapply(ranova3, function(x) {
summary(x)[[1]][1, "F value"]})
hist(ef3,
main = "Estadísticos F Rango3",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
abline(v = mean(ef3), col = "red", lwd = 2)
abline(v = cuantil_95, col = "red", lwd = 2, lty = 2)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE)
r4 <- cbind(Tratamientos = tratamientos, r4)
sbt4 <- r4[, 4:103]
ranova4 <- lapply(sbt4, function(x) {
aov(x ~ r4[[1]])})
ef4 <- sapply(ranova4, function(x) {
summary(x)[[1]][1, "F value"]})
hist(ef4,
main = "Estadísticos F Rango4",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
abline(v = mean(ef4), col = "red", lwd = 2)
abline(v = cuantil_95, col = "red", lwd = 2, lty = 2)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE)
r5 <- cbind(Tratamientos = tratamientos, r5)
sbt5 <- r5[, 4:103]
ranova5 <- lapply(sbt5, function(x) {
aov(x ~ r5[[1]])})
ef5 <- sapply(ranova5, function(x) {
summary(x)[[1]][1, "F value"]})
hist(ef5,
main = "Estadísticos F Rango5",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
abline(v = mean(ef5), col = "red", lwd = 2)
abline(v = cuantil_95, col = "red", lwd = 2, lty = 2)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE)
r6 <- cbind(Tratamientos = tratamientos, r6)
sbt6 <- r6[, 4:103]
ranova6 <- lapply(sbt6, function(x) {
aov(x ~ r6[[1]])})
ef6 <- sapply(ranova6, function(x) {
summary(x)[[1]][1, "F value"]})
hist(ef6,
main = "Estadísticos F Rango6",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
abline(v = mean(ef6), col = "red", lwd = 2)
abline(v = cuantil_95, col = "red", lwd = 2, lty = 2)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE)
r7 <- cbind(Tratamientos = tratamientos, r7)
sbt7 <- r7[, 4:103]
ranova7 <- lapply(sbt7, function(x) {
aov(x ~ r7[[1]])})
ef7 <- sapply(ranova7, function(x) {
summary(x)[[1]][1, "F value"]})
hist(ef7,
main = "Estadísticos F Rango7",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
abline(v = mean(ef7), col = "red", lwd = 2)
abline(v = cuantil_95, col = "red", lwd = 2, lty = 2)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE)
r8 <- cbind(Tratamientos = tratamientos, r8)
sbt8 <- r8[, 4:103]
ranova8 <- lapply(sbt8, function(x) {
aov(x ~ r8[[1]])})
ef8 <- sapply(ranova8, function(x) {
summary(x)[[1]][1, "F value"]})
hist(ef8,
main = "Estadísticos F Rango8",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
abline(v = mean(ef8), col = "red", lwd = 2)
abline(v = cuantil_95, col = "red", lwd = 2, lty = 2)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE)
r9 <- cbind(Tratamientos = tratamientos, r9)
sbt9 <- r9[, 4:103]
ranova9 <- lapply(sbt9, function(x) {
aov(x ~ r9[[1]])})
ef9 <- sapply(ranova9, function(x) {
summary(x)[[1]][1, "F value"]})
hist(ef9,
main = "Estadísticos F Rango9",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
abline(v = mean(ef9), col = "red", lwd = 2)
abline(v = cuantil_95, col = "red", lwd = 2, lty = 2)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE)
r10 <- cbind(Tratamientos = tratamientos, r10)
sbt10 <- r10[, 4:103]
ranova10 <- lapply(sbt10, function(x) {
aov(x ~ r10[[1]])})
ef10 <- sapply(ranova10, function(x) {
summary(x)[[1]][1, "F value"]})
hist(ef10,
main = "Estadísticos F Rango10",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
abline(v = mean(ef10), col = "red", lwd = 2)
abline(v = cuantil_95, col = "red", lwd = 2, lty = 2)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE)
# Configurar la disposición de la ventana gráfica para 2 filas y 5 columnas
par(mfrow = c(2, 5))
# Suponiendo que tienes 10 conjuntos de datos ef1, ef2, ..., ef10 y cuantil_95_1, cuantil_95_2, ..., cuantil_95_10
for (i in 1:10) {
# Genera los nombres de las variables dinámicamente
ef <- get(paste0("ef", i))
# Crear el histograma
hist(ef,
main = paste("Rango", i),
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
# Añadir líneas verticales y curva de distribución
abline(v = mean(ef), col = "red", lwd = 2)
abline(v = cuantil_95, col = "red", lwd = 2, lty = 2)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE)
}
# Restablecer la disposición de la ventana gráfica
par(mfrow = c(1, 1))
# Filtrar los valores mayores o iguales al cuantil 95
ef1_95 <- ef1[ef1 >= cuantil_95]
# Crear el histograma solo con los valores filtrados
hist(ef1_95,
main = "Valores del Cuantil 95 del Estadístico F Rango1",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
# Añadir la curva de la distribución F solo para los valores mayores o iguales al cuantil 95
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE,
from = cuantil_95)
ef2_95 <- ef2[ef2 >= cuantil_95]
hist(ef2_95,
main = "Valores del Cuantil 95 del Estadístico F Rango2",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE,
from = cuantil_95)
ef3_95 <- ef3[ef3 >= cuantil_95]
hist(ef3_95,
main = "Valores del Cuantil 95 del Estadístico F Rango3",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE,
from = cuantil_95)
ef4_95 <- ef4[ef4 >= cuantil_95]
hist(ef4_95,
main = "Valores del Cuantil 95 del Estadístico F Rango4",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE,
from = cuantil_95)
ef5_95 <- ef5[ef5 >= cuantil_95]
hist(ef5_95,
main = "Valores del Cuantil 95 del Estadístico F Rango5",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE,
from = cuantil_95)
ef6_95 <- ef6[ef6 >= cuantil_95]
hist(ef6_95,
main = "Valores del Cuantil 95 del Estadístico F Rango6",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE,
from = cuantil_95)
ef7_95 <- ef7[ef7 >= cuantil_95]
hist(ef7_95,
main = "Valores del Cuantil 95 del Estadístico F Rango7",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE,
from = cuantil_95)
ef8_95 <- ef8[ef8 >= cuantil_95]
hist(ef8_95,
main = "Valores del Cuantil 95 del Estadístico F Rango8",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE,
from = cuantil_95)
ef9_95 <- ef9[ef9 >= cuantil_95]
hist(ef9_95,
main = "Valores del Cuantil 95 del Estadístico F Rango9",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE,
from = cuantil_95)
ef10_95 <- ef10[ef10 >= cuantil_95]
hist(ef10_95,
main = "Valores del Cuantil 95 del Estadístico F Rango10",
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE,
from = cuantil_95)
# Grafica solo cuantil 95
par(mfrow = c(2, 5))
for (i in 1:10) {
ef1_95 <- get(paste0("ef",i,"_95"))
hist(ef1_95,
main = paste("ef",i),
xlab = "Valores del Estadístico F",
ylab = "Frecuencia",
col = "blue",
border = "black",
breaks = 50)
curve(df(x, df1 = gl_numerador, df2 = gl_denominador),
col = "darkgreen",
lwd = 2,
add = TRUE,
from = cuantil_95)
}
par(mfrow = c(1, 1))
d1 = HellingerDist(Fd(df1 = gl_numerador , df2 = gl_denominador),e2 = ef1)
d2 = HellingerDist(Fd(df1 = gl_numerador , df2 = gl_denominador),e2 = ef2)
d3 = HellingerDist(Fd(df1 = gl_numerador , df2 = gl_denominador),e2 = ef3)
d4 = HellingerDist(Fd(df1 = gl_numerador , df2 = gl_denominador),e2 = ef4)
d5 = HellingerDist(Fd(df1 = gl_numerador , df2 = gl_denominador),e2 = ef5)
d6 = HellingerDist(Fd(df1 = gl_numerador , df2 = gl_denominador),e2 = ef6)
d7 = HellingerDist(Fd(df1 = gl_numerador , df2 = gl_denominador),e2 = ef7)
d8 = HellingerDist(Fd(df1 = gl_numerador , df2 = gl_denominador),e2 = ef8)
d9 = HellingerDist(Fd(df1 = gl_numerador , df2 = gl_denominador),e2 = ef9)
d10 = HellingerDist(Fd(df1 = gl_numerador, df2 = gl_denominador),e2 = ef10)
tabladistancias = as.data.frame(rbind(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10))
barplot(tabladistancias$`Hellinger distance`)
abline(h = mean(tabladistancias$`Hellinger distance`, col = "red"))
# Crear una secuencia de valores para la variable x
x_vals <- seq(0, 5, length.out = 100)
# Calcular la densidad de la distribución F para cada valor de x
dens_vals <- df(x_vals, df1 = gl_numerador, df2 = gl_denominador)
# Crear un data frame con los valores de x y su densidad correspondiente
df_plot <- data.frame(x = x_vals, density = dens_vals)
# Calcular los deciles (10%, 20%, ..., 90%)
deciles <- qf(seq(0.1, 1, by = 0.1), df1 = gl_numerador, df2 = gl_denominador)
# Visualizar la distribución F con la segmentación en deciles
ggplot(df_plot, aes(x = x, y = density)) +
geom_line(color = "blue", linewidth = 1) + # Línea de la función de densidad
geom_area(data = df_plot %>% filter(x <= deciles[1]), fill = "red", alpha = 0.4) +
geom_area(data = df_plot %>% filter(x > deciles[1] & x <= deciles[2]), fill = "orange", alpha = 0.4) +
geom_area(data = df_plot %>% filter(x > deciles[2] & x <= deciles[3]), fill = "yellow", alpha = 0.4) +
geom_area(data = df_plot %>% filter(x > deciles[3] & x <= deciles[4]), fill = "green", alpha = 0.4) +
geom_area(data = df_plot %>% filter(x > deciles[4] & x <= deciles[5]), fill = "lightblue", alpha = 0.4) +
geom_area(data = df_plot %>% filter(x > deciles[5] & x <= deciles[6]), fill = "blue", alpha = 0.4) +
geom_area(data = df_plot %>% filter(x > deciles[6] & x <= deciles[7]), fill = "purple", alpha = 0.4) +
geom_area(data = df_plot %>% filter(x > deciles[7] & x <= deciles[8]), fill = "pink", alpha = 0.4) +
geom_area(data = df_plot %>% filter(x > deciles[8] & x <= deciles[9]), fill = "brown", alpha = 0.4) +
geom_area(data = df_plot %>% filter(x > deciles[9] & x <= deciles[10]), fill = "black", alpha = 0.4) +
labs(title = "Distribución F segmentada en deciles",
x = "Valores de la distribución F",
y = "Densidad") +
theme_minimal()
# Crear la secuencia de valores para la distribución F
x_vals <- seq(0, 5, length.out = 100)
dens_vals <- df(x_vals, df1 = gl_numerador, df2 = gl_denominador)
# Asumimos que las distribuciones ef1, ef2, ..., ef10 ya están en el entorno
ef_list <- list(ef1, ef2, ef3, ef4, ef5, ef6, ef7, ef8, ef9, ef10)
# Calcular los deciles para la distribución F
deciles <- qf(seq(0.1, 0.9, by = 0.1), df1 = gl_numerador, df2 = gl_denominador)
# Función para calcular la distancia de Hellinger en un decil, con manejo de errores
hellinger_by_decil <- function(lower_bound, upper_bound, f_dist, ef_dist) {
# Filtrar los valores en el rango del decil
f_decile <- f_dist[x_vals >= lower_bound & x_vals <= upper_bound]
ef_decile <- ef_dist[x_vals >= lower_bound & x_vals <= upper_bound]
# Normalizar las distribuciones en el rango para compararlas
f_decile <- f_decile / sum(f_decile)
ef_decile <- ef_decile / sum(ef_decile)
# Calcular la distancia de Hellinger con manejo de errores
hellinger_dist <- tryCatch({
hellinger(f_decile, ef_decile)
}, error = function(e) {
warning("Error en el cálculo de Hellinger: ", e$message)
return(NA)
})
return(hellinger_dist)
}
# Crear un dataframe para almacenar los resultados de Hellinger
results <- data.frame(ef_number = integer(), decil_number = integer(), hellinger_value = numeric())
# Calcular la distancia de Hellinger para cada decil y cada distribución ef
for (ef_idx in 1:10) {
ef_dist <- ef_list[[ef_idx]]
for (i in 1:length(deciles)) {
if (i == 1) {
lower_bound <- 0
} else {
lower_bound <- deciles[i-1]
}
upper_bound <- deciles[i]
# Calcular la distancia de Hellinger en este decil
h_dist <- hellinger_by_decil(lower_bound, upper_bound, dens_vals, ef_dist)
# Almacenar el resultado en el dataframe
if (!is.na(h_dist)) {
results <- rbind(results, data.frame(ef_number = ef_idx, decil_number = i, hellinger_value = h_dist))
}
}
}
# Graficar los resultados: una gráfica para cada decil con barras y línea de la media
for (i in 1:9) {
# Filtrar los resultados para el decil i
decil_data <- results %>% filter(decil_number == i)
# Calcular la media de las distancias de Hellinger en este decil
mean_hellinger <- mean(decil_data$hellinger_value, na.rm = TRUE)
# Crear la gráfica de barras con la línea de la media
p <- ggplot(decil_data, aes(x = factor(ef_number), y = hellinger_value)) +
geom_bar(stat = "identity", fill = "skyblue") +
geom_hline(yintercept = mean_hellinger, linetype = "dashed", color = "red", linewidth = 1) + # Línea de la media
scale_x_discrete(labels = 1:10) + # Escala del eje X de 1 a 10
labs(title = paste("Distancia de Hellinger - Decil", i),
x = "Distribución ef",
y = "Distancia de Hellinger") +
theme_minimal()
# Mostrar la gráfica
print(p)
}