#Quarentena – análise de componentes principais (PCA) utilizando R Dia 3

Últimas do Fórum Fóruns Farmacopedia #Quarentena – análise de componentes principais (PCA) utilizando R Dia 3

Visualizando 1 post (de 1 do total)
  • Autor
    Posts
  • #246
    Up
    0
    Down
    Marcelo
    Mestre

    Continuando a série de tópicos sobre como fazer uma análise de componentes principais utilizando R.
    Paramos no plot do gráfico. Dependendo da intensidade dos espectros, da quantidade de espectros que você quer plotar, os parâmetros yrange, offset, which, devem ser ajustados manualmente.

    Vamos considerar que non plot anterior você queria na verdade olhar a região da carbonila. Para isso, você pode adicionar o parâmetro xlim dentro da função plotSpectra.

    
    plotSpectra(SrE.IR,
                main = titulo,
                which = c(1, 2, 14, 16),
                yrange = c(0, 0.6),
                offset = 0.1,
                lab.pos = 1775,
                xlim = c(1650, 1800))
    

    obtendo a figura abaixo como resultado.

    View post on imgur.com

    Em geral, ao fazer a análise de componentes principais, os dados são pré-processados, existem inúmeras maneiras e razões para fazer este pré-processamento. Normalizar o sinal, corrigir a linha base, remover contribuição de radiação espúria, etc.

    Vou dar exemplos de como usar as funções de pré-processamento, mas você deve testar qual se adapta melhor ao seu conjunto de dados.

    Correção de linha base
    A correção da linha base pode ser feita com a função baselineSpectra que recebe como parâmetros
    spectra o grupo ou espectro a ser corrigido;
    intvalor lógico, FALSEou TRUE, para fazer a correção interativa, usado para inspeção e nenhum valor e salvo.
    retCvalor lógico, FALSEou TRUE que estipula se o espectro com baseline corrigida deve ser retornado como sendo da classe Spectra, ou seja, ficar disponível para uso futuro.
    method o método de correção que são as funções presentes no pacote baseline como polinomial fit, least squares, etc.

    
    SrE2.IR <- baselineSpectra(SrE.IR,
                               int = FALSE,
                               method = "modpolyfit",
                               retC = TRUE)
    

    View post on imgur.com

    normalização dos espectros
    Outro pre-processamento que pode ser utilizado é a normalização dos dados.
    a função que faz este trabalho é a normSpectra, que recebe os parâmetros:

    spectra o grupo ou espectro a ser normalizado;
    method o método de normalização;

    
    spec.norm <- normSpectra(SrE.IR,
                             method = "PQN")
    plotSpectra(spec.norm,
                 main = "Espectros Normalizados",
                 which = c(1, 2, 14, 16),
                 yrange = c(0, 0.015),
                 offset = 0.003,
                lab.pos = 2200)
    
    

    View post on imgur.com

    Derivada

    Outro pré-processamento muito utilizado é o uso da 1 ou 2 derivada dos espectros.
    a derivada pode ser feita com a função sgfSpectra que recebe os parâmetros:

    spectra o grupo ou espectro a ser normalizado;
    m a derivada desejada, m = 1, primeira derivada, m = 2, segunda derivada;
    ... outros parâmetros do filtro Savitzky-Golay

    
    ssp.d <- sgfSpectra(SrE.IR, m = 1)
    
    plotSpectra(ssp.d,
                main = "1a derivada", 
                which = c(1, 2, 14, 16),
                yrange = c(-0.03, 0.1),
                offset = 0.02,
                lab.pos = 2200)
    

    View post on imgur.com

    Código até o momento

    
    rm(list = ls())
    
    # Carregando livrarias
    library(ChemoSpec)
    
    # Carregando conjunto de dados
    data("SrE.IR")
    
    sumSpectra(SrE.IR)
    
    # Plotando os espectros
    
    titulo <- expression(
            bolditalic(Serenoa)~
                    bolditalic(repens)~
                    bold(Extract~IR~Spectra))
    
    plotSpectra(SrE.IR, 
                main = titulo,
                which = c(1,2,14,16),
                yrange = c(0, 1.6),
                offset = 0.4,
                lab.pos = 2200)
    
    #zoom 1650 - 1800 cm-1
    plotSpectra(SrE.IR,
                main = titulo,
                which = c(1, 2, 14, 16),
                yrange = c(0, 0.6),
                offset = 0.1,
                lab.pos = 1775,
                xlim = c(1650, 1800))
    
    #baseline
    SrE2.IR <- baselineSpectra(SrE.IR,
                               int = FALSE,
                               method = "modpolyfit",
                               retC = TRUE)
    
    #normalização
    spec.norm <- normSpectra(SrE.IR,
                             method = "PQN")
    plotSpectra(spec.norm,
                 main = "Espectros Normalizados",
                 which = c(1, 2, 14, 16),
                 yrange = c(0, 0.015),
                 offset = 0.003,
                lab.pos = 2200)
    
    #derivada
    ssp.d <- sgfSpectra(SrE.IR, m = 1)
    
    plotSpectra(ssp.d,
                main = "1a derivada", 
                which = c(1, 2, 14, 16),
                yrange = c(-0.03, 0.1),
                offset = 0.02,
                lab.pos = 2200)
    
    • Este tópico foi modificado 10 meses atrás por admin.
    • Este tópico foi modificado 10 meses atrás por Marcelo.
    • Este tópico foi modificado 10 meses atrás por Marcelo.
    • Este tópico foi modificado 10 meses atrás por Marcelo.
    • Este tópico foi modificado 10 meses atrás por Marcelo.
Visualizando 1 post (de 1 do total)
  • Você deve fazer login para responder a este tópico.