类 GWRMultiscale
继承关系
基类
public gwm::SpatialMultiscaleAlgorithm(类 SpatialMultiscaleAlgorithm)public gwm::IBandwidthSelectable(结构体 IBandwidthSelectable)public gwm::IRegressionAnalysis(结构体 IRegressionAnalysis)public gwm::IParallelizable(结构体 IParallelizable)public gwm::IParallelOpenmpEnabled(结构体 IParallelOpenmpEnabled)public gwm::IParallelCudaEnabled(结构体 IParallelCudaEnabled)public gwm::IParallelMpiEnabled(Struct IParallelMpiEnabled)
类文档
-
class GWRMultiscale : public gwm::SpatialMultiscaleAlgorithm, public gwm::IBandwidthSelectable, public gwm::IRegressionAnalysis, public gwm::IParallelizable, public gwm::IParallelOpenmpEnabled, public gwm::IParallelCudaEnabled, public gwm::IParallelMpiEnabled
多尺度GWR算法
公有类型
-
enum BandwidthInitilizeType
带宽初始值类型。
Values:
-
enumerator Null
-
enumerator Initial
-
enumerator Specified
-
enumerator Null
-
typedef double (GWRMultiscale::* BandwidthSizeCriterionFunction)(const std::unique_ptr<BandwidthWeight>&)
根据指定带宽大小计算对应指标值的函数。
-
typedef arma::vec (GWRMultiscale::* FitVarFunction)(const size_t)
根据给定变量拟合模型的函数。
-
typedef arma::vec (GWRMultiscale::* FitVarCoreFunction)(const arma::vec&, const arma::vec&, const SpatialWeight&, arma::mat&)
根据给定变量拟合模型的函数。
-
typedef arma::vec (GWRMultiscale::* FitVarCoreCVFunction)(const arma::vec&, const arma::vec&, const SpatialWeight&)
根据给定变量拟合模型的函数。
-
typedef arma::vec (GWRMultiscale::* FitVarCoreSHatFunction)(const arma::vec&, const arma::vec&, const SpatialWeight&, arma::vec&)
根据给定变量拟合模型的函数。
公有成员函数
-
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 -- 坐标矩阵。
spatialWeights -- 空间权重配置。
-
inline virtual ~GWRMultiscale()
销毁 GWRMultiscale 对象。
-
inline void setGoldenUpperBounds(double value)
设置 Golden selection 算法的上界。
- 参数:
value --
-
inline void setGoldenLowerBounds(double value)
设置 Golden selection 算法的下界。
- 参数:
value --
-
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 const std::vector<bool> &preditorCentered() const
获取是否中心化变量。
- 返回:
std::vector<bool> 是否中心化变量。
-
inline void setPreditorCentered(const std::vector<bool> &preditorCentered)
设置是否中心化自变量。
- 参数:
preditorCentered -- 是否中心化自变量。
-
inline const 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 const arma::mat &betas() const
获取回归系数估计值 \(\beta\)。
- 返回:
arma::mat 回归系数估计值 \(\beta\)。
-
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 Status getCriterion(const std::unique_ptr<BandwidthWeight> &weight, double &criterion) override
根据指定的带宽计算带宽优选的指标值。
- 参数:
weight -- 指定的带宽。
criterion -- [出参] 带宽优选的指标值。
Status -- 算法运行状态。
-
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 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 virtual void setGPUId(const int gpuId) override
设置并行化使用的 GPU 的 ID。
- 参数:
gpuId -- 并行化使用的 GPU 的 ID。 从 0 开始。
-
inline virtual void setGroupSize(const std::size_t size) override
Set the group size while paralleling.
- 参数:
size -- 并行化时的组长度 \(g\)。 通常取决于 gpuID 对应显卡的显存 \(m\) (B)。 如果有 \(n\) 样本和 \(k\) 变量, 要求
\[ k * n * g * 8 < m \]。 对于大多数 GPU 可选择值 64。
-
inline virtual int workerId() override
-
inline virtual void setWorkerId(int id) override
-
inline virtual void setWorkerNum(int size) override
公有静态属性
-
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 fitInitial()
-
arma::mat backfitting(const arma::mat &betas0)
后向迭代算法。
- 参数:
x -- 自变量矩阵 \(X\)。
y -- 因变量 \(y\)。
- 返回:
arma::mat 回归系数估计值 \(\beta\)。
-
arma::vec fitVarBase(const size_t var)
-
double bandwidthSizeCriterionVarCVBase(const std::unique_ptr<BandwidthWeight> &bandwidthWeight)
为指定带宽值和某个变量计算CV指标值函数的非并行实现。
- 参数:
bandwidthWeight -- 带宽值。
- 返回:
double CV指标值。
-
double bandwidthSizeCriterionVarAICBase(const std::unique_ptr<BandwidthWeight> &bandwidthWeight)
为指定带宽值和某个变量计算AIC指标值函数的非并行实现。
- 参数:
bandwidthWeight -- 带宽值。
- 返回:
double AIC指标值。
-
arma::vec fitVarCoreSerial(const arma::vec &x, const arma::vec &y, const SpatialWeight &sw, arma::mat &S)
拟合单个变量的非并行实现。
- 参数:
x -- 自变量矩阵 \(X\)。
y -- 因变量 \(y\)。
var -- 当前变量的索引值。
S -- 帽子矩阵 \(S\)
- 返回:
arma::vec 该变量对应的回归系数估计值。
-
arma::vec fitVarCoreCVSerial(const arma::vec &x, const arma::vec &y, const SpatialWeight &sw)
-
arma::vec fitVarCoreSHatSerial(const arma::vec &x, const arma::vec &y, const SpatialWeight &sw, arma::vec &shat)
-
enum BandwidthInitilizeType