librerias

library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(readxl)
  1. Carga de los datos
MAIZ <- read_excel("C:/Users/lufca/OneDrive/Escritorio/Tesis/REVISSAS/Dialelicos/MAIZ1.xlsx", 
    sheet = "Hoja1")
View(MAIZ)
  1. Ajustar datos
MAIZ$BLOQUE
##   [1] "1.0" "1.0" "1.0" "1.0" "1.0" "1.0" "1.0" "1.0" "1.0" "1.0" "1.0" "1.0"
##  [13] "1.0" "1.0" "1.0" "1.0" "1.0" "1.0" "1.0" "1.0" "1.0" "2.0" "2.0" "2.0"
##  [25] "2.0" "2.0" "2.0" "2.0" "2.0" "2.0" "2.0" "2.0" "2.0" "2.0" "2.0" "2.0"
##  [37] "2.0" "2.0" "2.0" "2.0" "2.0" "2.0" "3.0" "3.0" "3.0" "3.0" "3.0" "3.0"
##  [49] "3.0" "3.0" "3.0" "3.0" "3.0" "3.0" "3.0" "3.0" "3.0" "3.0" "3.0" "3.0"
##  [61] "3.0" "3.0" "3.0" "1.0" "1.0" "1.0" "1.0" "1.0" "1.0" "1.0" "1.0" "1.0"
##  [73] "1.0" "1.0" "1.0" "1.0" "1.0" "1.0" "1.0" "1.0" "1.0" "1.0" "1.0" "1.0"
##  [85] "2.0" "2.0" "2.0" "2.0" "2.0" "2.0" "2.0" "2.0" "2.0" "2.0" "2.0" "2.0"
##  [97] "2.0" "2.0" "2.0" "2.0" "2.0" "2.0" "2.0" "2.0" "2.0" "3.0" "3.0" "3.0"
## [109] "3.0" "3.0" "3.0" "3.0" "3.0" "3.0" "3.0" "3.0" "3.0" "3.0" "3.0" "3.0"
## [121] "3.0" "3.0" "3.0" "3.0" "3.0" "3.0"
MAIZ$H<-as.factor(MAIZ$H)
MAIZ$P<-as.factor(MAIZ$P)
MAIZ$PS<-as.numeric(MAIZ$PS)
table(MAIZ$SEMESTRE)
## 
## 1.0 2.0 
##  63  63
  1. Matriz
GARNER <- MAIZ %>%
  filter(SEMESTRE == "1.0") %>%   
  group_by(H, P) %>%         
  summarise(M = sum(PS),.groups = 'drop') %>% 
  ungroup()               

# Verifica el resultado
print(GARNER)
## # A tibble: 21 × 3
##    H     P         M
##    <fct> <fct> <dbl>
##  1 1.0   1.0     1.1
##  2 1.0   2.0     2.4
##  3 1.0   3.0     3.5
##  4 1.0   4.0     3  
##  5 1.0   5.0     2.1
##  6 1.0   6.0     4.4
##  7 2.0   2.0     1.9
##  8 2.0   3.0     3.8
##  9 2.0   4.0     4.9
## 10 2.0   5.0     4.1
## # ℹ 11 more rows
  1. Modelo lineal generalizado
MAIZ_filtrado <- MAIZ %>% filter(SEMESTRE == "1.0")
modelo <- lm(PS ~ BLOQUE + interaction(H,P)  , data = MAIZ_filtrado)
primero<-anova(modelo)
print(primero)
## Analysis of Variance Table
## 
## Response: PS
##                   Df Sum Sq Mean Sq F value    Pr(>F)    
## BLOQUE             2 3.4337 1.71683  25.627 6.857e-08 ***
## interaction(H, P) 20 9.1927 0.45963   6.861 1.344e-07 ***
## Residuals         40 2.6797 0.06699                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Establecer contraste tipo I explícitamente
options(contrasts = c("contr.sum", "contr.poly"))

# Ajustar el modelo
modelo <- glm(PS ~ BLOQUE + interaction(H,P), data = MAIZ_filtrado)

