Program Listing for File GWRRobust.h
↰ Return to documentation for file (include/gwmodelpp/GWRRobust.h
)
#ifndef GWRROBUST_H
#define GWRROBUST_H
#include <utility>
#include <string>
#include <initializer_list>
#include "GWRBase.h"
#include "RegressionDiagnostic.h"
#include "IBandwidthSelectable.h"
#include "IVarialbeSelectable.h"
#include "IParallelizable.h"
#include "GWRBasic.h"
namespace gwm
{
class GWRRobust : public GWRBasic
{
private:
typedef arma::mat (GWRRobust::*RegressionHatmatrix)(const arma::mat &, const arma::vec &, arma::mat &, arma::vec &, arma::vec &, arma::mat &);
static RegressionDiagnostic CalcDiagnostic(const arma::mat &x, const arma::vec &y, const arma::mat &betas, const arma::vec &shat);
public:
GWRRobust() {}
~GWRRobust() {}
public:
bool filtered() const { return mFiltered; }
void setFiltered(bool value) { mFiltered = value; }
public: // Implement IRegressionAnalysis
arma::mat predict(const arma::mat& locations) override;
arma::mat fit() override;
arma::mat regressionHatmatrix(const arma::mat &x, const arma::vec &y, arma::mat &betasSE, arma::vec &shat, arma::vec &qdiag, arma::mat &S);
private:
arma::mat fitSerial(const arma::mat& x, const arma::vec& y, arma::mat& betasSE, arma::vec& shat, arma::vec& qDiag, arma::mat& S);
#ifdef ENABLE_OPENMP
//arma::mat predictOmp(const arma::mat& locations, const arma::mat& x, const arma::vec& y);
arma::mat fitOmp(const arma::mat& x, const arma::vec& y, arma::mat& betasSE, arma::vec& shat, arma::vec& qDiag, arma::mat& S);
#endif
protected:
arma::mat robustGWRCaliFirst(const arma::mat &x, const arma::vec &y, arma::mat &betasSE, arma::vec &shat, arma::vec &qDiag, arma::mat &S);
arma::mat robustGWRCaliSecond(const arma::mat &x, const arma::vec &y, arma::mat &betasSE, arma::vec &shat, arma::vec &qDiag, arma::mat &S);
arma::vec filtWeight(arma::vec residual, double mse);
public : // Implement IParallelizable
void setParallelType(const ParallelType &type) override;
protected:
void createPredictionDistanceParameter(const arma::mat& locations);
private:
bool mFiltered;
arma::mat mS;
arma::vec mWeightMask;
RegressionHatmatrix mfitFunction = &GWRRobust::fitSerial;
};
}
#endif // GWRROBUST_H