类 GWRMultiscale

继承关系

基类

类文档

class GWRMultiscale : public gwm::SpatialMultiscaleAlgorithm, public gwm::IBandwidthSelectable, public gwm::IRegressionAnalysis, public gwm::IParallelizable, public gwm::IParallelOpenmpEnabled

多尺度GWR算法

公有类型

enum BandwidthInitilizeType

带宽初始值类型。

Values:

enumerator Null
enumerator Initial
enumerator Specified
enum BandwidthSelectionCriterionType

带宽选择指标类型。

Values:

enumerator CV
enumerator AIC
enum BackFittingCriterionType

后向迭代算法收敛指标值类型。

Values:

enumerator CVR
enumerator dCVR
typedef double (GWRMultiscale::* BandwidthSizeCriterionFunction)(BandwidthWeight*)

根据指定带宽大小计算对应指标值的函数。

typedef arma::mat (GWRMultiscale::* FitAllFunction)(const arma::mat&, const arma::vec&)

根据所有变量拟合模型的函数。

typedef arma::vec (GWRMultiscale::* FitVarFunction)(const arma::vec&, const arma::vec&, const arma::uword, arma::mat&)

根据给定变量拟合模型的函数。

公有成员函数

inline GWRMultiscale()

构造一个新的 GWRMultiscale 对象。

inline GWRMultiscale(const arma::mat &x, const arma::vec &y, const arma::mat &coords, const std::vector<SpatialWeight> &spatialWeights)

构造一个新的 GWRMultiscale 对象。

参数
  • x – 自变量矩阵。

  • y – 因变量。

  • coords – 坐标矩阵。

  • spatialWeight – 空间权重配置。

inline virtual ~GWRMultiscale()

销毁 GWRMultiscale 对象。

inline std::vector<BandwidthInitilizeType> bandwidthInitilize() const

获取带宽初始化值类型。

返回

std::vector<BandwidthInitilizeType> 带宽初始化值类型。

void setBandwidthInitilize(const std::vector<BandwidthInitilizeType> &bandwidthInitilize)

设置带宽初始化值类型。

参数

bandwidthInitilize – 带宽初始化值类型。

inline std::vector<BandwidthSelectionCriterionType> bandwidthSelectionApproach() const

获取带宽选择方法。

返回

std::vector<BandwidthSelectionCriterionType> 带宽选择方法。

void setBandwidthSelectionApproach(const std::vector<BandwidthSelectionCriterionType> &bandwidthSelectionApproach)

设置带宽选择方法。

参数

bandwidthSelectionApproach – 带宽选择方法。

inline std::vector<bool> preditorCentered() const

获取是否中心化变量。

返回

std::vector<bool> 是否中心化变量。

inline void setPreditorCentered(const std::vector<bool> &preditorCentered)

设置是否中心化自变量。

参数

preditorCentered – 是否中心化自变量。

inline std::vector<double> bandwidthSelectThreshold() const

获取带宽选择阈值。

返回

std::vector<double> 带宽选择阈值。

inline void setBandwidthSelectThreshold(const std::vector<double> &bandwidthSelectThreshold)

设置带宽选择阈值。

参数

bandwidthSelectThreshold – 带宽选择阈值。

inline bool hasHatMatrix() const

获取是否有帽子矩阵 \(S\)

返回

true 有帽子矩阵。

返回

false 没有帽子矩阵。

inline void setHasHatMatrix(bool hasHatMatrix)

设置是否有帽子矩阵 \(S\)

参数

hasHatMatrix – 是否有帽子矩阵 \(S\)

inline size_t bandwidthSelectRetryTimes() const

获取优选带宽时的最大重试次数。

返回

size_t 优选带宽时的最大重试次数。

inline void setBandwidthSelectRetryTimes(size_t bandwidthSelectRetryTimes)

设置优选带宽时的最大重试次数。

参数

bandwidthSelectRetryTimes – 优选带宽时的最大重试次数。

inline size_t maxIteration() const

获取最大迭代次数。

返回

size_t 最大迭代次数。

inline void setMaxIteration(size_t maxIteration)

设置最大迭代次数。

参数

maxIteration – 最大迭代次数。

inline BackFittingCriterionType criterionType() const

获取后向迭代算法收敛指标值类型。

返回

BackFittingCriterionType 后向迭代算法收敛指标值类型。

inline void setCriterionType(const BackFittingCriterionType &criterionType)

设置后向迭代算法收敛指标值类型。

参数

criterionType – 后向迭代算法收敛指标值类型。

