# Import modules
import pandas as pd
import numpy as np
import holoviews as hv
hv.extension('bokeh')
我们将使用从实际土壤湿度传感器校准中获得的数据集。 土壤湿度读数是通过校准的土壤水分反射计获得的,而地面真实值是通过热重法获得的(即土壤样品经过烘干以找出实际的土壤水分含量)。
# Dataset
y_obs = np.array([0.190,0.438,0.304,0.408,0.003,0.459,0.409,0.403,0.174,0.033,0.317,0.023])
y_pred = np.array([0.233,0.481,0.319,0.450,0.004,0.466,0.458,0.497,0.166,0.013,0.396,0.003])
# Plot data
data = hv.Scatter( (y_obs,y_pred) ).opts(color='#5ebaff', size=10, xlabel='Observed', ylabel='Predicted')
one_to_one_line = hv.Curve( ([0,0.5],[0,0.5]) ).opts(line_dash='dashed', color='black')
data * one_to_one_line
residuals = y_obs - y_pred
print(residuals)
[-0.043 -0.043 -0.015 -0.042 -0.001 -0.007 -0.049 -0.094 0.008 0.02
-0.079 0.02 ]
# Visually inspect residuals
hv.Scatter( (y_obs,residuals) ).opts(color='tomato', size=10, xlabel='theta', ylabel='Residuals')
mbe = np.nanmean(residuals)
print(mbe)
sres = np.nansum(residuals)
print(sres)
sares = np.nansum(np.abs(residuals))
print(sares)
sse = np.nansum(residuals**2)
print(sse)
mse = np.nanmean(residuals**2)
print(mse)