Class GTDR

Inheritance Relationships

Base Types

Class Documentation

class GTDR : public gwm::SpatialAlgorithm, public gwm::IRegressionAnalysis, public gwm::IVarialbeSelectable, public gwm::IParallelizable, public gwm::IParallelOpenmpEnabled

地理加权密度回归模型

Public Types

enum BandwidthCriterionType

带宽优选指标值类型。

Values:

enumerator CV

CV

enumerator AIC

AIC

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

用于预测的函数

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

用于拟合的函数

typedef double (GTDR::* BandwidthCriterionCalculator)(const std::vector<std::reference_wrapper<BandwidthWeight>>&)

带宽优选指标值计算函数

typedef double (GTDR::* IndepVarCriterionCalculator)(const std::vector<std::size_t>&)

变量优选指标值计算函数

Public Functions

inline GTDR()

构造一个新的 GTDR 对象。

inline GTDR(const arma::mat &x, const arma::vec &y, const arma::mat &coords, const std::vector<SpatialWeight> &spatialWeights, bool hasHatMatrix = true, bool hasIntercept = true)

构造一个新的 GTDR 对象。

参数:
  • x -- 自变量

  • y -- 因变量

  • coords -- 样本坐标

  • spatialWeights -- 空间权重配置

  • hasHatMatrix -- 是否计算帽子矩阵

  • hasIntercept -- 是否包含截距

inline virtual ~GTDR()

销毁 GTDR 对象。

inline const arma::mat &betas() const

获取回归系数估计值。

返回:

arma::mat 回归系数估计值

inline bool hasHatMatrix() const

获取是否有帽子矩阵。

返回:

true 是

返回:

false 否

inline void setHasHatMatrix(bool flag)

设置是否有帽子矩阵。

参数:

flag -- 是否有帽子矩阵。

inline const std::vector<SpatialWeight> &spatialWeights() const

获取空间权重配置。

返回:

const std::vector<SpatialWeight>& 空间权重配置

inline void setSpatialWeights(const std::vector<SpatialWeight> &spatialWeights)

设置空间权重配置。

参数:

spatialWeights -- 空间权重配置

inline bool enableBandwidthOptimize()

获取是否进行带宽优选。

返回:

true 是

返回:

false 否

inline void setEnableBandwidthOptimize(bool flag)

设置是否进行带宽优选。

参数:

flag -- 是否进行带宽优选

inline double bandwidthOptimizeEps() const

获取带宽优选阈值。

返回:

double 带宽优选阈值

inline void setBandwidthOptimizeEps(double value)

设置带宽优选阈值。

参数:

value -- 带宽优选阈值

inline std::size_t bandwidthOptimizeMaxIter() const

获取带宽优选最大迭代次数。

返回:

std::size_t 带宽优选最大迭代次数

inline void setBandwidthOptimizeMaxIter(std::size_t value)

获取带宽优选最大迭代次数。

参数:

value -- 带宽优选最大迭代次数

inline double bandwidthOptimizeStep() const

获取带宽优选步长。

返回:

double 带宽优选步长

inline void setBandwidthOptimizeStep(double value)

设置带宽优选步长。

参数:

value -- 带宽优选步长

inline BandwidthCriterionType bandwidthCriterionType() const

获取带宽优选指标类型。

返回:

BandwidthCriterionType 带宽优选指标类型

void setBandwidthCriterionType(const BandwidthCriterionType &type)

设置带宽优选指标类型。

参数:

type -- 带宽优选指标类型

inline bool enableIndpenVarSelect() const

获取是否优选变量。

返回:

true 是

返回:

false 否

inline void setEnableIndepVarSelect(bool flag)

设置是否优选变量。

参数:

flag -- 是否优选变量

inline double indepVarSelectThreshold() const

获取变量优选阈值

返回:

double 变量优选阈值

inline void setIndepVarSelectThreshold(double threshold)

设置变量优选阈值

参数:

threshold -- 变量优选阈值

inline const VariablesCriterionList &indepVarCriterionList() const

获取变量优选过程中每种变量组合对应的指标值列表。

返回:

VariablesCriterionList 变量优选过程中每种变量组合对应的指标值列表

inline const std::vector<std::size_t> &selectedIndepVars() const

获取选中的变量组合

返回:

const std::vector<std::size_t>& 选中的变量组合

inline arma::mat betasSE()

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

返回:

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

inline arma::vec sHat()

