类 GWRBasic

继承关系

基类

派生类

类文档

class GWRBasic : public gwm::GWRBase, public gwm::IBandwidthSelectable, public gwm::IVarialbeSelectable, public gwm::IParallelizable, public gwm::IParallelOpenmpEnabled

基础地理加权回归算法的实现。 该算法可以自动选带宽和变量。 该算法可以通过 OpenMP 加速。

Subclassed by gwm::GWRRobust

公有类型

enum BandwidthSelectionCriterionType

用于带宽优选的指标类型。

Values:

enumerator AIC

AIC

enumerator CV

CV

typedef arma::mat (GWRBasic::* PredictCalculator)(const arma::mat&, const arma::mat&, const arma::vec&)

预测函数声明。

typedef arma::mat (GWRBasic::* FitCalculator)(const arma::mat&, const arma::vec&, arma::mat&, arma::vec&, arma::vec&, arma::mat&)

拟合函数声明。

typedef double (GWRBasic::* BandwidthSelectionCriterionCalculator)(BandwidthWeight*)

带宽优选指标计算函数声明。

typedef double (GWRBasic::* IndepVarsSelectCriterionCalculator)(const std::vector<size_t>&)

变量优选指标计算函数声明。

公有方法

inline GWRBasic()

构造 CGwmGWRBasic 对象。

inline GWRBasic(const arma::mat &x, const arma::vec &y, const arma::mat &coords, const SpatialWeight &spatialWeight, bool hasHatMatrix = true, bool hasIntercept = true)

构造 CGwmGWRBasic 对象。

参数
  • x – 自变量矩阵。

  • y – 因变量。

  • coords – 坐标矩阵。

  • spatialWeight – 空间权重配置。

  • hasHatMatrix – 是否计算帽子矩阵。

  • hasIntercept – 是否有截距。

inline ~GWRBasic()

析构 CGwmGWRBasic 对象。

inline bool isAutoselectBandwidth() const

获取是否自动优选带宽。

返回

true 如果自动优选带宽。

返回

false 如果不自动优选带宽。

inline void setIsAutoselectBandwidth(bool isAutoSelect)

设置是否自动优选带宽。

参数

isAutoSelect – true 如果要自动优选带宽,否则 false。

inline BandwidthSelectionCriterionType bandwidthSelectionCriterion() const

获取带宽自动优选指标值类型。

返回

BandwidthSelectionCriterionType 带宽自动优选指标值类型。

void setBandwidthSelectionCriterion(const BandwidthSelectionCriterionType &criterion)

设置带宽自动优选指标值类型。

参数

criterion – 带宽自动优选指标值类型。

inline bool isAutoselectIndepVars() const

获取是否自动优选变量。

返回

true 如果自动优选变量。

返回

false 如果不自动优选变量。

inline void setIsAutoselectIndepVars(bool isAutoSelect)

设置是否自动优选变量。

参数

isAutoSelect – true 如果要自动优选变量,否则 false。

inline double indepVarSelectionThreshold() const

获取变量优选指标类型。

返回

double 变量优选指标类型。

inline void setIndepVarSelectionThreshold(double threshold)

设置变量优选指标类型。

参数

threshold – 变量优选指标类型。 该值的大小取决于样本的数量。 样本数量越多,值越大。

inline VariablesCriterionList indepVarsSelectionCriterionList() const

获取变量优选过程的指标值列表。

返回

VariablesCriterionList 变量优选过程的指标值列表。

inline BandwidthCriterionList bandwidthSelectionCriterionList() const

获取带宽优选过程的指标值列表。

返回

BandwidthCriterionList 带宽优选过程的指标值列表。

inline bool hasHatMatrix() const

获取是否计算帽子矩阵。

返回

true 如果计算帽子矩阵。

返回

false 如果不计算帽子矩阵。

inline void setHasHatMatrix(const bool has)

设置是否计算帽子矩阵。

参数

has – true 如果计算帽子矩阵,否则 false。

inline arma::mat betasSE()

获取回归系数估计值的标准差。

返回

arma::mat 回归系数估计值的标准差。

inline arma::vec sHat()

