problema com validação cruzada
Página 1 de 1
problema com validação cruzada
Ola sou novo aqui no fórum e acabei de criar a minha conta. Sou estudante de graduação e estou realizando um projeto de iniciação cientifica na área de estatística, criei uma pequena função para realizar o bootstrap de um conjunto de dados que foram modelados. A função é esta:
bootstrap=function(objeto=x,semente=1)
{
set.seed(semente)
out1 = vector()
out2 = vector()
v = dim(objeto) [1]
for(i in 1:v)
{
sel = sample(v,1)
tmp1 = objeto[sel,]
tmp2 = objeto[-sel,]
mod1 = lm (log(voltot) ~ log(ht) + log(dap), data=tmp2)
mod2 = lm (log(voltot) ~ log(ht) + log(dap) + as.factor(estrato), data=tmp2)
pred1 = predict(mod1,tmp1)
pred2 = predict(mod2,tmp1)
erro1 = tmp1$voltot - pred1
erro2 = tmp1$voltot - pred2
out1[i] = erro1
out2[i] = erro2
}
return(cbind(out1,out2))
}
Quando eu realizei um teste, com o conjunto de dados reduzido, a função foi executada sem erros, no entanto quando eu utilizei todo o conjunto de dados, apareceu esse erro:
Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) :
factor as.factor(estrato) has new level 2908
Agora eu estou parado nisso e não consigo descobrir qual o problema, se alguém puder me dar uma luz eu agradeço.
bootstrap=function(objeto=x,semente=1)
{
set.seed(semente)
out1 = vector()
out2 = vector()
v = dim(objeto) [1]
for(i in 1:v)
{
sel = sample(v,1)
tmp1 = objeto[sel,]
tmp2 = objeto[-sel,]
mod1 = lm (log(voltot) ~ log(ht) + log(dap), data=tmp2)
mod2 = lm (log(voltot) ~ log(ht) + log(dap) + as.factor(estrato), data=tmp2)
pred1 = predict(mod1,tmp1)
pred2 = predict(mod2,tmp1)
erro1 = tmp1$voltot - pred1
erro2 = tmp1$voltot - pred2
out1[i] = erro1
out2[i] = erro2
}
return(cbind(out1,out2))
}
Quando eu realizei um teste, com o conjunto de dados reduzido, a função foi executada sem erros, no entanto quando eu utilizei todo o conjunto de dados, apareceu esse erro:
Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) :
factor as.factor(estrato) has new level 2908
Agora eu estou parado nisso e não consigo descobrir qual o problema, se alguém puder me dar uma luz eu agradeço.
somoto- Mensagens : 1
Data de inscrição : 21/01/2014
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|