[R-br] Validação cruzada

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

[R-br] Validação cruzada

R-br mailing list
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é 

_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Validação cruzada

R-br mailing list
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.

_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Validação cruzada

R-br mailing list
In reply to this post by R-br mailing list
Nâo colocou o data set PlodiaPO!
 
 
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é 
_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.


_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Validação cruzada

R-br mailing list
Obrigado pela Walmes! 

Mauro, os dados PlodiaPO estão ai sim! 
att,.
André 


att,.
André 


Em segunda-feira, 2 de dezembro de 2019 19:02:00 BRT, Mauro Sznelwar por (R-br) <[hidden email]> escreveu:


Nâo colocou o data set PlodiaPO!
 
 
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é 
_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Validação cruzada

R-br mailing list
Gente 🤔. . .

Os competentes scripts apresentados não me parecem validação cruzada. . . apenas uma validação de um modelo com um conjunto seperado de dados dos de treino.

Na validação cruzada deve-se fazer a quebra em dados de treino e teste em n "dobras" (folds) e os resultados das n validações, aí sim, cruzadas devem gerar um modelo "médio" ou mais adaptado a partir de alguma métrica para o tipo de modelagem.

Maiores detalhes de natureza prática podem ser obtidas da página github do pacote R caret e de natureza teórica em obras sobre o assunto, que para uma abordagem sintética, recomendo a de Friedman, Hastie & Tibshirani "The Elements of Statistical Learning", subcapítulo 7.10 "Cross-Validation"

HTH
--
Cesar Rabak


On Tue, Dec 3, 2019 at 11:18 AM Andre Oliveira por (R-br) <[hidden email]> wrote:
Obrigado pela Walmes! 

Mauro, os dados PlodiaPO estão ai sim! 
att,.
André 


att,.
André 


Em segunda-feira, 2 de dezembro de 2019 19:02:00 BRT, Mauro Sznelwar por (R-br) <[hidden email]> escreveu:


Nâo colocou o data set PlodiaPO!
 
 
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é 
_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Validação cruzada

R-br mailing list
Cesar,

De fato não é uma validação cruzada, mas um *hold out*.
Mas entendi que aquilo é apenas um ciclo do loop como CMR.
Já que apontou, dado o pouco que sei, o mesmo modelo poderia ser ajustado com a lme4::lmer() ou a nlme::lme().

À disposição.
Walmes.


_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Validação cruzada

R-br mailing list
Ok !

On Wed, Dec 4, 2019 at 11:27 AM Walmes Zeviani <[hidden email]> wrote:
Cesar,

De fato não é uma validação cruzada, mas um *hold out*.
Mas entendi que aquilo é apenas um ciclo do loop como CMR.
Já que apontou, dado o pouco que sei, o mesmo modelo poderia ser ajustado com a lme4::lmer() ou a nlme::lme().

À disposição.
Walmes.


_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.