cgeniepy.skill#
Classes#
quantitatively compare similarity metrics between two 2D arrays (model and observation) |
|
Quantitatively compare similarity metrics between two columns in a dataframe-like objects |
|
Taylor diagram. |
Module Contents#
- class cgeniepy.skill.ArrComparison(model, observation, model_name='Model', obs_name='Observation', label=None)#
quantitatively compare similarity metrics between two 2D arrays (model and observation)
- model#
- data#
- model_name = 'Model'#
- obs_name = 'Observation'#
- label = None#
- safe_unveil(array)#
get pure array from a numpy masked array object
- intersect_index(verbose=False)#
Return the index where corresponding values are not nan in both input arrays. One then can filter the array by the output boolean array.
- mscore()#
Calculate skill metric M-score. See more in the paper Watterson, I. G. (1996)
- pearson_r()#
calculate pearson correlation coefficient for 2D array
- spearman_r()#
calculate spearman correlation
- mae()#
Mean Absolute Error (MAE)
- cos_similarity()#
Cosine similarity that ignores the magnitude of data, but focuses on the direction
- rmse()#
Root Mean Sqaure Error (rmse, or rmsd)
- mse()#
Mean Squared Error (MSE)
- nrmse()#
Normalised RMSE facilitating the comparison between datasets or models with different scales
- crmse()#
centred Root Mean Sqaure Error (rmse, or rmsd). See Talor, K. E. (2001) JGR
- lm_pvalue(method='pearson')#
get p-value from linear regression
- plot(ax=None, diagonal=True, log_scale=False, title='Model vs Observation', savefig_name=None, metric=['rmse', 'r2', 'm', 'p'], *args, **kwargs)#
- class cgeniepy.skill.DFComparison(df, model_col, observation_col, *args, **kwargs)#
Bases:
ArrComparisonQuantitatively compare similarity metrics between two columns in a dataframe-like objects
- model#
- data#
- class cgeniepy.skill.TaylorDiagram(ac: ArrComparison | list)#
Bases:
objectTaylor diagram.
A visualisation of model-data comparison considering (1) RMSE; (2) Correlation; (3) Standard Deviation.
In practical it is a polar axis with point with std as radiance and corr as theta. The cRMSE then measures the distance from reference point, which is at (ref_std, 0)
see https://en.wikipedia.org/wiki/Taylor_diagram#/media/File:Taylor_diagram_fig2.png and https://bookdown.org/david_carslaw/openair/sections/model-evaluation/taylor-diagram.html (Figure 20.2)
This class is modified from Yannick Copin, https://gist.github.com/ycopin/3342888
- ac#
- extract_data()#
- setup_ax(fig=None, positive_only=True, crmse_contour=False)#
- add_point(correlation, std, *args, **kwargs)#
- plot(cmap=None, add_legend=True, *args, **kwargs)#
- savefig(*args, **kwargs)#
- add_line(theta1, radius1, theta2, radius2, *args, **kwargs)#
Add a line in the polar axis
If you need to convert the correlation into theta/radian, use np.arccos(correlation)