Fit a sine curve to raster stack
Dear Sofea,
You could try something like this:
fun3 <- function(x){
time <- 1:length(x)
xc <-cos(2*pi*t/365)
xs <-sin(2*pi*t/365)
fit <- lm(x~xc+xs)
return(fit$coefficients[1])
}
s3 <- calc(s, fun = fun3)
But check for NA's within your time series as these might trigger
errors/warnings. Maybe also check na.action options like na.approx(). Can
you provide a reproducible example in that case?
Best,
Jan Verbesselt
Wageningen University
The Netherlands
On 31/10/13 21:39, "Sofea Wright" <sofeawright at gmail.com> wrote:
Dear list, I am trying to fit a sine curve to my data. When dealing with non-raster data, it's quite straight forward: # Fit sine curve to describe the data temperature<-maxtemp$temperature time<-1:n xc<-cos(2*pi*time/365) xs<-sin(2*pi*time/365) fit<-lm(temperature~xc+xs) summary(fit) I am not sure how to do that with rasterstack as I keep on getting error message.
s
class : RasterStack
dimensions : 1000, 1621, 1621000, 365 (nrow, ncol, ncell, nlayers)
resolution : 0.04166667, 0.04166667 (x, y)
extent : 96.5, 165.5, -16.5, 26.5 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84
+towgs84=0,0,0
s <- stack(tif)
time <- 1:nlayers(s)
fun1 <- function(x){
xc<-cos(2*pi*time/365)
xs<-sin(2*pi*time/365)
}
fun2 <- function (x) {
lm(s~xc+xs)
}
Error in .calcTest(x[1:5], fun, na.rm, forcefun, forceapply) :
cannot use this function
s1 <- calc(s, fun = fun1)
s2 <- calc(s, fun = fun2)
Anybody?
Thank you
Sofea
[[alternative HTML version deleted]]
_______________________________________________ R-sig-Geo mailing list R-sig-Geo at r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo