
Na verdade, a lista bandas é uma amostra dos dados originais, a partir destes dados eu calculei a matriz de correlação e, no comando em que eu crio o objeto "banda.selecao" eu tento extrair dos dados originais apenas os pares de variáveis cuja correlação máxima seja de 0,3, utilizando a função findCorrelation. Tentei aplicar a função que o Fernando passou, mas ela me retorna uma lista com o mesmo número de variáveis que os dados originais. A função findCorrelation retorna um vetor com o número das colunas que devem ser eliminadas dos dados por apresentarem correlação forte. Porém essa função não está funcionando corretamente, por isso gostaria de uma maneira alternativa de fazer a mesma coisa. Desde já agradeço... 2014-10-09 22:12 GMT-03:00 Fernando Antonio de souza <nandodesouza@gmail.com
:
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@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@usp.br Cel (19) 98300-4333 (Pessoal)
_______________________________________________ R-br mailing list R-br@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@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@usp.br Cel (19) 98300-4333 (Pessoal)