# Ver la ANOVA
anova(modelo)
## Analysis of Deviance Table
## 
## Model: gaussian, link: identity
## 
## Response: PS
## 
## Terms added sequentially (first to last)
## 
## 
##                   Df Deviance Resid. Df Resid. Dev      F    Pr(>F)    
## NULL                                 62    15.3060                     
## BLOQUE             2   3.4337        60    11.8724 25.627 6.857e-08 ***
## interaction(H, P) 20   9.1927        40     2.6797  6.861 1.344e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Error

ERROR<-primero["Residuals", "Sum Sq"]
print(ERROR)
## [1] 2.679683

##Empienza dialelico

INV<-GARNER[,c("H", "P","M")]

¿Por qué es necesarion cambiar el orden de los padres?

INV1<-INV[INV$H != INV$P, ]
INV1$H1<-INV1$H
INV1$P1<-INV1$P

TRABAJAR CON INV1

temp <- INV1$H
INV1$H <- INV1$P
INV1$P <- temp

BIEN4

INV2<- INV1[, 1:3]
GARNER<-rbind(GARNER,INV2)

TOTAL PENDIENTE

TOTAL <- GARNER %>%
  group_by(H) %>%         
  summarize(
    YP = mean(M, na.rm = TRUE),  
    Y = sum(M, na.rm = TRUE)
  )
print(TOTAL)
## # A tibble: 6 × 3
##   H        YP     Y
##   <fct> <dbl> <dbl>
## 1 1.0    2.75  16.5
## 2 2.0    3.63  21.8
## 3 3.0    3.5   21  
## 4 4.0    3.82  22.9
## 5 5.0    3.6   21.6
## 6 6.0    3.97  23.8
GARNER$H<-as.numeric(GARNER$H)
GARNER$P<-as.numeric(GARNER$P)

LO OTRO

DIAG <- GARNER %>% filter(!(H > P))
print(DIAG)
## # A tibble: 21 × 3
##        H     P     M
##    <dbl> <dbl> <dbl>
##  1     1     1   1.1
##  2     1     2   2.4
##  3     1     3   3.5
##  4     1     4   3  
##  5     1     5   2.1
##  6     1     6   4.4
##  7     2     2   1.9
##  8     2     3   3.8
##  9     2     4   4.9
## 10     2     5   4.1
## # ℹ 11 more rows

Linea 199 bien

SUM <- sum(DIAG$M, na.rm = TRUE)             # Suma de los valores de M
USS <- sum(DIAG$M^2, na.rm = TRUE) 

# Crear un nuevo data frame con los resultados
TOT <- data.frame(SUM = SUM, USS = USS )
PADRES <- GARNER %>%
  filter(H == P)
print(PADRES)
## # A tibble: 6 × 3
##       H     P     M
##   <dbl> <dbl> <dbl>
## 1     1     1   1.1
## 2     2     2   1.9
## 3     3     3   1.9
## 4     4     4   2.5
## 5     5     5   3.2
## 6     6     6   1.4

BIEN

H<- PADRES %>% 
  group_by(H) %>%
  summarise(MEANH = mean(M, na.rm = TRUE))

BIEN

P <- PADRES %>%
  group_by(P) %>%
  summarise(MEANP = mean(M, na.rm = TRUE))

Bien linea 218

MG <- PADRES %>%
  summarise(MG = mean(M, na.rm = TRUE),
            TOTAL = sum(M, na.rm = TRUE),
            USSP = sum((M )^2, na.rm = TRUE))
print(MG)
## # A tibble: 1 × 3
##      MG TOTAL  USSP
##   <dbl> <dbl> <dbl>
## 1     2    12  26.9

Diferencia

ahora

DIF1<- merge(MG, PADRES, by = NULL) 

# Calcular DIF para cada combinación
DIF1$DIF <- (DIF1$M - DIF1$MG) * 0.5

# Ver el resultado
print(DIF1)
##   MG TOTAL  USSP H P   M   DIF
## 1  2    12 26.88 1 1 1.1 -0.45
## 2  2    12 26.88 2 2 1.9 -0.05
## 3  2    12 26.88 3 3 1.9 -0.05
## 4  2    12 26.88 4 4 2.5  0.25
## 5  2    12 26.88 5 5 3.2  0.60
## 6  2    12 26.88 6 6 1.4 -0.30

Bien continuar en la linea 227

Ajuste por escritura

