That's right, Ivan! End of year mental death, sorry for the noise... Vero
El vie, 29 dic 2023 a las 15:34, Ivan Marchesini (<[email protected]>) escribió: > 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 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
