mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-19 22:00:28 +01:00
55 lines
1.7 KiB
C++
55 lines
1.7 KiB
C++
#ifndef REGRESSION_STORE_H
|
|
#define REGRESSION_STORE_H
|
|
|
|
#include "../shared/interactive_curve_view_range.h"
|
|
#include "../shared/float_pair_store.h"
|
|
|
|
namespace Regression {
|
|
|
|
class Store : public Shared::InteractiveCurveViewRange, public Shared::FloatPairStore, public Shared::InteractiveCurveViewRangeDelegate {
|
|
public:
|
|
Store();
|
|
// Dots
|
|
/* Return the closest dot to x above the regression curve if direction > 0,
|
|
* below otherwise*/
|
|
int closestVerticalDot(int direction, float x);
|
|
/* Return the closest dot to dot given on the right if direction > 0,
|
|
* on the left otherwise*/
|
|
int nextDot(int direction, int dot);
|
|
|
|
// Window
|
|
void setDefault() override;
|
|
|
|
// Calculation
|
|
double numberOfPairs();
|
|
double squaredValueSumOfColumn(int i);
|
|
double columnProductSum();
|
|
double meanOfColumn(int i);
|
|
double varianceOfColumn(int i);
|
|
double standardDeviationOfColumn(int i);
|
|
double covariance();
|
|
double slope();
|
|
double yIntercept();
|
|
double yValueForXValue(double x);
|
|
double xValueForYValue(double y);
|
|
double correlationCoefficient();
|
|
double squaredCorrelationCoefficient();
|
|
private:
|
|
constexpr static float k_displayTopMarginRatio = 0.12f;
|
|
constexpr static float k_displayRightMarginRatio = 0.05f;
|
|
constexpr static float k_displayBottomMarginRatio = 0.5f;
|
|
constexpr static float k_displayLeftMarginRatio = 0.05f;
|
|
InteractiveCurveViewRangeDelegate::Range computeYRange(InteractiveCurveViewRange * interactiveCurveViewRange) override;
|
|
float addMargin(float x, float range, bool isMin) override;
|
|
float maxValueOfColumn(int i);
|
|
float minValueOfColumn(int i);
|
|
};
|
|
|
|
typedef double (Store::*ArgCalculPointer)(int);
|
|
typedef double (Store::*CalculPointer)();
|
|
typedef void (Store::*RangeMethodPointer)();
|
|
|
|
}
|
|
|
|
#endif
|