Hi veronica
I see what you did with creating the days time series. In that way you
acknowledge irregular gaps, right?
yes this is the reason
However, why do you multiply by days strds? From my understanding,
detrending by subtracting the results of a model obbeys this rule:
value(t) = observed(t) - predicted(t). Then, this
mystrds-(regression_offset+regression_slope*days) should be
mystrds-(regression_offset+regression_slope*mystrds).
hmm
may be I'm wrong but I used r.regression.series to assess a relationship
between mystrds values and time (days)
As a consequence the offset and slope maps I obtain are b and a in the
following linear equation
y=ax+b
i.e.
predicted_mystrds=slope*days+offset
This is why I suppose that for detrending I need to do:
mystrds-(predicted_mystrds)
i.e.
mystrds-(slope*days+offset)
I'm I wrong?
thank you
Ivan
Best,
Vero
El jue, 28 dic 2023 a las 8:14, Ivan Marchesini
(<[email protected]>) escribió:
Dear Veronica
I think I found a simple solution using temporal raster modules.
Here is an example:
#evaluating info of the strds
eval `t.info <http://t.info> mystrds -g`
#getting the starting day (of the year, 0-365) of my strds
startday=$(date -d "$start_time" "+%j")
#Creating a new strds where each pixel has the value of the count
of the days starting from the start_day of my strds (the start day
in my dataset is in 2016)
t.rast.mapcalc inputs=mystrds
expression="(start_year()-2016)*365-${startday} +start_doy()"
output=days basename=days nprocs=xxx --o
#fitting the trend equation
r.regression.series xseries="`t.rast.list in=days columns=name
sep=, format=line`" yseries="` t.rast.list in=mystrds columns=name
sep=, format=line`"
out=regression_offset,regression_slope,regression_rsq,regression_t
meth=offset,slope,rsq,t
#detrending
t.rast.mapcalc input=mystrds,days expression="mystrds_detrend
= mystrds-(regression_offset+regression_slope*days)"
output=mystrds_detrend basename=mystrds_detrend nprocs=xxx
method=start --o
Best
Ivan
On 23/12/23 14:53, Ivan Marchesini wrote:
Hi Veronica
Thank you. It goes in the direction of my idea evn if my problem
is exactly trying to take into account the correct gaps between
that data
I have another idea.
if it works I will come back here to explain how I did
thank you again
Ivan
On 22/12/23 13:45, Veronica Andreo wrote:
Hello Ivan,
AFAIU you could use the slope and offset maps from t.rast.series
within t.rast.algebra to detrend the values of the maps within
the strds, something like "detrended_strds = trend_strds -
(trend_strds*map(slope) + map(offset))". Others suggest, to
detrend by subtracting the previous value, i.e. that would imply
using the temporal algebra with the temporal index, something
like "detrended_strds = trend_strds[1] - trend_strds[0]".
I haven't tested any of these, just a couple of ideas ;-)
However, I do not know how this might interact with seasonality
within data, or irregular gaps.
hth somehow
Vero
El vie, 22 dic 2023 a las 5:10, Ivan Marchesini via grass-user
(<[email protected]>) escribió:
Dear colleagues
I would like to the advantage of the t.* modules for
detrending a strd.
In the strd I have earth observation data irregularly
sampled (2 or 3
times per month), in the period November-February, for 7
years. They are
not equally spaced (i.e gaps have different duration)
A simple t.rast.series analysis (opion=slope,offset)
highlights that
probably there is a descending trend when considering the
maps ordered
by id.
I would like to fit a proper time depending fitting curve
for each pixel
and then subtract the function from the real data.
any hints on how I can do this task exploiting the GRASS GIS
modules or
some simple bash/python scripting?
thank you
Ivan
_______________________________________________
grass-user mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/grass-user
_______________________________________________
grass-user mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/grass-user