TOTAL$H <- as.integer(TOTAL$H)
TEMP<- merge(PADRES, TOTAL, by = "H", all = TRUE)
TEMP$SS <- (TEMP$M + TEMP$Y)^2
print(TEMP)
##   H P   M       YP    Y     SS
## 1 1 1 1.1 2.750000 16.5 309.76
## 2 2 2 1.9 3.633333 21.8 561.69
## 3 3 3 1.9 3.500000 21.0 524.41
## 4 4 4 2.5 3.816667 22.9 645.16
## 5 5 5 3.2 3.600000 21.6 615.04
## 6 6 6 1.4 3.966667 23.8 635.04

La sumatoria

SS<-sum(TEMP$SS)
SS1 <- data.frame(SS)
SS1$FREQ<-6
print(SS)
## [1] 3291.1

Frecuencias

SSV<-merge(TOT,SS1)

SIGUIENTE

SSV$SSV <- (1 / (SSV$FREQ + 2)) * (SSV$SS - ((4 / SSV$FREQ) * (SSV$SUM^2)))
SSV$SSH <- SSV$USS - (SSV$SS / (SSV$FREQ + 2)) + 
            ((2 / ((SSV$FREQ + 1) * (SSV$FREQ + 2))) * (SSV$SUM^2))
print(SSV)
##    SUM    USS     SS FREQ      SSV      SSH
## 1 69.8 259.58 3291.1    6 5.384167 22.19393
colnames(SSV)[colnames(SSV) == "SUM"]<-"TOT"

Linea 240 bien

Datos HIJOS

HIJOS<- GARNER %>% filter((H != P))

Medias de hijos

MEDIA1 <- HIJOS %>%
  group_by(H) %>%
  summarise(
    YNP = mean(M),                
    YN = sum(M),                 
  )
MEDIA1$FREQ<-c(5,5,5,5,5,5)
print(MEDIA1)
## # A tibble: 6 × 4
##       H   YNP    YN  FREQ
##   <dbl> <dbl> <dbl> <dbl>
## 1     1  3.08  15.4     5
## 2     2  3.98  19.9     5
## 3     3  3.82  19.1     5
## 4     4  4.08  20.4     5
## 5     5  3.68  18.4     5
## 6     6  4.48  22.4     5

MEDIA PENDIENTE

MEDIAX <- HIJOS %>%
  group_by(P) %>%
  summarise(
    YNPP = mean(M),                # Media de M
    YN = sum(M),                  # Suma de M
  )
MEDIAX$N<-c(5,5,5,5,5,5)
print(MEDIAX)
## # A tibble: 6 × 4
##       P  YNPP    YN     N
##   <dbl> <dbl> <dbl> <dbl>
## 1     1  3.08  15.4     5
## 2     2  3.98  19.9     5
## 3     3  3.82  19.1     5
## 4     4  4.08  20.4     5
## 5     5  3.68  18.4     5
## 6     6  4.48  22.4     5

segunda media

MEDIA2 <- HIJOS %>%
  summarise(
    YHP = mean(M),   
    YH = sum(M),
    FREQ = sum(MEDIA1$FREQ)
  )
print(MEDIA2)
## # A tibble: 1 × 3
##     YHP    YH  FREQ
##   <dbl> <dbl> <dbl>
## 1  3.85  116.    30
DIF2 <- merge(MEDIA2, MEDIA1, by = NULL, suffixes = c("_MEDIA2", "_MEDIA1"))
# Calcular YHDIF usando operaciones vectorizadas
DIF2$YHDIF <- (DIF2$FREQ_MEDIA1/ (DIF2$FREQ_MEDIA1 - 1)) * (DIF2$YNP - DIF2$YHP)
print(DIF2)
##        YHP    YH FREQ_MEDIA2 H  YNP   YN FREQ_MEDIA1       YHDIF
## 1 3.853333 115.6          30 1 3.08 15.4           5 -0.96666667
## 2 3.853333 115.6          30 2 3.98 19.9           5  0.15833333
## 3 3.853333 115.6          30 3 3.82 19.1           5 -0.04166667
## 4 3.853333 115.6          30 4 4.08 20.4           5  0.28333333
## 5 3.853333 115.6          30 5 3.68 18.4           5 -0.21666667
## 6 3.853333 115.6          30 6 4.48 22.4           5  0.78333333

##Heterosis

