类 GWRBasic
定义于 文件 GWRBasic.h
继承关系
基类
public gwm::GWRBase(类 GWRBase)public gwm::IBandwidthSelectable(结构体 IBandwidthSelectable)public gwm::IVarialbeSelectable(结构体 IVarialbeSelectable)public gwm::IParallelizable(结构体 IParallelizable)public gwm::IParallelOpenmpEnabled(结构体 IParallelOpenmpEnabled)public gwm::IParallelCudaEnabled(结构体 IParallelCudaEnabled)public gwm::IParallelMpiEnabled(Struct IParallelMpiEnabled)
派生类
public gwm::GWRRobust(类 GWRRobust)
类文档
-
class GWRBasic : public gwm::GWRBase, public gwm::IBandwidthSelectable, public gwm::IVarialbeSelectable, public gwm::IParallelizable, public gwm::IParallelOpenmpEnabled, public gwm::IParallelCudaEnabled, public gwm::IParallelMpiEnabled
基础地理加权回归算法的实现。 该算法可以自动选带宽和变量。 该算法可以通过 OpenMP 加速。
Subclassed by gwm::GWRRobust
公有类型
-
typedef arma::mat (GWRBasic::* PredictCalculator)(const arma::mat&, const arma::mat&, const arma::vec&)
预测函数声明。
-
typedef arma::mat (GWRBasic::* FitCoreCalculator)(const arma::mat&, const arma::vec&, const SpatialWeight&)
拟合函数声明。
-
typedef arma::mat (GWRBasic::* FitCoreSHatCalculator)(const arma::mat&, const arma::vec&, const SpatialWeight&, arma::vec&)
拟合函数声明。
-
typedef arma::mat (GWRBasic::* FitCoreCVCalculator)(const arma::mat&, const arma::vec&, const SpatialWeight&)
拟合函数声明。
-
typedef double (GWRBasic::* BandwidthSelectionCriterionCalculator)(const std::unique_ptr<BandwidthWeight>&)
带宽优选指标计算函数声明。
公有方法
-
inline GWRBasic()
构造 CGwmGWRBasic 对象。
-
inline GWRBasic(const arma::mat &x, const arma::vec &y, const arma::mat &coords, const SpatialWeight &spatialWeight, bool hasHatMatrix = true, bool hasIntercept = true)
构造 CGwmGWRBasic 对象。
- 参数:
x -- 自变量矩阵。
y -- 因变量。
coords -- 坐标矩阵。
spatialWeight -- 空间权重配置。
hasHatMatrix -- 是否计算帽子矩阵。
hasIntercept -- 是否有截距。
-
inline ~GWRBasic()
析构 CGwmGWRBasic 对象。
-
inline bool isAutoselectBandwidth() const
获取是否自动优选带宽。
- 返回:
true 如果自动优选带宽。
- 返回:
false 如果不自动优选带宽。
-
inline void setIsAutoselectBandwidth(bool isAutoSelect)
设置是否自动优选带宽。
- 参数:
isAutoSelect -- true 如果要自动优选带宽,否则 false。
-
inline BandwidthSelectionCriterionType bandwidthSelectionCriterion() const
获取带宽自动优选指标值类型。
- 返回:
BandwidthSelectionCriterionType 带宽自动优选指标值类型。
-
void setBandwidthSelectionCriterion(const BandwidthSelectionCriterionType &criterion)
设置带宽自动优选指标值类型。
- 参数:
criterion -- 带宽自动优选指标值类型。
-
inline void setGoldenUpperBounds(double value)
设置 Golden selection 算法的上界。
- 参数:
value --
-
inline void setGoldenLowerBounds(double value)
设置 Golden selection 算法的下界。
- 参数:
value --
-
inline bool isAutoselectIndepVars() const
获取是否自动优选变量。
- 返回:
true 如果自动优选变量。
- 返回:
false 如果不自动优选变量。
-
inline void setIsAutoselectIndepVars(bool isAutoSelect)
设置是否自动优选变量。
- 参数:
isAutoSelect -- true 如果要自动优选变量,否则 false。
-
inline double indepVarSelectionThreshold() const
获取变量优选指标类型。
- 返回:
double 变量优选指标类型。
-
inline void setIndepVarSelectionThreshold(double threshold)
设置变量优选指标类型。
- 参数:
threshold -- 变量优选指标类型。 该值的大小取决于样本的数量。 样本数量越多,值越大。
-
inline const VariablesCriterionList &indepVarsSelectionCriterionList() const
获取变量优选过程的指标值列表。
- 返回:
VariablesCriterionList 变量优选过程的指标值列表。
-
inline const BandwidthCriterionList &bandwidthSelectionCriterionList() const
获取带宽优选过程的指标值列表。
- 返回:
BandwidthCriterionList 带宽优选过程的指标值列表。
-
inline bool hasHatMatrix() const
获取是否计算帽子矩阵。
- 返回:
true 如果计算帽子矩阵。
- 返回:
false 如果不计算帽子矩阵。
-
inline void setHasHatMatrix(const bool has)
设置是否计算帽子矩阵。
- 参数:
has -- true 如果计算帽子矩阵,否则 false。
-
inline const arma::mat &betasSE()
获取回归系数估计值的标准差。
- 返回:
arma::mat 回归系数估计值的标准差。
-
inline const arma::vec &sHat()
获取一个由 \(tr(S)\) 和 \(tr(SS^T)\) 组成的向量。
- 返回:
arma::vec 由 \(tr(S)\) 和 \(tr(SS^T)\) 组成的向量。
-
inline const arma::vec &qDiag()
获取矩阵 \(Q\) 的对角线元素。
- 返回:
arma::vec 矩阵 \(Q\) 的对角线元素。
-
inline const arma::mat &s()
获取帽子矩阵 \(S\)。
- 返回:
arma::mat 帽子矩阵 \(S\)。
-
inline const arma::cube &c()
-
inline bool isStoreS()
是否保存帽子矩阵 \(S\).
- 返回:
true 如果保存帽子矩阵。
- 返回:
false 如果不保存帽子矩阵。
-
inline bool isStoreC()
-
inline void setStoreS(bool flag)
-
inline void setStoreC(bool flag)
-
virtual bool isValid() override
检查算法配置是否合法。
- 返回:
true 如果算法配置是合法的。
- 返回:
false 如果算法配置不合法。
-
virtual arma::mat predict(const arma::mat &locations) override
在指定位置处进行回归系数预测。
- 参数:
locations -- 指定位置。
- 返回:
mat 回归系数预测值。
-
virtual arma::mat fit() override
拟合回归系数估计值。
- 返回:
mat 回归系数估计值。
-
inline virtual std::vector<std::size_t> selectedVariables() override
获取优选的变量。
- 返回:
std::vector<std::size_t> 优选的变量。
-
double indepVarsSelectionCriterion(const std::vector<std::size_t> &indepVars)
根据指定的变量计算变量优选的AIC值(串行实现)。
- 参数:
indepVars -- 指定的变量。
- 返回:
double 变量优选的指标值。
-
inline virtual Status getCriterion(const std::unique_ptr<BandwidthWeight> &weight, double &criterion) override
根据指定的带宽计算带宽优选的指标值。
- 参数:
weight -- 指定的带宽。
criterion -- [出参] 带宽优选的指标值。
Status -- 算法运行状态。
-
double bandwidthSizeCriterionCV(const std::unique_ptr<BandwidthWeight> &bandwidthWeight)
根据指定的带宽计算带宽优选的CV值(串行实现)。
- 参数:
bandwidthWeight -- 指定的带宽。
- 返回:
double 带宽优选的指标值。
-
double bandwidthSizeCriterionAIC(const std::unique_ptr<BandwidthWeight> &bandwidthWeight)
根据指定的带宽计算带宽优选的AIC值(串行实现)。
- 参数:
bandwidthWeight -- 指定的带宽。
- 返回:
double 带宽优选的指标值。
-
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<BandwidthSelectionCriterionType, std::string> BandwidthSelectionCriterionTypeNameMapper
保护方法
-
void createPredictionDistanceParameter(const arma::mat &locations)
生成用于预测的距离参数。
- 参数:
locations -- 用于预测的距离参数。
保护属性
-
bool mHasHatMatrix = true
是否具有帽子矩阵。
-
bool mIsAutoselectIndepVars = false
是否自动优选变量。
-
double mIndepVarSelectionThreshold = 3.0
变量优选的阈值。
-
IndepVarsSelectCriterionCalculator mIndepVarsSelectionCriterionFunction = &GWRBasic::indepVarsSelectionCriterion
变量优选的指标计算函数。
-
VariablesCriterionList mIndepVarsSelectionCriterionList
每种变量组合对应的指标值。
-
std::vector<std::size_t> mSelectedIndepVars
优选得到的变量。
-
std::size_t mIndepVarSelectionProgressTotal = 0
自变量所有组合总数。
-
std::size_t mIndepVarSelectionProgressCurrent = 0
当前自变量优选的进度。
-
bool mIsAutoselectBandwidth = false
是否自动优选带宽。
-
BandwidthSelectionCriterionType mBandwidthSelectionCriterion = BandwidthSelectionCriterionType::AIC
带宽优选的指标值类型。
-
BandwidthSelectionCriterionCalculator mBandwidthSelectionCriterionFunction = &GWRBasic::bandwidthSizeCriterionCV
带宽优选的指标计算函数。
-
BandwidthCriterionList mBandwidthSelectionCriterionList
每种带宽组合对应的指标值。
-
double mBandwidthLastCriterion = DBL_MAX
上一次带宽优选的有效指标值。
-
std::optional<double> mGoldenUpperBounds
-
std::optional<double> mGoldenLowerBounds
-
PredictCalculator mPredictFunction = &GWRBasic::predictSerial
预测的具体实现函数。
-
FitCalculator mFitFunction = &GWRBasic::fitBase
拟合的具体实现函数。
-
FitCoreCalculator mFitCoreFunction = &GWRBasic::fitCoreSerial
拟合的具体实现函数。
-
FitCoreSHatCalculator mFitCoreSHatFunction = &GWRBasic::fitCoreSHatSerial
拟合的具体实现函数。
-
FitCoreCVCalculator mFitCoreCVFunction = &GWRBasic::fitCoreCVSerial
拟合的具体实现函数。
-
ParallelType mParallelType = ParallelType::SerialOnly
并行方法类型。
-
int mOmpThreadNum = 8
并行计算创建的线程数。
-
size_t mGroupLength = 64
同时计算的一组的大小。
-
int mGpuId = 0
选择的 GPU 的 ID。
-
int mWorkerId = 0
-
int mWorkerNum = 1
-
arma::uword mWorkRangeSize = 0
-
std::pair<arma::uword, arma::uword> mWorkRange = std::make_pair(arma::uword(0), arma::uword(0))
-
arma::mat mBetasSE
回归系数估计值的标准差。
-
arma::vec mSHat
由 \(tr(S)\) 和 \(tr(SS^T)\) 组成的向量。
-
arma::vec mQDiag
矩阵 \(Q\) 的对角线元素。
-
arma::mat mS
帽子矩阵 \(S\)。
-
arma::cube mC
所有 \(C\) 矩阵。
-
bool mStoreS = false
是否保存 S 矩阵
-
bool mStoreC = false
是否保存 C 矩阵
-
typedef arma::mat (GWRBasic::* PredictCalculator)(const arma::mat&, const arma::mat&, const arma::vec&)