def errors(self):
        indices = []  # index of a row, formatted YYYY-M (e.g. 2016-8, 2016-9)
        predictions = []
        errors = []  # errors. Lower is better
        test_data_size = []
        actuals = []

        for i in range(0, self.num_months() - self.training_data_span_months):
            m = self._model()
            training_data = self.training_data(i,
                                               self.training_data_span_months)
            m.fit(training_data)

            td = self.test_data(i + self.training_data_span_months)

            print "Generating prediction..."
            prediction = m.predict(\
                    BusinessForecast(\
                    td).convert(),
                    training_data=training_data)

            actual = ActualSchedule(\
                    td).bins()

            print "prediction "
            print prediction
            print "\n"

            print "actual"
            print actual
            print "\n"

            error = mean_absolute_error(actual, prediction)
            errors.append(error)

            index = self.year_month_index(i + self.training_data_span_months)
            indices.append(index)
            print "time: {}, error: {}".format(index, error)

            predictions.append(prediction)
            actuals.append(actual)
            test_data_size.append(actual.sum())

        return pd.DataFrame({
            'errors': errors,
            'test_data_size': test_data_size,
            'predictions': predictions,
            'actuals': actuals
        }).set_index([indices])