HETEROSIS<-merge(DIF1, DIF2)

Columnas

HETEROSIS$HP= HETEROSIS$YHP- HETEROSIS$MG
HETEROSIS$HJ = HETEROSIS$YHDIF- HETEROSIS$DI
HETEROSIS$VJ = (HETEROSIS$DIF)*2
print(HETEROSIS[,c("P", "HP","VJ","HJ")])
##   P       HP   VJ           HJ
## 1 1 1.853333 -0.9 -0.516666667
## 2 2 1.853333 -0.1  0.208333333
## 3 3 1.853333 -0.1  0.008333333
## 4 4 1.853333  0.5  0.033333333
## 5 5 1.853333  1.2 -0.816666667
## 6 6 1.853333 -0.6  1.083333333

HIJOS2

library(dplyr)
HIJOS2<- DIAG %>% filter(H != P)

resumen

mean_M <- mean(HIJOS2$M)
sum_M <- sum(HIJOS2$M)
uss_M <- sum((HIJOS2$M)^2)  # Suma de los cuadrados de las desviaciones

# Crear un nuevo data frame con los resultados
TOT1 <- data.frame(USS = uss_M, MEAN = mean_M, TOT1 = sum_M)

# Ver el resultado
print(TOT1)
##     USS     MEAN TOT1
## 1 232.7 3.853333 57.8
HIJOS2 <- HIJOS2 %>%
  arrange(H)

OTRO

EH1<-merge(H, HIJOS2)
print(EH1)
##    H MEANH P   M
## 1  1   1.1 2 2.4
## 2  1   1.1 3 3.5
## 3  1   1.1 4 3.0
## 4  1   1.1 5 2.1
## 5  1   1.1 6 4.4
## 6  2   1.9 3 3.8
## 7  2   1.9 4 4.9
## 8  2   1.9 5 4.1
## 9  2   1.9 6 4.7
## 10 3   1.9 4 4.0
## 11 3   1.9 5 4.0
## 12 3   1.9 6 3.8
## 13 4   2.5 5 3.6
## 14 4   2.5 6 4.9
## 15 5   3.2 6 4.6

ORDENAR

EH1<-EH1%>%
  arrange(H,P)
HIJOS2 <- HIJOS2 %>%
  arrange(P)
EH2<-merge(P,HIJOS2)
print(EH2)
##    P MEANP H   M
## 1  2   1.9 1 2.4
## 2  3   1.9 1 3.5
## 3  3   1.9 2 3.8
## 4  4   2.5 1 3.0
## 5  4   2.5 2 4.9
## 6  4   2.5 3 4.0
## 7  5   3.2 1 2.1
## 8  5   3.2 2 4.1
## 9  5   3.2 3 4.0
## 10 5   3.2 4 3.6
## 11 6   1.4 1 4.4
## 12 6   1.4 2 4.7
## 13 6   1.4 3 3.8
## 14 6   1.4 4 4.9
## 15 6   1.4 5 4.6

organizar

EH2<-EH2%>%
  arrange(H,P)
print(EH2)
##    P MEANP H   M
## 1  2   1.9 1 2.4
## 2  3   1.9 1 3.5
## 3  4   2.5 1 3.0
## 4  5   3.2 1 2.1
## 5  6   1.4 1 4.4
## 6  3   1.9 2 3.8
## 7  4   2.5 2 4.9
## 8  5   3.2 2 4.1
## 9  6   1.4 2 4.7
## 10 4   2.5 3 4.0
## 11 5   3.2 3 4.0
## 12 6   1.4 3 3.8
## 13 5   3.2 4 3.6
## 14 6   1.4 4 4.9
## 15 6   1.4 5 4.6

OTRO

EH<-merge(EH1, EH2)

NUEVA

EH$HH<-EH$M- ((EH$MEANP+EH$MEANH)/2)

OTRO CONJUNTO DE DATOS

EH<-EH%>%
  arrange(H,P)
