prototypes/dynamic_dml/hetero_panel_dynamic_dml.py [22:53]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        self._n_cfit_splits = n_cfit_splits
        return

    def fit_nuisances(self, Y, T, X, groups, n_periods):
        ''' Fits all the nuisance models and calculates all residuals for each period and information set
        '''
        resT = {}
        resY = {}
        for kappa in np.arange(n_periods):
            resT[kappa] = {}
            resY[kappa] = np.zeros(self._n_train_units)
            for tau in np.arange(kappa, n_periods):
                resT[kappa][tau] = np.zeros(
                    (self._n_train_units,) + T.shape[1:])

        for train, test in GroupKFold(self._n_cfit_splits).split(X, Y, groups):
            inds_train = train[np.arange(train.shape[0]) % n_periods == 0]
            inds_test = test[np.arange(test.shape[0]) % n_periods == 0]
            for kappa in np.arange(n_periods):
                for tau in np.arange(kappa, n_periods):
                    resT[kappa][tau][inds_test // n_periods] = T[inds_test + tau]\
                        - self._model_t_gen().fit(X[inds_train + kappa],
                                                  T[inds_train + tau]).predict(X[inds_test + kappa])
                    resY[kappa][inds_test // n_periods] = Y[inds_test + n_periods - 1]\
                        - self._model_y_gen().fit(X[inds_train + kappa],
                                                  Y[inds_train + n_periods - 1]).predict(X[inds_test + kappa])
        return resT, resY

    def _fit_cov_matrix(self, resT, resY, models):
        ''' Calculates the covariance (n_periods*n_treatments) x (n_periods*n_treatments) matrix for all the parameters
        '''
        n_periods = len(models)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



prototypes/dynamic_dml/panel_dynamic_dml.py [18:49]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        self._n_cfit_splits = n_cfit_splits
        return

    def fit_nuisances(self, Y, T, X, groups, n_periods):
        ''' Fits all the nuisance models and calculates all residuals for each period and information set
        '''
        resT = {}
        resY = {}
        for kappa in np.arange(n_periods):
            resT[kappa] = {}
            resY[kappa] = np.zeros(self._n_train_units)
            for tau in np.arange(kappa, n_periods):
                resT[kappa][tau] = np.zeros(
                    (self._n_train_units,) + T.shape[1:])

        for train, test in GroupKFold(self._n_cfit_splits).split(X, Y, groups):
            inds_train = train[np.arange(train.shape[0]) % n_periods == 0]
            inds_test = test[np.arange(test.shape[0]) % n_periods == 0]
            for kappa in np.arange(n_periods):
                for tau in np.arange(kappa, n_periods):
                    resT[kappa][tau][inds_test // n_periods] = T[inds_test + tau]\
                        - self._model_t_gen().fit(X[inds_train + kappa],
                                                  T[inds_train + tau]).predict(X[inds_test + kappa])
                    resY[kappa][inds_test // n_periods] = Y[inds_test + n_periods - 1]\
                        - self._model_y_gen().fit(X[inds_train + kappa],
                                                  Y[inds_train + n_periods - 1]).predict(X[inds_test + kappa])
        return resT, resY

    def _fit_cov_matrix(self, resT, resY, models):
        ''' Calculates the covariance (n_periods*n_treatments) x (n_periods*n_treatments) matrix for all the parameters
        '''
        n_periods = len(models)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



