Skip to content
Extraits de code Groupes Projets

simon_example.R

  • Cloner avec SSH
  • Cloner avec HTTPS
  • Intégrer
  • Partager
    L'extrait de code peut être consulté sans aucune authentification.
    Rédigé par Michel Crucifix

    Example code for CWT filtering with Simon's data

    bream.R 2,27 Kio
    # you will need my package "gtseries"
    # for this you  first need to install the 'devtools' standard R package, and then: 
    
    # the lines below should do this for you. If it does not work, install the "devtool" standard package, 
    # and then type
    # devtools::install_git('https://forge.uclouvain.be/mcrucifix/tseries.git')
    
    
    list.of.gitpackages <- c("gtseries")
    new.gitpackages <- list.of.gitpackages[!(list.of.gitpackages %in% installed.packages()[,"Package"])]
    if (length(new.gitpackages)) { 
      list.of.packages <- c("devtools")
      few.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
      if (length(new.packages)) install.packages(new.packages)
      devtools::install_git('https://forge.uclouvain.be/mcrucifix/tseries.git')
    }
    
    
    
    
    data <- read.csv('example Aalst agri.csv')
    temp <- data$temp[-1]
    
    # note: the below does not dela with Na
    temp <- ts(temp,deltat=0.5)
    
    require(gtseries)
    
    C = cwt_morlet(temp)
    C
    plot(C)
    
    range.fast <- which(attr(C,"scale") < 20.0 )
    range.slow <- which(attr(C,"scale") > 36 )
    range.daily  <- seq(length(attr(C,"scale")))[-c(range.fast,range.slow)]
    
    signal.fast = reconstruct_morlet(C,scales=c(0,12))
    signal.slow = reconstruct_morlet(C,scales=c(60,Inf))
    signal.daily = reconstruct_morlet(C,scales=c(12,60))
    
    
    signal.total  <-  Re(signal.slow) + Re(signal.fast) + Re(signal.daily)
    
    plot(temp - mean(temp), type='l')
    lines(ts(Re(signal.fast), deltat=.5), col='red', type='l')  # fast variability, in red
    lines(Re(signal.daily), col='blue', type='l')               # daily variability, in blue
    lines(Re(signal.slow), col='green', type='l')               # slow part (trend), in green
    lines(Re(signal.total), col='purple', type='l')             # reconstruction (not perfecct)
    
    # The Amplitude of the daily cycle can be obtained as follows, but it is surprisingly smooth and high-frequency, so probably it is best diagnosed by hand.
    
    Amp.daily  <-  Mod(signal.daily)
    
    plot(signal.daily)                    # the daily signal
    lines(Im(signal.daily), col='red')    # 90-degree phase lagged (in red)
    lines(Mod(signal.daily), col='blue')  # amplitude, in Blue
    
    # Similary, the amplitude of the fast variability may be obtained with: 
    
    plot(Mod(signal.fast))                    # the daily signal
    
    # though again the result in not quite convincing (much high frequency). 
    
    
    example Aalst agri.csv 22,34 Kio
    0% Chargement en cours ou .
    You are about to add 0 people to the discussion. Proceed with caution.
    Terminez d'abord l'édition de ce message.
    Veuillez vous inscrire ou vous pour commenter