print(EH)
##    H P   M MEANH MEANP    HH
## 1  1 2 2.4   1.1   1.9  0.90
## 2  1 3 3.5   1.1   1.9  2.00
## 3  1 4 3.0   1.1   2.5  1.20
## 4  1 5 2.1   1.1   3.2 -0.05
## 5  1 6 4.4   1.1   1.4  3.15
## 6  2 3 3.8   1.9   1.9  1.90
## 7  2 4 4.9   1.9   2.5  2.70
## 8  2 5 4.1   1.9   3.2  1.55
## 9  2 6 4.7   1.9   1.4  3.05
## 10 3 4 4.0   1.9   2.5  1.80
## 11 3 5 4.0   1.9   3.2  1.45
## 12 3 6 3.8   1.9   1.4  2.15
## 13 4 5 3.6   2.5   3.2  0.75
## 14 4 6 4.9   2.5   1.4  2.95
## 15 5 6 4.6   3.2   1.4  2.30

cambiar el orden

HIJOS2<-HIJOS2%>%
  arrange(H)
EHS1<-merge(MEDIA1,HIJOS2)
print(EHS1)
##    H  YNP   YN FREQ P   M
## 1  1 3.08 15.4    5 2 2.4
## 2  1 3.08 15.4    5 3 3.5
## 3  1 3.08 15.4    5 4 3.0
## 4  1 3.08 15.4    5 5 2.1
## 5  1 3.08 15.4    5 6 4.4
## 6  2 3.98 19.9    5 3 3.8
## 7  2 3.98 19.9    5 4 4.9
## 8  2 3.98 19.9    5 5 4.1
## 9  2 3.98 19.9    5 6 4.7
## 10 3 3.82 19.1    5 4 4.0
## 11 3 3.82 19.1    5 5 4.0
## 12 3 3.82 19.1    5 6 3.8
## 13 4 4.08 20.4    5 5 3.6
## 14 4 4.08 20.4    5 6 4.9
## 15 5 3.68 18.4    5 6 4.6

ORDENAR

EHS1<-EHS1%>%
  arrange(H,P)

ordenar otra vez

HIJOS2<-HIJOS2%>%
  arrange(P)

otro

EHS2<-merge(MEDIAX,HIJOS2)

organizados

EHS2<-EHS2%>%
  arrange(H,P)
print(EHS2)
##    P YNPP   YN N H   M
## 1  2 3.98 19.9 5 1 2.4
## 2  3 3.82 19.1 5 1 3.5
## 3  4 4.08 20.4 5 1 3.0
## 4  5 3.68 18.4 5 1 2.1
## 5  6 4.48 22.4 5 1 4.4
## 6  3 3.82 19.1 5 2 3.8
## 7  4 4.08 20.4 5 2 4.9
## 8  5 3.68 18.4 5 2 4.1
## 9  6 4.48 22.4 5 2 4.7
## 10 4 4.08 20.4 5 3 4.0
## 11 5 3.68 18.4 5 3 4.0
## 12 6 4.48 22.4 5 3 3.8
## 13 5 3.68 18.4 5 4 3.6
## 14 6 4.48 22.4 5 4 4.9
## 15 6 4.48 22.4 5 5 4.6

OTRO

EHS3 <- merge(EHS1, EHS2, all.x = TRUE)
EHS3$YNPP<-EHS2$YNPP
EHS3$N<-5

otro

HSS <- cbind(EHS3, MEDIA2)
HSS$K<-  ((HSS$N + 1) / (HSS$N - 1)) * HSS$YHP
HSS$A<- (HSS$N / (HSS$N - 1)) * (HSS$YNP + HSS$YNPP)
HSS$SS <- HSS$M + HSS$K - HSS$A
print(HSS)
##    H   YN P   M  YNP FREQ YNPP N      YHP    YH FREQ    K      A     SS
## 1  1 15.4 2 2.4 3.08    5 3.98 5 3.853333 115.6   30 5.78  8.825 -0.645
## 2  1 15.4 3 3.5 3.08    5 3.82 5 3.853333 115.6   30 5.78  8.625  0.655
## 3  1 15.4 4 3.0 3.08    5 4.08 5 3.853333 115.6   30 5.78  8.950 -0.170
## 4  1 15.4 5 2.1 3.08    5 3.68 5 3.853333 115.6   30 5.78  8.450 -0.570
## 5  1 15.4 6 4.4 3.08    5 4.48 5 3.853333 115.6   30 5.78  9.450  0.730
## 6  2 19.9 3 3.8 3.98    5 3.82 5 3.853333 115.6   30 5.78  9.750 -0.170
## 7  2 19.9 4 4.9 3.98    5 4.08 5 3.853333 115.6   30 5.78 10.075  0.605
## 8  2 19.9 5 4.1 3.98    5 3.68 5 3.853333 115.6   30 5.78  9.575  0.305
## 9  2 19.9 6 4.7 3.98    5 4.48 5 3.853333 115.6   30 5.78 10.575 -0.095
## 10 3 19.1 4 4.0 3.82    5 4.08 5 3.853333 115.6   30 5.78  9.875 -0.095
## 11 3 19.1 5 4.0 3.82    5 3.68 5 3.853333 115.6   30 5.78  9.375  0.405
## 12 3 19.1 6 3.8 3.82    5 4.48 5 3.853333 115.6   30 5.78 10.375 -0.795
## 13 4 20.4 5 3.6 4.08    5 3.68 5 3.853333 115.6   30 5.78  9.700 -0.320
## 14 4 20.4 6 4.9 4.08    5 4.48 5 3.853333 115.6   30 5.78 10.700 -0.020
## 15 5 18.4 6 4.6 3.68    5 4.48 5 3.853333 115.6   30 5.78 10.200  0.180

