reg.ss.parameters.set_parameter("sigx0_i", value=1.0, transform="fixed") out = reg.fit(t, y, u, 'foh') # compute log-likelihood on validation dataset yp = df['south_T'][start_valid:stop_valid].values[np.newaxis, :] y0p = y[0, -1] / 100 tp = np.arange(0, dt * yp.shape[1], dt) reg.ss.parameters.set_parameter("x0_i", value=y0p, transform="fixed") up = df[['Ambient temperature', 'north_T', 'Solar radiation: global horizontal', 'south_H', 'vent2_H']][start_valid:stop_valid].values.T reg.eval_log_likelihood(tp, yp, up, 'foh') reg.ss.parameters.set_parameter("x0_i", value=y0, transform="fixed") upred = df[['Ambient temperature', 'north_T', 'Solar radiation: global horizontal', 'south_H', 'vent2_H']][start_fit:stop_valid].values.T df["south_T_pred"] = df["south_T"].copy() df["south_T_pred"][start_valid:stop_valid] = np.nan tpred = np.arange(0, dt * upred.shape[1], dt) ypred = df["south_T_pred"].values[np.newaxis, :] y_mean, y_std = reg.predict(tpred, tpred, ypred, upred, 'foh', smooth=False)
] outputs = 'south_T' out = reg.fit(df=df[start_fit:stop_fit], inputs=inputs, outputs=outputs) # compute log-likelihood on validation dataset x, P = reg.estimate_states(df=df[start_fit:stop_fit], inputs=inputs, outputs=outputs) x0v = x[-1, :, :] P0v = np.linalg.cholesky(P[-1, :, :]).T reg.eval_log_likelihood(df=df[start_valid:stop_valid], inputs=inputs, outputs=outputs, x0=x0v, P0=P0v) y_mean, y_std = reg.predict(df=df[start_valid:stop_valid], inputs=inputs, x0=x0v, P0=P0v) dfp = df[start_valid:stop_valid].copy() dfp['yp'] = y_mean dfp['lower'] = y_mean - 1.96 * y_std dfp['upper'] = y_mean + 1.96 * y_std fig, axes = plt.subplots(nrows=1, ncols=1, sharex=True, sharey=True) axes.plot(dfp.index, dfp['south_T'], 'k', lw=2)