[R-br] Selecionar variáveis de uma matriz de correlação

Fernando Souza nandodesouza em gmail.com
Sexta Outubro 10 11:49:20 BRT 2014


Oi Rodrigo , acho que entendi errado
este código aqui acredito fazer o que você quer. entretanto ele retorna 
uma lista.
a<-cor(bandas)
f<-function(x) x[x<=0.3]
bandas2<-apply(a,2,FUN=f) #seleciona valores menores ou iguais a 0.3, 
retorna uma lista
  #vc pode acessar as correlações significativas assim
bandas2$X1417

On 10-10-2014 10:37, Rodrigo Muniz wrote:
> Olá Fernando, obrigado por dispensar um pouco do seu tempo para me 
> ajudar.
> O procedimento que você fez está correto, pois o resultado me retorna 
> todos os valores menores que o limite de corte, porém, da matriz de 
> correlação eu preciso extrair o nome da coluna e da linha, ou seja, o 
> par de variáveis, cuja correlação seja menor que 0,3. A partir da 
> extração do nome dos pares de variáveis eu selecionaria as colunas nos 
> dados originais (bandas).
> Resumindo, o que eu realmente preciso não são os valores e sim os 
> nomes das variáveis.
> Desde já agradeço.
> Att...
>
>
> 2014-10-10 10:04 GMT-03:00 Fernando Souza <nandodesouza em gmail.com 
> <mailto:nandodesouza em gmail.com>>:
>
>     A Lista retornada possui o mesmo número de objetos, mas não o
>     mesmo número de dados. Sua lista é composta de 20 vetores de
>     tamanho 20, após aplicar a função que lhe enviei ele selecionará
>     somente os valores menores que o valor de corte 0,3 dentro de cada
>     vetor. No entanto a lista continuará com 20 objetos (ou vetores).
>     Tranformei a lista em data frame para você ver melhor o que
>     aconteceu.
>
>
>     is.list(bandas) #Os dados enviados  estão armazenados em uma lista
>     str(bandas) # você possui quatrocentos dados 20 obs de 20
>     variáveis todos os vetores completos
>     length(bandas)
>     f<-function(x) x[x<=0.3]
>     bandas2<-lapply(bandas,FUN=f) #seleciona valores menores ou iguais
>     a 0.3 dentro de cada vetor da lista
>     str(bandas2) # mesmo número de objetos 20 vetores contento 20
>     dados mas observe que alguns vetores não contém dados
>     df<-data.frame(Data=unlist(sapply(bandas2, "[",
>     1:length(bandas2)))) # em formato de data frame
>
>     On 09-10-2014 22:12, Fernando Antonio de souza wrote:
>>     Pelo que entendi a lista "banda" que você enviou contem dados de
>>     correlação e você quer selecionar apenas os cujo valor são
>>     menores ou iguais a 0.3. Se for só isso você pode utilizar o comando:
>>
>>     f<-function(x) x[x<=0.3]
>>     lapply(bandas,FUN=f)
>>
>>     Em 9 de outubro de 2014 18:57, Rodrigo Muniz
>>     <uenf.rodrigo em gmail.com <mailto:uenf.rodrigo em gmail.com>> escreveu:
>>
>>         Caros,
>>         Tenho uma dataframe com cerca de 1500 variáveis e gostaria de
>>         saber a correlação entre essas variáveis, então gerei uma
>>         matriz de correlação.
>>         Como muitas variáveis estão altamente correlacionadas, eu
>>         gostaria de selecionar apenas as variáveis que tenham, por
>>         exemplo, no máximo uma correlação de 0,3. Para isso eu
>>         utilizei a função findCorrelation do pacote caret. Pela
>>         descrição, a função foi feita para isso, selecionar as
>>         variáveis mais correlacionadas, considerando um limite de corte.
>>         Como eu gostaria das variáveis menos correlacionadas, eu
>>         inverti minha matriz de correlação, pelo seguinte comando:
>>         as.matrix(sqrt((matrix.cor-1)^2), desta forma, a função
>>         selecionaria as variáveis menos correlacionada.
>>         No entanto, o resultado da função sempre me retorna bandas
>>         altamente correlacionada. Por isso gostaria de fazer de uma
>>         forma alternativa. Segue um pequeno exemplo para ajudar nas
>>         considerações.
>>         Se alguém souber uma forma de programar para obter esse
>>         resultado, aceito um direcionamento.
>>         Desde já agradeço pela atenção.
>>
>>         require(caret)
>>
>>         filtro=c(0.7) #Este parâmetro foi criado para definir o
>>         liminar de corte, como a #matriz está inversa, um valor de
>>         0,7 que dizer que a correlação máxima entre as #variáveis
>>         deve cer de 0,3.
>>
>>         matrix.cor <- as.data.frame(cor(bandas))# Gerar a matriz de
>>         correlação
>>
>>         banda.selecao=bandas[,findCorrelation(as.matrix(sqrt((matrix.cor-1)^2)),
>>
>>                   cutoff=as.numeric(filtro), verbose=FALSE)] #
>>         selecionar do dataframe #original apenas as variáveis com
>>         fraca correlação.
>>
>>         bandas=structure(list(X1417 = c(0.161042, 0.186075, 0.202966,
>>         0.211156,
>>         0.172813, 0.167929, 0.175015, 0.200225, 0.178143, 0.182516,
>>         0.162152,
>>         0.169258, 0.14955, 0.143907, 0.161655, 0.164643, 0.157703,
>>         0.160282,
>>         0.177145, 0.169043), X1366 = c(0.352479, 0.376561, 0.372766,
>>         0.39279, 0.36767, 0.368855, 0.361146, 0.390109, 0.373625,
>>         0.383793,
>>         0.371615, 0.375047, 0.363033, 0.341382, 0.372219, 0.375438,
>>         0.359356,
>>         0.372921, 0.375115, 0.36681), X469 = c(0.07749, 0.098493,
>>         0.083867,
>>         0.101454, 0.087098, 0.088587, 0.079879, 0.083187, 0.087261,
>>         0.091197,
>>         0.085591, 0.091496, 0.081759, 0.093462, 0.094817, 0.089399,
>>         0.087421,
>>         0.08966, 0.097024, 0.084687), X1549 = c(0.233143, 0.262691,
>>         0.266292,
>>         0.280087, 0.247662, 0.242888, 0.237161, 0.269429, 0.25326,
>>         0.260258,
>>         0.239942, 0.244771, 0.224855, 0.211901, 0.237555, 0.242471,
>>         0.232943,
>>         0.234706, 0.248407, 0.243808), X1424 = c(0.149535, 0.176297,
>>         0.193145, 0.197999, 0.16312, 0.156738, 0.165102, 0.190595,
>>         0.165941,
>>         0.171179, 0.149601, 0.158143, 0.139422, 0.131351, 0.150353,
>>         0.153668,
>>         0.145654, 0.149609, 0.162426, 0.158941), X1957 = c(0.045334,
>>         0.078347, 0.055058, 0.071466, 0.04449, 0.052894, 0.066396,
>>         0.087972,
>>         0.053841, 0.073682, 0.068851, 0.04738, 0.044667, 0.060964,
>>         0.061176,
>>         0.065722, 0.052965, 0.05974, 0.07101, 0.076109), X1848 =
>>         c(0.247498,
>>         0.280584, 0.274104, 0.278935, 0.252584, 0.256848, 0.235115,
>>         0.274966,
>>         0.268281, 0.267282, 0.255826, 0.23335, 0.237109, 0.230515,
>>         0.262255,
>>         0.258836, 0.2387, 0.265159, 0.271541, 0.265838), X1537 =
>>         c(0.218761,
>>         0.248475, 0.254953, 0.264756, 0.233748, 0.230395, 0.224644,
>>         0.256149,
>>         0.236666, 0.24462, 0.223847, 0.229429, 0.210074, 0.198872,
>>         0.220081,
>>         0.227677, 0.217309, 0.21968, 0.231893, 0.226282), X1621 =
>>         c(0.285036,
>>         0.31607, 0.313035, 0.331176, 0.302131, 0.300669, 0.290153,
>>         0.323815,
>>         0.307194, 0.318355, 0.298653, 0.303098, 0.285467, 0.269884,
>>         0.297272,
>>         0.301428, 0.291555, 0.300164, 0.302502, 0.299489), X1602 =
>>         c(0.273662,
>>         0.302662, 0.304277, 0.319991, 0.29179, 0.291713, 0.281382,
>>         0.313998,
>>         0.296813, 0.305874, 0.286391, 0.294462, 0.27532, 0.260575,
>>         0.287217,
>>         0.289802, 0.279721, 0.285657, 0.291856, 0.289307), X1865 =
>>         c(0.199668,
>>         0.229541, 0.230852, 0.245059, 0.226876, 0.215756, 0.207998,
>>         0.254432,
>>         0.20988, 0.226653, 0.206045, 0.194866, 0.195796, 0.183774,
>>         0.214694,
>>         0.231647, 0.207081, 0.208682, 0.223025, 0.199142), X1476 =
>>         c(0.144097,
>>         0.170145, 0.187837, 0.192702, 0.158221, 0.154393, 0.160075,
>>         0.184072,
>>         0.162413, 0.166724, 0.147404, 0.15375, 0.133576, 0.128008,
>>         0.146151,
>>         0.150793, 0.143929, 0.141969, 0.158288, 0.154279), X2034 =
>>         c(0.081108,
>>         0.110882, 0.100852, 0.109914, 0.109893, 0.06942, 0.128299,
>>         0.139094,
>>         0.10447, 0.125726, 0.118003, 0.075258, 0.090784, 0.055216,
>>         0.102326,
>>         0.101315, 0.08443, 0.123796, 0.104067, 0.102786), X1460 =
>>         c(0.136055,
>>         0.161915, 0.177241, 0.184844, 0.149423, 0.143712, 0.150499,
>>         0.173385,
>>         0.150807, 0.156626, 0.138878, 0.145282, 0.125618, 0.120778,
>>         0.138968,
>>         0.139961, 0.133014, 0.132243, 0.150618, 0.144916), X1236 =
>>         c(0.41637,
>>         0.440245, 0.422308, 0.453948, 0.428499, 0.436163, 0.427196,
>>         0.454866,
>>         0.433779, 0.451874, 0.447265, 0.44747, 0.44684, 0.422101,
>>         0.451307,
>>         0.452207, 0.436043, 0.454355, 0.44641, 0.437131), X1913 =
>>         c(0.049649,
>>         0.06384, 0.080675, 0.0761, 0.062756, 0.056635, 0.074517,
>>         0.084222,
>>         0.054835, 0.05488, 0.06389, 0.058421, 0.054827, 0.050249,
>>         0.063544,
>>         0.066275, 0.057604, 0.072578, 0.070545, 0.061034), X1885 =
>>         c(0.105368,
>>         0.136086, 0.161411, 0.146339, 0.115904, 0.121671, 0.149059,
>>         0.145293,
>>         0.125417, 0.145147, 0.124081, 0.112018, 0.101411, 0.096761,
>>         0.122112,
>>         0.114244, 0.105535, 0.122283, 0.140519, 0.121402), X492 =
>>         c(0.080821,
>>         0.102833, 0.088743, 0.10809, 0.093344, 0.096766, 0.083556,
>>         0.089436,
>>         0.091601, 0.100154, 0.089925, 0.096294, 0.087353, 0.097834,
>>         0.102614,
>>         0.09692, 0.096883, 0.094752, 0.102917, 0.089361), X1916 =
>>         c(0.037402,
>>         0.063136, 0.08053, 0.071535, 0.059838, 0.0555, 0.060523,
>>         0.079581,
>>         0.044433, 0.055137, 0.055831, 0.054455, 0.054067, 0.055332,
>>         0.062323,
>>         0.0651, 0.05896, 0.075877, 0.069466, 0.064714), X1249 =
>>         c(0.416616,
>>         0.440854, 0.423568, 0.455739, 0.428821, 0.436904, 0.42868,
>>         0.455141,
>>         0.432762, 0.45234, 0.447037, 0.448069, 0.445743, 0.420802,
>>         0.455476,
>>         0.453444, 0.43817, 0.454327, 0.444599, 0.437981)), .Names =
>>         c("X1417",
>>         "X1366", "X469", "X1549", "X1424", "X1957", "X1848", "X1537",
>>         "X1621", "X1602", "X1865", "X1476", "X2034", "X1460", "X1236",
>>         "X1913", "X1885", "X492", "X1916", "X1249"), row.names = c(NA,
>>         20L), class = "data.frame")
>>         -- 
>>         *Rodrigo A. Muniz*
>>         Eng. Agrônomo. Ms Produção Vegetal (UENF)
>>         Doutorando em Engenharia de Sistemas Agrícolas (ESALQ/USP)
>>         E-mail - muniz.ra em usp.br <mailto:muniz.ra em usp.br>
>>         Cel (19) 98300-4333 <tel:%2819%29%2098300-4333> (Pessoal)
>>
>>
>>         _______________________________________________
>>         R-br mailing list
>>         R-br em listas.c3sl.ufpr.br <mailto:R-br em listas.c3sl.ufpr.br>
>>         https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>         Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e
>>         forneça código mínimo reproduzível.
>>
>>
>
>
>     _______________________________________________
>     R-br mailing list
>     R-br em listas.c3sl.ufpr.br <mailto:R-br em listas.c3sl.ufpr.br>
>     https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>     Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e
>     forneça código mínimo reproduzível.
>
>
>
>
> -- 
> *Rodrigo A. Muniz*
> Eng. Agrônomo. Ms Produção Vegetal (UENF)
> Doutorando em Engenharia de Sistemas Agrícolas (ESALQ/USP)
> E-mail - muniz.ra em usp.br <mailto:muniz.ra em usp.br>
> Cel (19) 98300-4333 (Pessoal)
>
>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20141010/1fa8c27c/attachment.html>


Mais detalhes sobre a lista de discussão R-br