##PARAMETROS ESTIMADOS DE HETEROSIS POR VARIEDAD Y EFECTOS ESTIMADOS PARA HETEROSIS ESPECIFICA EFECTOS

EFECTOS<-merge(EH, HSS)
print(EFECTOS[,c("H","P","M","HH","SS")])
##    H P   M    HH     SS
## 1  1 2 2.4  0.90 -0.645
## 2  1 3 3.5  2.00  0.655
## 3  1 4 3.0  1.20 -0.170
## 4  1 5 2.1 -0.05 -0.570
## 5  1 6 4.4  3.15  0.730
## 6  2 3 3.8  1.90 -0.170
## 7  2 4 4.9  2.70  0.605
## 8  2 5 4.1  1.55  0.305
## 9  2 6 4.7  3.05 -0.095
## 10 3 4 4.0  1.80 -0.095
## 11 3 5 4.0  1.45  0.405
## 12 3 6 3.8  2.15 -0.795
## 13 4 5 3.6  0.75 -0.320
## 14 4 6 4.9  2.95 -0.020
## 15 5 6 4.6  2.30  0.180
SSH<-cbind(TOT1,TOT, MG)

OJO

x<-sum(EFECTOS$SS)

¿Por qué ese número de frecuencia

SSH$A <- (SSH$TOTAL^2) / 6
SSH$B <- 2 * (SSH$TOT1^2) / (6 * (6 - 1))
SSH$C <- 2 * (SSH$SUM)^2 / (6 * (6 + 1))
SSH$SSHP <- SSH$A + SSH$B - SSH$C
print(SSH)
##     USS     MEAN TOT1  SUM    USS MG TOTAL  USSP  A        B        C     SSHP
## 1 232.7 3.853333 57.8 69.8 259.58  2    12 26.88 24 222.7227 232.0019 14.72076

SIGO

SSVH1 <- MEDIA1
print(SSVH1)
## # A tibble: 6 × 4
##       H   YNP    YN  FREQ
##   <dbl> <dbl> <dbl> <dbl>
## 1     1  3.08  15.4     5
## 2     2  3.98  19.9     5
## 3     3  3.82  19.1     5
## 4     4  4.08  20.4     5
## 5     5  3.68  18.4     5
## 6     6  4.48  22.4     5
USSYN <- sum((SSVH1$YN)^2)

# Crear un nuevo dataframe SSHVP con el resultado
SSHVP <- data.frame(USSYN = USSYN)
print(SSHVP)
##     USSYN
## 1 2254.46

otro dataframe

SSHV<-cbind(TOT1, SSHVP, SSV,SSH, ERROR)

MOFIDICAR

SSHV$A<-(SSHV$USSYN/(SSHV$FREQ-2))
SSHV$B<-(4*(SSHV$TOT1^2))/(SSHV$FREQ*(SSHV$FREQ-2))
SSHV$C<-((SSHV$TOTAL^2)/SSHV$FREQ)
print(SSHV)
##     USS     MEAN TOT1   USSYN  TOT    USS     SS FREQ      SSV      SSH   USS
## 1 232.7 3.853333 57.8 2254.46 69.8 259.58 3291.1    6 5.384167 22.19393 232.7
##       MEAN TOT1  SUM    USS MG TOTAL  USSP       A        B  C     SSHP
## 1 3.853333 57.8 69.8 259.58  2    12 26.88 563.615 556.8067 24 14.72076
##      ERROR
## 1 2.679683

