Class GWCorrelation

Inheritance Relationships

Base Types

Class Documentation

class GWCorrelation : public gwm::SpatialMultiscaleAlgorithm, public gwm::IMultivariateAnalysis, public gwm::IParallelizable, public gwm::IParallelOpenmpEnabled, public gwm::IBandwidthSelectable

地理加权汇总统计分析算法类。 地理加权汇总统计是计算局部加权统计值的方法。 可计算的统计值包括: local covariances, local correlations (Pearson's), local correlations (Spearman's), local medians, local interquartile ranges, local quantile imbalances and coordinates. 使用下面这些函数获取上述值:

Public Types

enum BandwidthInitilizeType

带宽初始值类型。

Values:

enumerator Null
enumerator Initial
enumerator Specified
enum BandwidthSelectionCriterionType

带宽选择指标类型。

Values:

enumerator CV
enumerator AIC
typedef void (GWCorrelation::* SummaryCalculator)()

计算函数

typedef double (GWCorrelation::* BandwidthSizeCriterionFunction)(const std::unique_ptr<BandwidthWeight>&)

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

typedef double (GWCorrelation::* BandwidthSelectionCriterionCalculator)(const std::unique_ptr<BandwidthWeight>&)

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

Public Functions

inline GWCorrelation()

构造一个新的 GWCorrelation 对象。

inline ~GWCorrelation()

销毁 GWCorrelation 对象。

inline const arma::mat &localMean() const

获取每个样本的局部均值。

返回:

每个样本的局部均值

inline const arma::mat &localSDev() const

获取每个样本的局部标准差。

返回:

每个样本的局部标准差

inline const arma::mat &localSkewness() const

获取每个样本的局部偏度。

返回:

每个样本的局部偏度

inline const arma::mat &localCV() const

获取每个样本的局部变化系数。

返回:

每个样本的局部变化系数

inline const arma::mat &localVar() const

获取每个样本的局部方差。

返回:

每个样本的局部方差

inline const arma::mat &localCov() const

获取局部协方差。

返回:

局部协方差。 如果 corrWithFirstOnly 设置为 true ,则共有 字段数 - 1 列; 否则,有 ((字段数 - 1) * 字段数) / 2 列。 对于变量 \(v_1, v_2, v_3, ... , v_{k-1}, v_k\) 返回字段按如下方式排序: \(cov(v_1,v_2), cov(v_1,v_3), ... , cov(v_1,v_k), cov(v_2,v_3), ... , cov(v_2,v_k), ... , cov(v_{k-1},vk)\)

inline const arma::mat &localCorr() const

获取局部皮尔逊相关系数。

返回:

局部皮尔逊相关系数。 如果 corrWithFirstOnly 设置为 true ,则共有 字段数 - 1 列; 否则,有 ((字段数 - 1) * 字段数) / 2 列。 对于变量 \(v_1, v_2, v_3, ... , v_{k-1}, v_k\) 返回字段按如下方式排序: \(corr(v_1,v_2), corr(v_1,v_3), ... , corr(v_1,v_k), corr(v_2,v_3), ... , corr(v_2,v_k), ... , corr(v_{k-1},vk)\)

inline const arma::mat &localSCorr() const

获取局部斯皮尔曼相关系数。

返回:

局部斯皮尔曼相关系数。 如果 corrWithFirstOnly 设置为 true ,则共有 字段数 - 1 列; 否则,有 ((字段数 - 1) * 字段数) / 2 列。 对于变量 \(v_1, v_2, v_3, ... , v_{k-1}, v_k\) 返回字段按如下方式排序: \(corr(v_1,v_2), corr(v_1,v_3), ... , corr(v_1,v_k), corr(v_2,v_3), ... , corr(v_2,v_k), ... , corr(v_{k-1},vk)\)

inline bool isAutoselectBandwidth()
inline const std::vector<BandwidthInitilizeType> &bandwidthInitilize() const

获取带宽初始化值类型。

返回:

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

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

设置带宽初始化值类型。

参数:

bandwidthInitilize -- 带宽初始化值类型。

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

获取带宽选择方法。

返回:

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

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

设置带宽选择方法。

参数:

bandwidthSelectionApproach -- 带宽选择方法。

inline BandwidthSizeCriterionFunction bandwidthSizeCriterionVar(BandwidthSelectionCriterionType type)

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

参数:

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

返回:

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

inline virtual Status getCriterion(const std::unique_ptr<BandwidthWeight> &weight, double &criterion) override

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

参数:
  • weight -- 指定的带宽。

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

  • Status -- 算法运行状态。

inline virtual int parallelAbility() const override

返回该算法的并行能力。

返回:

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

inline virtual ParallelType parallelType() const override

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

返回:

当前算法的并行类型。

virtual void setParallelType(const ParallelType &type) override

Set the parallel type of this algorithm.

Use setParallelType to set parallel type of this algorithm to ParallelType::OpenMP in shared build.

参数:

type -- Parallel type of this algorithm.

inline virtual void setOmpThreadNum(const int threadNum) override

Set the thread numbers while paralleling.

Use gwmodel_set_GWAverage_openmp() to set this property in shared build.

参数:

threadNum -- Number of threads.

virtual bool isValid() override

检查算法配置是否合法。

返回:

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

返回:

false 如果算法配置不合法。

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

Get variables.

返回:

arma::mat of variables.

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

设置变量x。

参数:

x -- 进行GWCorrelation的变量。

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

Get response variables.

返回:

arma::mat of variables.

inline virtual void setVariables1(const arma::mat &y) override

设置变量y。

参数:

y -- 进行GWCorrelation的变量。

virtual void run() override

Run analysis algorithm.

void calibration(const arma::mat &locations, const arma::mat &x)

Public Static Functions

static inline double covwt(const arma::mat &x1, const arma::mat &x2, const arma::vec &w)

计算两个矩阵的加权协方差。

参数:
  • x1 -- 矩阵 \( X_1 \)

  • x2 -- 矩阵 \( X_2 \)

  • w -- 权重向量 \( w \)

返回:

加权协方差

\[ cov(X_1,X_2) = \frac{\sum_{i=1}^n w_i(x_{1i} - \bar{x}_1) \sum_{i=1}^n w_i(x_{2i} - \bar{x}_2)}{1 - \sum_{i=1}^n w_i} \]

static inline double corwt(const arma::mat &x1, const arma::mat &x2, const arma::vec &w)

计算两个矩阵的加权相关系数。

参数:
  • x1 -- 矩阵 \( X_1 \)

  • x2 -- 矩阵 \( X_2 \)

  • w -- 权重向量 \( w \)

返回:

static inline arma::vec rank(arma::vec x)
static arma::vec del(arma::vec x, arma::uword rowcount)

Public Static Attributes

static std::unordered_map<BandwidthInitilizeType, std::string> BandwidthInitilizeTypeNameMapper

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

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

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

Protected Functions

inline BandwidthWeight &bandwidth(size_t i)