获取一个包含 \(S\)\(S'S\) 矩阵迹的向量。

返回:

arma::vec 一个包含 \(S\)\(S'S\) 矩阵迹的向量

inline arma::vec qDiag()

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

返回:

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

inline arma::mat s()

获取帽子矩阵 \(S\)

返回:

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

virtual bool isValid() override

检查算法配置是否合法。

返回:

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

返回:

false 如果算法配置不合法。

inline virtual const arma::vec &dependentVariable() const override

获取因变量。

返回:

arma::vec 因变量。

inline virtual void setDependentVariable(const arma::vec &y) override

设置因变量。

参数:

y -- 因变量。

inline virtual const arma::mat &independentVariables() const override

获取自变量。

返回:

arma::mat 自变量。

inline virtual void setIndependentVariables(const arma::mat &x) override

设置自变量。

参数:

x -- 自变量。

inline virtual bool hasIntercept() const override

获取是否具有截距。

返回:

true 如果有截距。

返回:

false 如果没有截距。

inline virtual void setHasIntercept(const bool has) override

Set the Has Intercept object.

参数:

has -- 如果有截距则传入 true ,否则传入 false 。

inline virtual RegressionDiagnostic diagnostic() const override

获取诊断信息。

返回:

RegressionDiagnostic 诊断信息。

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

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

参数:

locations -- 指定位置。

返回:

mat 回归系数预测值。

virtual arma::mat fit() override

拟合回归系数估计值。

返回:

mat 回归系数估计值。

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

根据指定的变量计算变量优选的指标值。

参数:
  • variables -- 指定的变量。

  • criterion -- [出参] 带宽优选的指标值。

  • Status -- 算法运行状态。

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 -- 并行线程数。

inline double bandwidthCriterion(const std::vector<std::reference_wrapper<BandwidthWeight>> &bandwidths)

获取给定带宽值对应的指标值。

参数:

bandwidths -- 给定带宽值

返回:

double 指标值

Public Static Functions

static RegressionDiagnostic CalcDiagnostic(const arma::mat &x, const arma::vec &y, const arma::mat &betas, const arma::vec &shat)

计算诊断信息。

参数:
  • x -- 自变量

  • y -- 因变量

  • betas -- 回归系数估计值

  • shat -- 一个包含 \(S\)\(S'S\) 矩阵迹的向量

返回:

RegressionDiagnostic 诊断信息

static inline arma::vec Fitted(const arma::mat &x, const arma::mat &betas)

获取因变量估计值。

参数:
  • x -- 自变量

  • betas -- 回归系数估计值

返回:

arma::vec 因变量估计值

static inline double RSS(const arma::mat &x, const arma::mat &y, const arma::mat &betas)

获取残差平方和。

参数:
  • x -- 自变量

  • y -- 因变量

  • betas -- 回归系数估计值

返回:

double 残差平方和

static inline double AICc(const arma::mat &x, const arma::mat &y, const arma::mat &betas, const arma::vec &shat)

获取 AICc 值。

参数:
  • x -- 自变量

  • y -- 因变量

  • betas -- 回归系数估计值

  • shat -- 一个包含 \(S\)\(S'S\) 矩阵迹的向量

返回:

double

Protected Functions

arma::mat predictSerial(const arma::mat &locations, const arma::mat &x, const arma::vec &y)

预测函数的非并行实现。

参数:
  • locations -- 要预测的位置

  • x -- 自变量

  • y -- 因变量

返回:

arma::mat 回归系数估计值

arma::mat fitSerial(const arma::mat &x, const arma::vec &y, arma::mat &betasSE, arma::vec &shat, arma::vec &qdiag, arma::mat &S)

拟合函数的非并行实现。

参数:
  • x -- 自变量

  • y -- 因变量

  • betasSE -- [出参] 回归系数估计值标准误差。

  • shat -- [出参] 一个包含 \(S\)\(S'S\) 矩阵迹的向量

  • qdiag -- [出参] 矩阵 \(Q\) 的对角线元素

  • S -- [出参] 帽子矩阵 \(S\)

返回:

arma::mat 回归系数估计值

double bandwidthCriterionAICSerial(const std::vector<std::reference_wrapper<BandwidthWeight>> &bandwidths)

获取给定带宽值对应的AIC值的非并行实现。

参数:

bandwidths -- 给定带宽值

返回:

double 指标值

double bandwidthCriterionCVSerial(const std::vector<std::reference_wrapper<BandwidthWeight>> &bandwidths)

获取给定带宽值对应的CV值的非并行实现。

参数:

bandwidths -- 给定带宽值

返回:

double 指标值

double indepVarCriterionSerial(const std::vector<std::size_t> &indepVars)

获取给定变量组合对应的AIC值的非并行实现。

参数:

bandwidths -- 给定变量组合

返回:

double 指标值