-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbasicStatistics.m
More file actions
29 lines (20 loc) · 1.22 KB
/
basicStatistics.m
File metadata and controls
29 lines (20 loc) · 1.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function out = basicStatistics(modelTime,modelData,observationTime,observationData)
% write input timeseries to output structure:
out.modelTime = modelTime;
out.modelData = modelData;
% filter out NaNs and write to output structure:
out.observationTime = observationTime(~isnan(observationData));
out.observationData = observationData(~isnan(observationData));
% interpolate model to observation times:
out.modelAtObsTimes = interp1(modelTime,modelData,out.observationTime);
% compute differences:
out.modelObservationDifference= out.modelAtObsTimes - out.observationData;
% bias:
out.bias = sum(out.modelObservationDifference(~isnan(out.modelObservationDifference)))/length(out.modelObservationDifference(~isnan(out.modelObservationDifference)));
% rmse:
out.rmse = sqrt(nansum(out.modelObservationDifference(~isnan(out.modelObservationDifference)).^2)/length(out.modelObservationDifference(~isnan(out.modelObservationDifference))));
% Pearson correlation coefficient:
out.pearsonCorrCoeff = corr(naninterp(out.modelAtObsTimes),naninterp(out.observationData));
% Pearson correlation coefficient on absolute deviations from zero:
out.pearsonCorrCoeffABS = corr(naninterp(abs(out.modelAtObsTimes)),abs(naninterp(out.observationData)));
end