deaseasonalize temperature data using means
1 回表示 (過去 30 日間)
古いコメントを表示
I have a set of data that includes dates (years from 1995-2018 and months (1-12), where dv(:,1)=year and dv(:,2)=month. It also includes temperature (temp). The dataset has 350,000 data points. I would like to find the monthly mean for each year (e.g., Jan 1995, Jan 1996...Jan 2018) and the mean for each year (e.g., 1995, 1996...2018). To deaseasonalize the data, I need to adjust each monthly mean based on the mean for that year. If the yearly mean is greater than the monthly mean then yrmean-mmean. If the monthly mean is greater than the yearly mean, then mmean-yrmean. This should give me a new 128x1 of deasonalized data. This is where I get stuck. Any help is appreciated! Here's what I have so far:
%find yearly mean
G=findgroups(dv(:,1));
meanyr_temp=splitapply(@mean,temp,G); %yearly mean is 17x1 double, note not all years have data
%find monthly mean for each year
H=findgroups(dv(:,1),dv(:,2));
meanmyr_temp=splitapply(@mean,temp,H); %month/year mean is 128x1 double
0 件のコメント
回答 (1 件)
Star Strider
2018 年 12 月 18 日
Without your data, it is difficult to write specific code.
From your description, this may work:
Yrv = [ones(12,1)*2017; ones(12,1)*2018]; % Create Data
Mov = repmat((1:12)', 2,1); % Create Data
Tv = 10 + 0.1*(1:24)' + sin((1:24)'*pi/6)*15; % Create Data
Data = [Yrv Mov Tv]; % Matrix Of Years, Months, Temperatures
Times = datetime(Data(:,1), Data(:,2), ones(size(Data,1),1)); % Create ‘datetime’ Array
TData = timetable(Times, Data(:,3)); % Convert To ‘timetable’
YrMean = retime(TData, 'yearly', 'mean') % Yearly Mean
MoMean = retime(TData, 'monthly', 'mean') % Monthly Mean
DYrMean = timetable2table(YrMean); % Convert To ‘table’
DMoMean = timetable2table(MoMean); % Convert To ‘table’
Deseasonalize = abs(bsxfun(@minus, DMoMean.Var1, DYrMean.Var1')); % Absolute Value Of The Difference
The ‘Deseasonalize’ assignment takes the absolute value of the difference between the monthly and yearly means for each year. I am not exactly certain what you mean by ‘deseasonalize’, or what you want for ‘deseasonalized’ data, so this is my best guess. It should get you started.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Dates and Time についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!