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.

Dúvida Valéria

3 participantes

Ir para baixo

Dúvida Valéria Empty Dúvida Valéria

Mensagem por Felipe Fonseca Sex maio 11, 2018 11:07 am

Marcos, a Valéria está em campo e pediu pra replicar esta dúvida aqui Smile

"No vídeo 5.1 o prof Marcos apresenta um slide que em que esta escrito “Também fique atento para o efeito de valores extremos.
- Pode ser resolvido com transformação por log”
Mas ele não comenta esse tópico no vídeo Já no vídeo 5.8 ele comenta a transformação bem rapidinho. Como vc sabe eu não tenho acesso ao webpage então não sei se a minha duvida já foi citada e respondida em algum momento do curso.
A dúvida : Existe outros maneiras de transformar os dados antes de fazer um cluster?
Outra dúvida: “”Prof Marcos , No video 5.6 voce codificou as unidades amostrais com ifelse. E também comentou que poderíamos usar dois ifelse para duas categorias (ifelse encadeado)? .

Obrigada,
Valeria"
Felipe Fonseca
Felipe Fonseca
Admin

Mensagens : 20
Data de inscrição : 22/12/2015
Idade : 42
Localização : Belo Horizonte

http://biologiadaconservacao.com.br

Ir para o topo Ir para baixo

Dúvida Valéria Empty Re: Dúvida Valéria

Mensagem por Prof. Marcos Seg maio 14, 2018 8:03 am

Olá, Valeria!

Isso, a transformação pode ser útil (e às vezes até essencial), em certas situações. No caso da transformação por log, o que acontece é que os valores transformados passam a variar num a magnitude bem menor, mas ainda assim eles mantem a ordem do menor para o maior. Então o log é uma transformação potencialmente útil quando temos dados extremos. Vou dar um exemplo bem visual, para copiar e executar no R:

Código:
#Dados de exemplo:
dados1<-c(3, 5, 7, 4, 2, 9, 6, 5)
dados2<-c(7, 1, 4, 78, 4, 3, 2, 1)

#Ordenando para o gráfico:
dados1<-sort(dados1, decreasing=T)
dados2<-sort(dados2, decreasing=T)

#Gráfico dos dados sem valores extremos:
plot(dados1, pch=16)
lines(dados1, lty=2)

#Gráfico com dados que possuem um valor extremo:
plot(dados2, pch=16)
lines(dados2, lty=2)


#Gráfico com valor extremo, depois de usar log:
plot(log10(dados2+1), pch=16)
lines(log10(dados2+1), lty=2)

Daqui a pouco volto e continuo a responder!
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

Dúvida Valéria Empty Re: Dúvida Valéria

Mensagem por Prof. Marcos Seg maio 14, 2018 8:33 am

Continuando.

Sim, existem diversos tipos de transformação - e todas as transformações usadas, por exemplo, para lidar com pressupostos de dados não normais (como log, raiz quadrada, etc) podem ser usadas antes de um cluster. A questão prática é saber por que escolher aquela transformação. De uma forma geral, eu diria que log é quase sempre a transformação que você pode precisar no caso de um cluster. Já em outras situações, que não são as de dados extremos, o mais comum é pensar mais na métrica usada no cluster do que numa transformação em si.

Sobre a última dúvida, vou construir um exemplo e voltar aqui, certinho?
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

Dúvida Valéria Empty Re: Dúvida Valéria

Mensagem por Prof. Marcos Seg maio 14, 2018 8:40 am

Pronto, sobre a última pergunta, olhe um exemplo rápido e simples de ifelse encadeado, no qual eu criao três classes de tamanho:

Código:
#Exemplo:
structure(list(Tamanho = c(10L, 16L, 20L, 25L, 27L, 34L, 39L,
45L, 57L, 63L, 70L), Var1 = c(12L, 12L, 12L, 20L, 41L, 12L, 12L,
48L, 36L, 20L, 39L)), class = "data.frame", row.names = c(NA,
-11L))

#Os dados:
dados

#Criando uma variável nova:
classe<-ifelse(dados$Tamanho<=20, "pequeno", ifelse(dados$Tamanho>=40, "grande", "medio"))
classe

#"Colando" a variável na planilha:
dados.novos<-cbind(dados, classe)

#Resultado final:
dados.novos

Qualquer coisa é só perguntar! Very Happy
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

Dúvida Valéria Empty Re: Dúvida Valéria

Mensagem por vivi.eilers Seg maio 21, 2018 8:03 am

Será que consigo ajuda num passo um pouco mais elaborado?

Quero criar uma nova coluna no meu dataframe que seja uma sequência de números para cada valor de uma determinada coluna que esteja no intervalo de 0.3.

Por exemplo, tenho uma coluna com os valores (0.74, 0.78, 0.88, 0.94, 1.08, 2.14, 2.62, 3.22, 3.46, 3.48, 5.02)

Quero criar uma nova coluna que atribua valores crescentes para cada intervalo de 0.3 da coluna anterior, ou seja (1, 1, 1, 2, 2, 3, 4, 5, 5, 5, 6).

Como informar ao R que quero a classificação em intervalos?

Obrigada,

Vivianne
vivi.eilers
vivi.eilers

Mensagens : 7
Data de inscrição : 18/10/2017
Idade : 41
Localização : Aberdeen

Ir para o topo Ir para baixo

Dúvida Valéria Empty Re: Dúvida Valéria

Mensagem por vivi.eilers Seg maio 21, 2018 11:49 am

Eu tentei fazer isso usando a função cut()

Exemplo:

dados$Sector<-cut(dados$Stretch, breaks= c(-Inf, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4, 2.7, 3, 3.3, 3.6, 3.9, 4.2, 4.5, 4.8, 5.1, Inf), labels=F, right=F)

E isso resultou no que eu queria, na verdade o resultado foi (3  3  3  4  4  8  9 11 12 12 17) porque eu não tenho valores menores que 0.7 entre os meus dados. Eu teria o resultado da forma como coloquei no meu exemplo anterior, se para cada intervalo eu tivesse pelo menos um valor.

Mas para aplicar isso usando todos os meus dados eu teria que digitar mais de 8 mil intervalos, o que não acho muito razoável. Deve ter uma maneira de falar pro R que eu quero que ele separe a cada intervalo de 0.3, preciso dessa luz!  study
vivi.eilers
vivi.eilers

Mensagens : 7
Data de inscrição : 18/10/2017
Idade : 41
Localização : Aberdeen

Ir para o topo Ir para baixo

Dúvida Valéria Empty Re: Dúvida Valéria

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