public DataAdequacyPage(IFullAnalysis <IAdjustedDataRow> analysisData, IAnalysisCalculations calculations)
        {
            InitializeComponent();
            this.analysisData = analysisData;
            this.calculations = calculations;

            GenerateStrings();
        }
Example #2
0
        public IFullAnalysis <IAdjustedDataRow> GetFullAnalysisAdjustedData(IFullAnalysis <IAnalysisDataRow> fullRawAnalysisModel)
        {
            //Returns all things from the regression analysis + adjusted Ys

            var adjustedData     = GetAdjustedData(fullRawAnalysisModel);
            var fullAnalysisCast = (FullAnalysis <IAnalysisDataRow>)fullRawAnalysisModel;
            var fullAdjusted     = new FullAnalysis <IAdjustedDataRow>(fullAnalysisCast.DatabaseId, fullRawAnalysisModel.Title, fullRawAnalysisModel.Description, fullRawAnalysisModel.XMeaning, fullRawAnalysisModel.YMeaning, adjustedData.Data);

            return(fullAdjusted);
        }
        public long SaveEntity(IFullAnalysis <IAnalysisDataRow> analysisModel)
        {
            var analysisInformation = SaveAnalysisInformation(analysisModel);

            analysisModel.DatabaseId = analysisInformation.Id;

            SaveAnalysisData(analysisModel, analysisInformation);

            return(analysisInformation.Id);
        }
        public ComputedAnalysis(IServiceProvider services, IFullAnalysis <IAnalysisDataRow> analysisModel)
        {
            InitializeComponent();
            this.Services = services;

            this.analysisLogicService = Services.GetService(typeof(IAnalysisLogicService)) as IAnalysisLogicService;

            this.analysisModel = analysisModel;

            //TODO: Find if the data had allready been computed and provide the computational data instead of computing it again. It is a good idea to make such constructors.
        }
Example #5
0
        public IAnalysisCalculations GetAnalysisCalculations(IFullAnalysis <IAnalysisDataRow> analysis)
        {
            var xdata = analysis.Data.Select(d => d.X).ToArray();
            var ydata = analysis.Data.Select(d => d.Y).ToArray();

            var fullAnalysis = (FullAnalysis <IAnalysisDataRow>)analysis;

            var analysisInfo = controller.GetEntityById <AnalysisInformation>(fullAnalysis.DatabaseId);
            var analysisData = analysisInfo.Data;

            //Checking if we already have this data in the database.
            if (controller.GetEntityById <AnalysisInformation>(fullAnalysis.DatabaseId) != null)
            {
                //If we have this data, try to get the calculations from the analysis calculations.
                try
                {
                    var calculations = analysisData.AnalysisCalculations;
                    return(calculations.Entity);
                }
                catch (Exception)
                {
                    //If we can't get the calculations, calculate them.
                    var businessLogicObject = new LinearRegression.BusinessLogic.Regression(xdata.ToList(), ydata.ToList());

                    var b0 = businessLogicObject.Parameter0;
                    var b1 = businessLogicObject.Parameter1;

                    var adjustedYs = businessLogicObject.GetAdjustedYsValues().ToArray();

                    double residualDispersion  = businessLogicObject.CheckAdequacyOfModel().residualDispersion;
                    double explainedDispersion = businessLogicObject.CheckAdequacyOfModel().explainedDispersion;
                    double fEmpirical          = businessLogicObject.CheckAdequacyOfModel().fEmpirical;
                    double fTheoretical        = businessLogicObject.CheckAdequacyOfModel().fTheoretical;

                    double averageErrorB0 = businessLogicObject.GetAverageErrorOfParameters().averageErrorOfFirstParameter;
                    double averageErrorB1 = businessLogicObject.GetAverageErrorOfParameters().averageErrorOfSecondParameter;

                    double maximalErrorB0 = businessLogicObject.GetMaximumErrorOfParameters().maximumErrorOfFirstParameter;
                    double maximalErrorB1 = businessLogicObject.GetMaximumErrorOfParameters().maximumErrorOfSecondParameter;

                    AnalysisCalculations c = new AnalysisCalculations(analysisData, adjustedYs, b0, b1, residualDispersion, explainedDispersion,
                                                                      fEmpirical, fTheoretical, averageErrorB0, averageErrorB1, maximalErrorB0, maximalErrorB1, controller);

                    c.Save();
                    return(c.Entity);
                }
            }
            else
            {
                //Else if we don't have the data, make the calculatons.

                var businessLogicObject = new LinearRegression.BusinessLogic.Regression(xdata.ToList(), ydata.ToList());

                var b0 = businessLogicObject.Parameter0;
                var b1 = businessLogicObject.Parameter1;

                var adjustedYs = businessLogicObject.GetAdjustedYsValues().ToArray();

                double residualDispersion  = businessLogicObject.CheckAdequacyOfModel().residualDispersion;
                double explainedDispersion = businessLogicObject.CheckAdequacyOfModel().explainedDispersion;
                double fEmpirical          = businessLogicObject.CheckAdequacyOfModel().fEmpirical;
                double fTheoretical        = businessLogicObject.CheckAdequacyOfModel().fTheoretical;

                double averageErrorB0 = businessLogicObject.GetAverageErrorOfParameters().averageErrorOfFirstParameter;
                double averageErrorB1 = businessLogicObject.GetAverageErrorOfParameters().averageErrorOfSecondParameter;

                double maximalErrorB0 = businessLogicObject.GetMaximumErrorOfParameters().maximumErrorOfFirstParameter;
                double maximalErrorB1 = businessLogicObject.GetMaximumErrorOfParameters().maximumErrorOfSecondParameter;

                var calculation = new AnalysisCalculations(
                    analysisData, adjustedYs, b0, b1, residualDispersion, explainedDispersion,
                    fEmpirical, fTheoretical, averageErrorB0, averageErrorB1, maximalErrorB0, maximalErrorB1, controller
                    );

                calculation.Save();

                return(calculation.Entity);
            }
        }