Bien AGREGAR MÁS INFORMACIÓN

SSHV$GLT=((SSHV$FREQ*(SSHV$FREQ+1))/2)-1
SSHV$GLV=SSHV$FREQ-1
SSHV$GLH=(SSHV$FREQ*(SSHV$FREQ-1))/2
SSHV$GLHP=1
SSHV$GLHV=SSHV$GLV
SSHV$GLS=(SSHV$FREQ*(SSHV$FREQ-3))/2
SSHV$GLE=40
SSHV$R=(SSHV$GLE/SSHV$GLT)+1


SSHV$SSHV=SSHV$A-SSHV$B+SSHV$USSP-SSHV$C-SSHV$SSV
SSHV$SSS=SSHV$SSH-SSHV$SSHP-SSHV$SSHV


SSHV$SST=SSHV$SSV+SSHV$SSH
SSHV$SST=SSHV$SST/SSHV$R
SSHV$SSV=SSHV$SSV/SSHV$R
SSHV$SSH=SSHV$SSH/SSHV$R
SSHV$SSHP=SSHV$SSHP/SSHV$R
SSHV$SSHV=SSHV$SSHV/SSHV$R
SSHV$SSS=SSHV$SSS/SSHV$R
SSHV$SSE=SSHV$ERROR
print(SSHV)
##     USS     MEAN TOT1   USSYN  TOT    USS     SS FREQ      SSV      SSH   USS
## 1 232.7 3.853333 57.8 2254.46 69.8 259.58 3291.1    6 1.794722 7.397976 232.7
##       MEAN TOT1  SUM    USS MG TOTAL  USSP       A        B  C     SSHP
## 1 3.853333 57.8 69.8 259.58  2    12 26.88 563.615 556.8067 24 4.906921
##      ERROR GLT GLV GLH GLHP GLHV GLS GLE R     SSHV      SSS      SST      SSE
## 1 2.679683  20   5  15    1    5   9  40 3 1.434722 1.056333 9.192698 2.679683
SSHV$CMT=SSHV$SST/SSHV$GLT
SSHV$CMV=SSHV$SSV/SSHV$GLV
SSHV$CMH=SSHV$SSH/SSHV$GLH
SSHV$CMHP=SSHV$SSHP/SSHV$GLHP
SSHV$CMHV=SSHV$SSHV/SSHV$GLHV
SSHV$CMS=SSHV$SSS/SSHV$GLS
SSHV$CME=SSHV$SSE/SSHV$GLE
SSHV$FT=SSHV$CMT/SSHV$CME
SSHV$FV=SSHV$CMV/SSHV$CME
SSHV$FH=SSHV$CMH/SSHV$CME
SSHV$FHP=SSHV$CMHP/SSHV$CME
SSHV$FHV=SSHV$CMHV/SSHV$CME
SSHV$FS=SSHV$CMS/SSHV$CME
print(SSHV)
##     USS     MEAN TOT1   USSYN  TOT    USS     SS FREQ      SSV      SSH   USS
## 1 232.7 3.853333 57.8 2254.46 69.8 259.58 3291.1    6 1.794722 7.397976 232.7
##       MEAN TOT1  SUM    USS MG TOTAL  USSP       A        B  C     SSHP
## 1 3.853333 57.8 69.8 259.58  2    12 26.88 563.615 556.8067 24 4.906921
##      ERROR GLT GLV GLH GLHP GLHV GLS GLE R     SSHV      SSS      SST      SSE
## 1 2.679683  20   5  15    1    5   9  40 3 1.434722 1.056333 9.192698 2.679683
##         CMT       CMV       CMH     CMHP      CMHV       CMS        CME
## 1 0.4596349 0.3589444 0.4931984 4.906921 0.2869444 0.1173704 0.06699206
##         FT       FV       FH     FHP     FHV       FS
## 1 6.861035 5.358014 7.362042 73.2463 4.28326 1.752004
SSHV$PFT <- 1 - pf(SSHV$FT, SSHV$GLT, SSHV$GLE)
SSHV$PFV <- 1 - pf(SSHV$FV, SSHV$GLT, SSHV$GLE)
SSHV$PFH <- 1 - pf(SSHV$FH, SSHV$GLT, SSHV$GLE)
SSHV$PFHP <- 1 - pf(SSHV$FHP, SSHV$GLT, SSHV$GLE)
SSHV$PFHV <- 1 - pf(SSHV$FHV, SSHV$GLT, SSHV$GLE)
SSHV$PFS <- 1 - pf(SSHV$FS, SSHV$GLT, SSHV$GLE)
print(SSHV)
##     USS     MEAN TOT1   USSYN  TOT    USS     SS FREQ      SSV      SSH   USS
## 1 232.7 3.853333 57.8 2254.46 69.8 259.58 3291.1    6 1.794722 7.397976 232.7
##       MEAN TOT1  SUM    USS MG TOTAL  USSP       A        B  C     SSHP
## 1 3.853333 57.8 69.8 259.58  2    12 26.88 563.615 556.8067 24 4.906921
##      ERROR GLT GLV GLH GLHP GLHV GLS GLE R     SSHV      SSS      SST      SSE
## 1 2.679683  20   5  15    1    5   9  40 3 1.434722 1.056333 9.192698 2.679683
##         CMT       CMV       CMH     CMHP      CMHV       CMS        CME
## 1 0.4596349 0.3589444 0.4931984 4.906921 0.2869444 0.1173704 0.06699206
##         FT       FV       FH     FHP     FHV       FS          PFT          PFV
## 1 6.861035 5.358014 7.362042 73.2463 4.28326 1.752004 1.343998e-07 3.309232e-06
##            PFH PFHP      PFHV        PFS
## 1 5.095213e-08    0 4.499e-05 0.06485269