inline double criterionThreshold() const

获取指标收敛阈值。

返回

double 指标收敛阈值。

inline void setCriterionThreshold(double criterionThreshold)

设置指标收敛阈值。

参数

criterionThreshold – 指标收敛阈值。

inline int adaptiveLower() const

获取优选可变带宽优选下限值。

返回

int 优选可变带宽优选下限值。

inline void setAdaptiveLower(int adaptiveLower)

设置优选可变带宽优选下限值。

参数

adaptiveLower – 优选可变带宽优选下限值。

inline arma::mat betas() const

获取回归系数估计值 \(\beta\)

返回

arma::mat 回归系数估计值 \(\beta\)

BandwidthSizeCriterionFunction bandwidthSizeCriterionAll(BandwidthSelectionCriterionType type)

获取所有变量带宽优选的指标值计算函数。

参数

type – 所有变量带宽优选的指标值类型。

返回

BandwidthSizeCriterionFunction 所有变量带宽优选的指标值计算函数。

BandwidthSizeCriterionFunction bandwidthSizeCriterionVar(BandwidthSelectionCriterionType type)

获取单个变量带宽优选的指标值计算函数。

参数

type – 单个变量带宽优选的指标值类型。

返回

BandwidthSizeCriterionFunction 单个变量带宽优选的指标值计算函数。

virtual bool isValid() override

检查算法配置是否合法。

返回

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

返回

false 如果算法配置不合法。

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

Set the spatial weight configuration.

Use gwmodel_set_gwr_spatial_weight() to set this property to GWRBasic in shared build.

Use gwmodel_set_gwss_spatial_weight() to set this property to GWSS in shared build.

参数

spatialWeights – Reference of spatial weight configuration object.

inline virtual double getCriterion(BandwidthWeight *weight) override

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

参数

weight – 指定的带宽。

返回

double 带宽优选的指标值。

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 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<BandwidthInitilizeType, std::string> BandwidthInitilizeTypeNameMapper

带宽初始值类型到其名称的映射表。

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

带宽选择指标类型到其名称的映射表。

static std::unordered_map<BackFittingCriterionType, std::string> BackFittingCriterionTypeNameMapper

后向迭代算法收敛指标类型到其名称的映射表。

static int treeChildCount

保护成员函数

inline BandwidthWeight *bandwidth(size_t i)

获取第 \(i\) 个带宽。

参数

i – 带宽索引值。

返回

BandwidthWeight* 第 \(i\) 个带宽。

arma::mat fitAllSerial(const arma::mat &x, const arma::vec &y)

拟合所有变量的非并行实现。

参数
  • x – 自变量矩阵 \(X\)

  • y – 因变量 \(y\)

返回

arma::mat 回归系数估计值 \(\beta\)

arma::vec fitVarSerial(const arma::vec &x, const arma::vec &y, const arma::uword var, arma::mat &S)

拟合单个变量的非并行实现。

参数
  • x – 自变量矩阵 \(X\)

  • y – 因变量 \(y\)

  • var – 当前变量的索引值。

  • S – 帽子矩阵 \(S\)

返回

arma::vec 该变量对应的回归系数估计值。

arma::mat backfitting(const arma::mat &x, const arma::vec &y)

后向迭代算法。

参数
  • x – 自变量矩阵 \(X\)

  • y – 因变量 \(y\)

返回

arma::mat 回归系数估计值 \(\beta\)

double bandwidthSizeCriterionAllCVSerial(BandwidthWeight *bandwidthWeight)

为指定带宽值和所有变量计算CV指标值函数的非并行实现。

参数

bandwidthWeight – 带宽值。

返回

double CV指标值。

double bandwidthSizeCriterionAllAICSerial(BandwidthWeight *bandwidthWeight)

为指定带宽值和所有变量计算AIC指标值函数的非并行实现。

参数

bandwidthWeight – 带宽值。

返回

double AIC指标值。

double bandwidthSizeCriterionVarCVSerial(BandwidthWeight *bandwidthWeight)

为指定带宽值和某个变量计算CV指标值函数的非并行实现。

参数

bandwidthWeight – 带宽值。

返回

double CV指标值。

double bandwidthSizeCriterionVarAICSerial(BandwidthWeight *bandwidthWeight)

为指定带宽值和某个变量计算AIC指标值函数的非并行实现。

参数

bandwidthWeight – 带宽值。

返回

double AIC指标值。

void createInitialDistanceParameter()

创建初始距离参数对象。