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.

função plotmedia

3 participantes

Ir para baixo

função plotmedia Empty função plotmedia

Mensagem por Bia N. Seg maio 25, 2020 9:54 am

Olá, bom dia!
Estou voltando nas aulas dadas, para efetivamente utilizar o material nos meus dados. Mas tive problemas com a função "plotmedias.R". Consegui utilizá-la em arquivos do próprio R, mas não nos meus dados. Em compensação, consegui utilizar os meus dados para fazer o gráfico manualmente (usando a função plot e arrows).

Ao tentar com a função plotmédias, aparece o seguinte erro:
 Error in plot.window(...) : valores finitos são necessários para 'ylim'

Sendo que ao lado desse aviso, possui duas opções, "Show traceback" e "Rerun with debug". Clicando em Debug, abre uma nova aba com o aviso:
function (xlim, ylim, log = "", asp = NA, ...) 
{
  .External.graphics(C_plot_window, xlim, ylim, log, asp, 
    ...)
  invisible()
}

Pode ser algum problema com os NAs dos dados? Como resolver?
Obrigada!

Bia N.

Mensagens : 31
Data de inscrição : 31/03/2020

Ir para o topo Ir para baixo

função plotmedia Empty Re: função plotmedia

Mensagem por Carolina Lorieri Ter maio 26, 2020 6:44 am

Olá Bia

Tive problemas com minha planilha de dados no tapply, devido aos meu nados NA.

Consegui resolver com o argumento (na.rm=T)

No meu caso do tapply fico assim:
tapply(torneio$concentracao, torneio$individuo, mean, na.rm=T)

Veja se resolve.
Carolina Lorieri
Carolina Lorieri

Mensagens : 35
Data de inscrição : 01/04/2020

Ir para o topo Ir para baixo

função plotmedia Empty Re: função plotmedia

Mensagem por Prof. Marcos Ter maio 26, 2020 8:43 am

Oi, Bia.

Acho que a dica da Carolina é um ótimo começo: se você tiver NAs nos dados, isso pode impedir a plotmedias de funcionar corretamente. Tente a sugestão dela, e depois avise se deu certo, ok?
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

função plotmedia Empty Re: função plotmedia

Mensagem por Bia N. Ter maio 26, 2020 1:30 pm

Oi gente!

Pois é...eu tinha tentado isso... =/  Mas fala que esse argumento não é aceito na função...
Já tentei encaixar "na.rm=T" na função de plotmedias, e até ao abrir a planilha, pra ver se já criava o objeto sem os NAs, mas não rolou...
Mais alguma dica?
Obrigada.

Bia N.

Mensagens : 31
Data de inscrição : 31/03/2020

Ir para o topo Ir para baixo

função plotmedia Empty Re: função plotmedia

Mensagem por Prof. Marcos Ter maio 26, 2020 2:28 pm

No caso seria usar o argumento no tapply que calcula as médias e medida de desvio. Então você pode editar diretamente o arquivo da função plotmedias e adicionar este argumento na parte correspondente. Na verdade, agora que isso foi levantado, faria sentido ter este argumento lá dentro como padrão!
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

função plotmedia Empty Re: função plotmedia

Mensagem por Bia N. Qui maio 28, 2020 4:03 pm

Oi Professor!

Quando criei o objeto com as médias e o desvio dos meus dados, já tinha posto o "na.rm=T". Falta acrescentar esse argumento na própria função plotmédias então, é isso? Mas aonde?
Tentei agora adicionar no tapply das médias e desvios dentro da função plotmédias, mas não funcionou. Tentei também como argumento do plot....

Bia N.

Mensagens : 31
Data de inscrição : 31/03/2020

Ir para o topo Ir para baixo

função plotmedia Empty Re: função plotmedia

Mensagem por Prof. Marcos Seg Jun 08, 2020 4:03 pm

Oi de novo, Bia.

De fato, temos que usar o argumento na.rm=T dentro da função plotmédias, na parte em que as médias e desvios são calculados (o argumento é aceito pelo tapply). Ou, alternativamente, você pode remover as linhas dos dados que tem NAs.

Vamos então demonstrar as duas opções, ok?

Opção 1, modificando plotmédias, que vai ficar assim:

Código:
plotmédias<-function(var.x, var.y, nome.x, nome.y){
  médias<-tapply(var.y, var.x, mean, na.rm=T)
  desvios<-tapply(var.y, var.x, sd, na.rm=T)
  x<-1:nlevels(var.x)
 
  plot(x, médias, ylim=range(c(médias-desvios, médias+desvios)), pch=16,
    axes=F, xlab=nome.x, ylab=nome.y)

axis(2, las=1)
axis(1, x, levels(var.x))
box()

arrows(x, médias-desvios, x, médias+desvios, angle=90, code=3, length=0.05)
 
}

Opção 2, removendo os NAs:

Código:
#Dados de exemplo:
data("airquality")
summary(airquality)

#Transformando mês em fator, para usarmos no exemplo:
airquality$Month<-as.factor(airquality$Month)

#Como ficou:
summary(airquality)

#Vendo os dados em um boxplot:
boxplot(airquality$Ozone ~ airquality$Month)

#Agora vamos partir para a nossa função:
source("plotmédias.R")

#Mas antes, vamos remover os NAs:
air.2<-na.omit(airquality)

#E agora sim vai dar certo:
plotmédias(air.2$Month, air.2$Ozone, "Mês", "Ozônio")
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

função plotmedia Empty Re: função plotmedia

Mensagem por Bia N. Seg Jun 08, 2020 6:42 pm

Ufa!!! Agora foi!! Very Happy

Muito obrigada! Vou deixar salva essa nova versão da plotmedias!

Bia N.

Mensagens : 31
Data de inscrição : 31/03/2020

Ir para o topo Ir para baixo

função plotmedia Empty Re: função plotmedia

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