Regression-gradients        package:cyclones        R Documentation

_R_E_G_r_e_s_s_i_o_n _b_a_s_e_d _C_A_L_c_u_l_u_s _f_o_r _e_m_p_i_r_i_c_a_l _d_a_t_a

_D_e_s_c_r_i_p_t_i_o_n:

     Use an n-order polynomial fit to model a data series. Ths
     polynomial then provides the basis for the calculus: derivations
     and integrations. One way of estimating slopes in the terrain or
     the geostrophic winds components from sea level pressure fields.

     'coefFit' fits the coeficients of a power series 

                 y= a0 + a1 x + a2 x^2 + a3 x^3 + ...

     , where 

                            x = -1,...,+1

     . Reference: R.E. Benestad (2003) What can present climate models
     tell us about climate change? Climatic Change Vol 59, 311-332

     'coefDeriv' computes the first derivative of a power series 

                 y= a0 + a1 x + a2 x^2 + a3 x^3 + ...

     using the results from 'coefFit'  so that 

                 dy/dx= a1 + 2 a2 x + 3 a3 x^2 + ...

     . (Reference:e.g. G. Stephenson (1961), Mathematical methods for
     science students, Logman  Scientific & Technical, p. 86).

     'coefInt' integrates a series 

                 y= a0 + a1 x + a2 x^2 + a3 x^3 + ...

     using the results from 'coefFit' so that 

 integral(y)=a0 x + 1/2 a1 x^2 + 1/3 a2 x^3 + 1/4 a3 x^4 +  ... + const

     .

     'geoGrad' computes gradients of the topography.The topolography
     data file can be obtained from <URL:
     http://ferret.pmel.noaa.gov/NVODS/servlets/dataset>.

     'testReg.cal' is a test-function for 'coefFit', 'coefDeriv' and
     'coefInt'.

     'derivFFT' uses FFT to compute the first derivative. Anolagous to
     'dX'

     'integrFFT'  uses FFT to integrate a series and is the (pseudo)
     inverse of 'derivFFT'. 

     'testFFTcalc' is a test function for 'derivFFT' and 'integrFFT'.

_U_s_a_g_e:

     coefFit(y,x=NULL,n=length(y),method="lm")
     coefDeriv(y)
     coefInt(y,c1=0)
     geoGrad(maxhar = 35, fname = "data/etopo5_scandinavia.Rdata",
             x.rng = c(-10, 35), y.rng = c(50, 73), plot = FALSE)
     testReg.cal(i.y=240,N=50)
     derivFFT(y)
     integrFFT(y)
     testFFTcalc()

_A_r_g_u_m_e_n_t_s:

       y: A vector.

       x: A vector of index values (e.g. time or longitude).

       n: Number of harmonics to fit

  method: Regression model for fitting the harmonics

      c1: first coefficient: the constant term

  maxhar: number of harmonix (see 'dX')

     i.y: 

       N: 

   x.rng: longitude range

   y.rng: latitude range

   fname: Name of topology file

    plot: Plot the results

_V_a_l_u_e:

_A_u_t_h_o_r(_s):

     R.E. Benestad

_E_x_a_m_p_l_e_s:

     ## Not run: 
     # Polynomial series calculus. (testReg.cal)
       library(clim.pact)
       load("data/etopo5_scandinavia.Rdata")
       y <- ROSE[i.y,]
       a <- coefFit(y,n=N)
       da <- coefDeriv(a)
       a.2 <- coefInt(da,c1=a$coefs[1])
       newFig()
       plot(ETOPO5X,y,type="s",lwd=3,xlab="Longitude (degE)",ylab="m.a.s.l.",
            main=paste("Transect: ",round(ETOPO5Y[i.y],1),"degE"))
       polygon(c(ETOPO5X,ETOPO5X[1320],ETOPO5X[1]),
               c(da$y.deriv/quantile(da$y.deriv,0.9)*quantile(y,0.7),0,0),col="blue")
       lines(ETOPO5X,y,type="s",lwd=4)
       lines(ETOPO5X,a$y.hat,col="red",lty=2,lwd=2)
       lines(ETOPO5X,a.2$y.int,col="steelblue",lty=1)

     # FFT-based calculus  (testFFTcalc)

     x <- seq(-3,3,length=100)
     y <- 3*cos(5*x) + 0.3*sin(18*x) - 1.4*sin(3*x) + 0.15*sin(23*x)
     plot(x,y,type="l",lwd=3)
     grid()
     dydx <- deriv.fft(y)
     y2 <- integr.fft(dydx)
     lines(x,y2,col="red",lty=2,lwd=2)
     grid()
     newFig()
     plot(x,Im(dydx),type="l",lwd=3)
     grid()
     lines(x,rep(0,length(x)),col="grey")  
     ## End(Not run)

