
boa noite, estou com dificuldades fazer a validação cruzada de modelos gerados com as bibliotecas sommer e MCMCglmm. Alguém do grupo que tenha experiência poderia ma dar uma ajuda? Segue o CMR # Dados require(MCMCglmm)data(PlodiaPO) str(PlodiaPO) # Divisão dos dados library(caTools)divisao = sample.split(PlodiaPO$PO, SplitRatio = 0.75)conj_treinamento = subset(PlodiaPO,divisao==TRUE)conj_validacao = subset(PlodiaPO$PO,divisao==FALSE) # Modelo require(sommer)fit=mmer(PO ~ 1, random = ~ FSfamily, data=conj_treinamento)summary(fit) # Validação ???pred=predict(fit, new_data = conj_validacao, classify = "FSfamily")pred att,.André

André, Você pode obter as predições manualmente. # Dados. library(MCMCglmm) data(PlodiaPO) str(PlodiaPO) # Divisão dos dados. library(caTools) divisao <- sample.split(PlodiaPO$PO, SplitRatio = 0.75) # ATTENTION: `divisao` já é um vetor lógico, portanto ... # conj_treinamento <- subset(PlodiaPO, divisao == TRUE) conj_treinamento <- subset(PlodiaPO, divisao) # ATTENTION: o conjunto de valiação também tem que ser data.frame. # conj_validacao <- subset(PlodiaPO$PO, divisao == FALSE) conj_validacao <- subset(PlodiaPO, !divisao) # Modelo. library(sommer) fit <- mmer(PO ~ 1, random = ~FSfamily, data = conj_treinamento) summary(fit) # Conteúdo. names(fit) # Quantidades necessárias para a predição (efeitos fixos e aleatórios). fit$Beta fit$U # Classe, métodos, implementação e documentação. class(fit) methods(class = "mmer") getS3method("predict", "mmer") help(predict.mmer, help_type = "html") # ATTENTION: o nome do parâmetro é `newdata` e não `new_data`. pred <- predict(fit, newdata = conj_validacao, classify = "FSfamily") pred # Pelo visto precisa usar o parâmetro `classify` pois já saiu com o # efeito de "FSfamily". pred <- predict(fit, newdata = conj_validacao) str(pred) # Predições. unique(pred$predictions[, c("FSfamily", "predicted.value.PO")]) # Fazendo as predições na mão. X <- model.matrix(~1, data = conj_validacao) Z <- model.matrix(~0 + FSfamily, data = conj_validacao) conj_validacao$fit <- X %*% fit$Beta[["Estimate"]] + Z %*% fit$U$FSfamily$PO # Predições (coincidem até a 4 casa decimal). merge(unique(pred$predictions[, c("FSfamily", "predicted.value.PO")]), unique(conj_validacao[, c("FSfamily", "fit")])) À disposição. Walmes.
participantes (2)
-
Andre Oliveira
-
Walmes Zeviani