public DataAdequacyPage(IFullAnalysis <IAdjustedDataRow> analysisData, IAnalysisCalculations calculations) { InitializeComponent(); this.analysisData = analysisData; this.calculations = calculations; GenerateStrings(); }
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. }
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); } }