类 GWDR

继承关系

基类

类文档

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

地理加权密度回归模型

公有类型

enum BandwidthCriterionType

带宽优选指标值类型。

Values:

enumerator CV

CV

enumerator AIC

AIC

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

用于预测的函数

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

用于拟合的函数

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

带宽优选指标值计算函数

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

变量优选指标值计算函数

公有方法

inline GWDR()

构造一个新的 GWDR 对象。

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

构造一个新的 GWDR 对象。

参数
  • x – 自变量

  • y – 因变量

  • coords – 样本坐标

  • spatialWeights – 空间权重配置

  • hasHatMatrix – 是否计算帽子矩阵

  • hasIntercept – 是否包含截距

inline virtual ~GWDR()

销毁 GWDR 对象。

inline 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 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 arma::vec dependentVariable() const override

获取因变量。

返回

arma::vec 因变量。

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

设置因变量。

参数

y – 因变量。

inline virtual 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 double getCriterion(const std::vector<std::size_t> &variables) override

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

参数

weight – 指定的变量。

返回

double 变量优选的指标值。

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<BandwidthWeight*> &bandwidths)

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

参数

bandwidths – 给定带宽值

返回

double 指标值

公有静态方法

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

保护方法

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<BandwidthWeight*> &bandwidths)

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

参数

bandwidths – 给定带宽值

返回

double 指标值

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

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

参数

bandwidths – 给定带宽值

返回

double 指标值

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

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

参数

bandwidths – 给定变量组合

返回

double 指标值