Esempio n. 1
0
        static void RegressAtLag(CompanyObservations compObs, int lag, SqlCommand cmd, CompanyObservations.RegressionType type)
        {
            DoubleVector prices       = compObs.GetPrices(type, compObs.Length - lag, 1);
            DoubleVector laggedPrices = compObs.GetPrices(type, compObs.Length - lag, lag);

            //Regress price & priceLag
            LinearRegression      priceRegression = new LinearRegression(new DoubleMatrix(laggedPrices), prices);
            LinearRegressionAnova priceAnova      = new LinearRegressionAnova(priceRegression);

            DoubleMatrix companyGen = compObs.GetCompanyGenerated(type, lag);

            //Regress Price and compLag
            LinearRegression      companyRegression = new LinearRegression(companyGen, prices);
            LinearRegressionAnova companyAnova      = new LinearRegressionAnova(companyRegression);

            DoubleMatrix customerGen = compObs.GetCustomerGenerated(type, lag);

            //Regress Price and cust lag
            LinearRegression      customerRegression = new LinearRegression(customerGen, prices);
            LinearRegressionAnova customerAnova      = new LinearRegressionAnova(customerRegression);

            double priceExplain    = Double.IsInfinity(priceAnova.AdjustedRsquared) ? 0 : priceAnova.AdjustedRsquared;
            double companyExplain  = Double.IsInfinity(companyAnova.AdjustedRsquared) ? 0 : companyAnova.AdjustedRsquared;
            double customerExplain = Double.IsInfinity(customerAnova.AdjustedRsquared) ? 0 : customerAnova.AdjustedRsquared;

            cmd.CommandText = $"Insert INTO RegressionResults VALUES ({compObs.CompanyID}, {lag}, {priceExplain}, {customerExplain}, {companyExplain}, {(int) type})";
            cmd.ExecuteNonQuery();
        }
Esempio n. 2
0
        static void PerformRegressions(CompanyObservations compObs, SqlCommand cmd)
        {
            if (compObs.Length < 10)
            {
                return;
            }

            for (int i = 1; i < 6; i++)
            {
                RegressAtLag(compObs, i, cmd, CompanyObservations.RegressionType.Full);

                if (i != 1)
                {
                    RegressAtLag(compObs, i, cmd, CompanyObservations.RegressionType.Delta);
                    RegressAtLag(compObs, i, cmd, CompanyObservations.RegressionType.PercentChanged);
                }
            }
        }