Imprimir el ANOVA

anova_table <- data.frame(
  Fuente = c("Total", "Variedades", "Heterosis", "Heterosis Promedio","Het. variedad", "Heterosis Específica", "Error"),
  Grados_de_Libertad = c(SSHV$GLT, SSHV$GLV, SSHV$GLH, SSHV$GLHP, SSHV$GLV, SSHV$GLS, SSHV$GLE),
  Suma_de_Cuadrados = c(SSHV$SST, SSHV$SSV, SSHV$SSH, 
                        SSHV$SSHP, SSHV$SSHV, SSHV$SSS, SSHV$SSE),
  Cuadrados_Medios = c(SSHV$CMT, SSHV$CMV, SSHV$CMH, 
                       SSHV$CMHP, SSHV$CMHV, SSHV$CMS,SSHV$CME),

  Valor_F = c(SSHV$FT, SSHV$FV, SSHV$FH, 
              SSHV$FHP, SSHV$FHV,SSHV$FS, NA),
  Probabilidad_F = c(SSHV$PFT, SSHV$PFV,SSHV$PFH, SSHV$PFHP,SSHV$PFHV, SSHV$PFS, NA)
)

print(anova_table)
##                 Fuente Grados_de_Libertad Suma_de_Cuadrados Cuadrados_Medios
## 1                Total                 20          9.192698       0.45963492
## 2           Variedades                  5          1.794722       0.35894444
## 3            Heterosis                 15          7.397976       0.49319841
## 4   Heterosis Promedio                  1          4.906921       4.90692063
## 5        Het. variedad                  5          1.434722       0.28694444
## 6 Heterosis Específica                  9          1.056333       0.11737037
## 7                Error                 40          2.679683       0.06699206
##     Valor_F Probabilidad_F
## 1  6.861035   1.343998e-07
## 2  5.358014   3.309232e-06
## 3  7.362042   5.095213e-08
## 4 73.246298   0.000000e+00
## 5  4.283260   4.499000e-05
## 6  1.752004   6.485269e-02
## 7        NA             NA

ÚLTIMO PASO

suma_HJ <- sum(HETEROSIS$HJ, na.rm = TRUE)

# Mostrar el resultado con un mensaje
print(paste("COMPROBACION - ESTA SUMA DEBE SER APROX. CERO:", suma_HJ))
## [1] "COMPROBACION - ESTA SUMA DEBE SER APROX. CERO: -1.11022302462516e-15"