Substituições de valores (NA) por valores calculados.
3 participantes
Página 1 de 1
Substituições de valores (NA) por valores calculados.
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
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
Re: Substituições de valores (NA) por valores calculados.
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")
#####################################
#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
Re: Substituições de valores (NA) por valores calculados.
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
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
Re: Substituições de valores (NA) por valores calculados.
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
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
Re: Substituições de valores (NA) por valores calculados.
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.
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
Re: Substituições de valores (NA) por valores calculados.
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:
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.
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.
Re: Substituições de valores (NA) por valores calculados.
Olá prof. Marcos,
Muito obrigado pela ajuda!!!!
Foi muito útil!!!!!
Um abraço.
Mauricio
Muito obrigado pela ajuda!!!!
Foi muito útil!!!!!
Um abraço.
Mauricio
MAURICIO LANG DOS SANTOS- Mensagens : 5
Data de inscrição : 04/04/2020
Tópicos semelhantes
» como fazer teste de hipótese para comparar valores exatos com valores >5
» Extração de valores em imagens
» Dúvida em 3.7 - Usando o R para entender a lógica dos valores de p
» Função "labels" para alterar os nomes de valores nos eixos
» Extração de valores em imagens
» Dúvida em 3.7 - Usando o R para entender a lógica dos valores de p
» Função "labels" para alterar os nomes de valores nos eixos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|