获取一个由 \(tr(S)\)\(tr(SS^T)\) 组成的向量。

返回

arma::vec 由 \(tr(S)\)\(tr(SS^T)\) 组成的向量。

inline arma::vec qDiag()

获取矩阵 \(Q\) 的对角线元素。

返回

arma::vec 矩阵 \(Q\) 的对角线元素。

inline arma::mat s()

获取帽子矩阵 \(S\)

返回

arma::mat 帽子矩阵 \(S\)

virtual bool isValid() override

检查算法配置是否合法。

返回

true 如果算法配置是合法的。

返回

false 如果算法配置不合法。

virtual arma::mat predict(const arma::mat &locations) override

在指定位置处进行回归系数预测。

参数

locations – 指定位置。

返回

mat 回归系数预测值。

virtual arma::mat fit() override

拟合回归系数估计值。

返回

mat 回归系数估计值。

inline virtual double getCriterion(BandwidthWeight *weight) override

根据指定的带宽计算带宽优选的指标值。

参数

weight – 指定的带宽。

返回

double 带宽优选的指标值。

inline double getCriterion(const std::vector<size_t> &variables) override
inline virtual std::vector<std::size_t> selectedVariables() override

获取优选的变量。

返回

std::vector<std::size_t> 优选的变量。

inline virtual int parallelAbility() const override

返回该算法的并行能力。

返回

当前算法并行能力的按位或运算结果。

inline virtual ParallelType parallelType() const override

返回当前算法的并行类型。

返回

当前算法的并行类型。

virtual void setParallelType(const ParallelType &type) override

设置当前算法的并行类型。

参数

type – 当前算法的并行类型。

inline virtual void setOmpThreadNum(const int threadNum) override

设置并行线程数。

参数

threadNum – 并行线程数。

公有静态属性

static std::unordered_map<BandwidthSelectionCriterionType, std::string> BandwidthSelectionCriterionTypeNameMapper

保护方法

inline bool isStoreS()

是否保存帽子矩阵 \(S\).

返回

true 如果保存帽子矩阵。

返回

false 如果不保存帽子矩阵。

void createPredictionDistanceParameter(const arma::mat &locations)

生成用于预测的距离参数。

参数

locations – 用于预测的距离参数。

保护属性

bool mHasHatMatrix = true

是否具有帽子矩阵。

bool mHasFTest = false

待办事项:

是否具有F检验。

bool mHasPredict = false

弃用:

是否有预测位置处的变量。

bool mIsAutoselectIndepVars = false

是否自动优选变量。

double mIndepVarSelectionThreshold = 3.0

变量优选的阈值。

IndepVarsSelectCriterionCalculator mIndepVarsSelectionCriterionFunction = &GWRBasic::indepVarsSelectionCriterionSerial

变量优选的指标计算函数。

VariablesCriterionList mIndepVarsSelectionCriterionList

每种变量组合对应的指标值。

std::vector<std::size_t> mSelectedIndepVars

优选得到的变量。

bool mIsAutoselectBandwidth = false

是否自动优选带宽。

BandwidthSelectionCriterionType mBandwidthSelectionCriterion = BandwidthSelectionCriterionType::AIC

带宽优选的指标值类型。

BandwidthSelectionCriterionCalculator mBandwidthSelectionCriterionFunction = &GWRBasic::bandwidthSizeCriterionCVSerial

带宽优选的指标计算函数。

BandwidthCriterionList mBandwidthSelectionCriterionList

每种带宽组合对应的指标值。

PredictCalculator mPredictFunction = &GWRBasic::predictSerial

预测的具体实现函数。

FitCalculator mFitFunction = &GWRBasic::fitSerial

拟合的具体实现函数。

ParallelType mParallelType = ParallelType::SerialOnly

并行方法类型。

int mOmpThreadNum = 8

并行计算创建的线程数。

arma::mat mBetasSE

回归系数估计值的标准差。

arma::vec mSHat

\(tr(S)\)\(tr(SS^T)\) 组成的向量。

arma::vec mQDiag

矩阵 \(Q\) 的对角线元素。

arma::mat mS

帽子矩阵 \(S\)