Programa R para Biologia da Conservação
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Substituições de valores (NA) por valores calculados.

3 participantes

Ir para baixo

Substituições de valores (NA) por valores calculados.  Empty Substituições de valores (NA) por valores calculados.

Mensagem por MAURICIO LANG DOS SANTOS Ter maio 05, 2020 6:28 pm

Olá pessoal,

Primeiramente gostaria de parabenizar os organizadores do curso, assim como o prof. Marcos. As aulas e a estrutura do curso realmente são fantásticas.

Necessito substituir valores "NA" (dados faltantes) de um data frame (matriz dos dados) por valores calculados através da reta da regressão linear.

#aqui seleciono a fatia da matriz que necessito estimar os valores faltantes.
teste<-dados[which(is.na(dados$NTOT) & dados$NOVASP=="GENBAR"),]

#aplico calculo valores de "y" por meio da reta gerada por uma regressão linear (y=0.31x+0.17).
valores<-0.31*teste$PTOTKG+0.17

Não consigo substituir os "NA" do conjunto "teste" pelos valores calculados.

Alguém poderia ajudar?!

Desde já agradeço

Um abraço a tod@s.
Mauricio Lang

MAURICIO LANG DOS SANTOS

Mensagens : 5
Data de inscrição : 04/04/2020

Ir para o topo Ir para baixo

Substituições de valores (NA) por valores calculados.  Empty Re: Substituições de valores (NA) por valores calculados.

Mensagem por Yasmin Canalli Qua maio 06, 2020 9:48 pm

Olá, nunca fiz da sua forma. Eu uso esse script

#####################################
#Fazendo estimativa dos dados ausentes #
#pelo pacote Mice #
#####################################

#Carregando pacote Mice
require(mice)

#Estimando dados
imputacao<-dados
summary(imputacao)

md.pattern(imputacao)
imp <- mice(imputacao)
imp

#Salvando os dados completos em um novo objeto
dados.completos<-complete(imp)

#Conferindo dados completos
dados.completos

#Salvando dados completos
write.csv(dados.completos, "dados_completos.csv")

Yasmin Canalli

Mensagens : 15
Data de inscrição : 30/03/2020

Ir para o topo Ir para baixo

Substituições de valores (NA) por valores calculados.  Empty Re: Substituições de valores (NA) por valores calculados.

Mensagem por MAURICIO LANG DOS SANTOS Sex maio 08, 2020 10:43 am

Olá Yasmin,

Muito obrigado pela resposta. Mas infelizmente não funcionou para o meu caso, talvez não tenha interpretado corretamente o seu script.

Estou estimando valores (NA) de uma variável por meio de uma regressão. E preciso adicionar na matriz de dados exatamente os valores estimados. Esta transição de dados não estou conseguindo.

Mas, muito obrigado pela ajuda.

Um abraço.
Mauricio

MAURICIO LANG DOS SANTOS

Mensagens : 5
Data de inscrição : 04/04/2020

Ir para o topo Ir para baixo

Substituições de valores (NA) por valores calculados.  Empty Re: Substituições de valores (NA) por valores calculados.

Mensagem por MAURICIO LANG DOS SANTOS Sáb maio 09, 2020 5:03 pm

Olá,

Encontrei uma solução "braçal" mas que a princípio funcionou para resolver o problema.

#selecionando a fatia da matriz que contem "NA" e a espécie e substituindo pelos valores da reta da regressão.

dados$NTOT[is.na(dados$NTOT) & dados$NOVASP=="GENBAR"]<-0.31*dados$PTOTKG[is.na(dados$NTOT) & dados$NOVASP=="GENBAR"] +0.17

Um abraço a todos.
Mauricio

MAURICIO LANG DOS SANTOS

Mensagens : 5
Data de inscrição : 04/04/2020

Ir para o topo Ir para baixo

Substituições de valores (NA) por valores calculados.  Empty Re: Substituições de valores (NA) por valores calculados.

Mensagem por Yasmin Canalli Dom maio 10, 2020 4:03 pm

Olá! O script que publiquei faz estimativa dos dados ausentes de 5 formas diferentes (que não sei quais são) e depois junta em 1.
O final do script é a forma de juntar esses dados estimados substituindo os NAs pelos dados estimados. A parte que faz isso é:

#Salvando os dados completos em um novo objeto
dados.completos<-complete(imp)

#Conferindo dados completos
dados.completos

#Salvando dados completos
write.csv(dados.completos, "dados_completos.csv")

Não sei se funciona no seu script, mas ao menos pode tentar.

Yasmin Canalli

Mensagens : 15
Data de inscrição : 30/03/2020

Ir para o topo Ir para baixo

Substituições de valores (NA) por valores calculados.  Empty Re: Substituições de valores (NA) por valores calculados.

Mensagem por Prof. Marcos Seg maio 11, 2020 2:59 pm

Oi, Mauricio! Desculpe a demora.

Você encontrou uma boa solução! É bem "manual" mesmo, mas funciona perfeitamente.

Um atalho que pode ser tomado é o uso da função predict.lm(), que calcula os valores esperados pela reta. No seu caso, não sei se vale à pena implementar, já que sua solução é funcional, mas veja o exemplo a seguir:

Código:

#Dados de exemplo, executar:
exemplo<-structure(list(varx = 1:15, vary = c(1.4, 3.8, NA, 3.6, 9, 10.4, 12.8, 13.2, 11.6, 15, NA, 18.8, 21.2, 20.6, 22)), class = "data.frame", row.names = c(NA, -15L))

exemplo

summary(exemplo)

#Fazendo a regressão:
resultado<-lm(exemplo$vary ~ exemplo$varx)
summary(resultado)

#Gráfico, apenas para visualizar e ajudar a entender o exemplo:
plot(exemplo$vary ~ exemplo$varx, pch=16)
abline(resultado, col="red", lty=2)

#A regressão "guarda" os pontos da reta, mas apenas para os valores que não tinham NA. Eles ficam aqui:
resultado$fitted.values

#Se você quer valores para pontos que não tinha nos seus dados, existe uma função pra isso! Veja:
predict.lm(resultado, data.frame(1:15))


Perceba que os valores que saem da função predict.lm() são todos da reta, ok? Então os valores não são mais dos pontos, nem no caso dos pontos conhecidos. Wink
Prof. Marcos
Prof. Marcos

Mensagens : 678
Data de inscrição : 23/12/2015
Idade : 42
Localização : Maceió, AL

https://cantinhodor.wordpress.com/

Ir para o topo Ir para baixo

Substituições de valores (NA) por valores calculados.  Empty Re: Substituições de valores (NA) por valores calculados.

Mensagem por MAURICIO LANG DOS SANTOS Qua maio 13, 2020 2:37 pm

Olá prof. Marcos,

Muito obrigado pela ajuda!!!!
Foi muito útil!!!!!

Um abraço.
Mauricio

MAURICIO LANG DOS SANTOS

Mensagens : 5
Data de inscrição : 04/04/2020

Ir para o topo Ir para baixo

Substituições de valores (NA) por valores calculados.  Empty Re: Substituições de valores (NA) por valores calculados.

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos