#este script faz a seleção de variáveis usando janelas móveis e contínuas de diferentes tamanhos #Junho 2012 #abre o pacote para a funçao lda.loofun, que retorna um valor da eficiência de um cross-validation library(ChemometricsWithR) #cria objeto onde serão salvos as variaveis selecionadas var.selected = NULL #para cada conjunto de dados for (i in 2:length(dados)) { dd = dados[[i]] ddn = names(dados)[i] #cria um fator com o nome das especies library(stringr) rn = rownames(dd) rn = str_split(rn,"_") rn = as.data.frame(rn) rn = as.vector(t(rn)[,1]) rn = as.factor(rn) #testa variables within different regions of different sizes (from 1/3 of the #obs to #obs) res = NULL #cria um vetor para o tamanho das janelas winss = seq(floor(nrow(dd)*0.3),nrow(dd)) #para cada tamanho de janela percorre o spectro for (w in winss) { #seleciona um tamanho de janela winsize = w #define o espaço a ser explorado (da primeira posição do espectro até o final) for (j in 1:(ncol(dd)-winsize-1)) { #seleciona as variaveis a serem testadas var = seq(j,(j+winsize-1)) #testa as variaveis usando LDA e cross-validation za = lda.loofun(as.matrix(dd), rn,var) #pega o score da análise para o conjunto de variáveis testadas res[j] = za #pega o nome das variáveis t1 = colnames(dd)[j] #da primeira variavel t2 = colnames(dd)[(j+winsize-1)] #da ultima variavel txt = paste(t1,t2,w,sep='-') #junta tudo num unico nome com o tamanho da janela #salva esse nome como nome do score names(res)[j] = txt } } #salva o resultado para o tipo de dado testado (total, adaxial, abaxial) var.selected[[ddn]] = res } #elimina objetos desnecessarios zz = ls() zz = zz[!zz%in%'dados'] zz = zz[!zz%in%'dados.brutos'] zz = zz[!zz%in%'species'] zz = zz[!zz%in%'var.selected'] rm(list=zz) rm(zz) #salva a imagem de trabalho save.image(file='dadosImportados.Rdata')