import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from utils.common import data_to_xarray
import seaborn as sns
from scipy.stats import spearmanr

data = np.load('Datares/tensor_daily_mean_5D.npy')
X = data_to_xarray(data)

models = np.array(X.coords['model'])
stations = np.array(X.coords['station'])
variables = np.array(X.coords['var'])

fig, ax = plt.subplots(len(variables),
                       1,
                       figsize=(15, len(variables) * 2),
                       sharex=True)

for (i, var) in enumerate(variables):
    cmatrix = np.zeros((len(models), len(models)))
    for station in stations:
        cmatrix += spearmanr(X.sel(var=var, exp='rcp45', station=station))[0]
    cmatrix = cmatrix / len(stations)
    plt.sca(ax[i])
    #print(var)
    ax[i].set_title(var)
    sns.heatmap(cmatrix, annot=True, xticklabels=models, yticklabels=models)

plt.savefig('modelcorrelation.pdf')
Exemplo n.º 2
0
import xarray as xr
from sklearn.neighbors import KDTree
from sklearn.neighbors import NearestNeighbors
from scipy.stats import spearmanr
from statsmodels.graphics.tsaplots import plot_acf
from statsmodels.graphics.tsaplots import plot_pacf

data = np.load('/Users/Rens/Desktop/Data_CC/tensor_daily_mean_5D.npy')
data_scaled = data * 0
for i in range(10):
    mean = np.nanmean(data[:, :, i, :, :])
    data_scaled[:, :, i, :, :] = data[:, :, i, :, :] - mean
    st_dev = np.nanstd(data[:, :, i, :, :])
    data_scaled[:, :, i, :, :] = data_scaled[:, :, i, :, :] / st_dev

X = data_to_xarray(data)
Y = data_to_xarray(data_scaled)  #Y is the normalized data xarray
X.head()  #regular data
Y.head()  #normalized data

var1 = X.sel(var='uas',
             station='Marsdiep Noord',
             exp='rcp45',
             model='CNRM-CERFACS-CNRM-CM5')
var2 = X.sel(var='uas',
             station='Marsdiep Noord',
             exp='rcp45',
             model='ICHEC-EC-EARTH')
var3 = X.sel(var='uas',
             station='Marsdiep Noord',
             exp='rcp45',