[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