Dúvida Valéria

Ir em baixo

Dúvida Valéria

Mensagem por Felipe Fonseca em 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 do Carmo
biologiadaconservacao.com.br
avatar
Felipe Fonseca
Admin

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

Ver perfil do usuário http://biologiadaconservacao.com.br

Voltar ao Topo Ir em baixo

Re: Dúvida Valéria

Mensagem por Prof. Marcos em 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!
avatar
Prof. Marcos

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

Ver perfil do usuário https://cantinhodor.wordpress.com/

Voltar ao Topo Ir em baixo

Re: Dúvida Valéria

Mensagem por Prof. Marcos em 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?
avatar
Prof. Marcos

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

Ver perfil do usuário https://cantinhodor.wordpress.com/

Voltar ao Topo Ir em baixo

Re: Dúvida Valéria

Mensagem por Prof. Marcos em 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
avatar
Prof. Marcos

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

Ver perfil do usuário https://cantinhodor.wordpress.com/

Voltar ao Topo Ir em baixo

Re: Dúvida Valéria

Mensagem por vivi.eilers em 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
avatar
vivi.eilers

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

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Dúvida Valéria

Mensagem por vivi.eilers em 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
avatar
vivi.eilers

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

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Dúvida Valéria

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum