类 GTWR
定义于 File GTWR.h
Nested Relationships
Nested Types
继承关系
基类
public gwm::GWRBase(类 GWRBase)public gwm::IBandwidthSelectable(结构体 IBandwidthSelectable)public gwm::IParallelizable(结构体 IParallelizable)public gwm::IParallelOpenmpEnabled(结构体 IParallelOpenmpEnabled)
类文档
-
class GTWR : public gwm::GWRBase, public gwm::IBandwidthSelectable, public gwm::IParallelizable, public gwm::IParallelOpenmpEnabled
时空地理加权回归算法的实现。 该算法可以自动选带宽。
公有类型
-
typedef arma::mat (GTWR::* PredictCalculator)(const arma::mat&, const arma::mat&, const arma::vec&)
预测函数声明。
-
typedef arma::mat (GTWR::* FitCalculator)(const arma::mat&, const arma::vec&, arma::mat&, arma::vec&, arma::vec&, arma::mat&)
拟合函数声明。
-
typedef double (GTWR::* BandwidthSelectionCriterionCalculator)(const std::unique_ptr<BandwidthWeight>&)
带宽优选指标计算函数声明。
公有方法
-
inline const double getLambda()
-
inline const double getAngle()
-
inline GTWR(const arma::mat &x, const arma::vec &y, const arma::mat &coords, const SpatialWeight &spatialWeight, bool hasHatMatrix = true, bool hasIntercept = true)
构造 GTWR 对象。
- 参数:
x -- 自变量矩阵。
y -- 因变量。
coords -- 坐标矩阵。
spatialWeight -- 空间权重配置。
hasHatMatrix -- 是否计算帽子矩阵。
hasIntercept -- 是否有截距。
-
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 BandwidthCriterionList bandwidthSelectionCriterionList() const
获取带宽优选过程的指标值列表。
- 返回:
BandwidthCriterionList 带宽优选过程的指标值列表。
-
inline bool hasHatMatrix() const
获取是否计算帽子矩阵。
- 返回:
true 如果计算帽子矩阵。
- 返回:
false 如果不计算帽子矩阵。
-
inline void setHasHatMatrix(const bool has)
设置是否计算帽子矩阵。
- 参数:
has -- true 如果计算帽子矩阵,否则 false。
-
inline void setCoords(const arma::mat &coords, const arma::vec ×)
设置空间坐标和时间向量。
- 参数:
coords -- 空间坐标矩阵.
times -- 时间戳向量.
-
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\)。
-
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 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
设置当前算法的并行类型。
- 参数:
type -- 当前算法的并行类型。
-
inline virtual void setOmpThreadNum(const int threadNum) override
设置并行线程数。
- 参数:
threadNum -- 并行线程数。
-
inline void setIsAutoselectLambda(bool isAutoSelect)
获取是否自动优选lambda。
- 返回:
true 如果自动优选lambda。
- 返回:
false 如果不自动优选lambda。
-
inline void setIsAutoselectLambdaBw(bool isAutoSelect)
公有静态方法
-
static inline std::string infoLambdaCriterion()
获取当前 lambda 值和对应指标值的元信息。
- 返回:
std::string 信息字符串
-
static inline std::string infoLambdaCriterion(const double &lambda, const double &criterion)
获取当前 lambda 值和对应指标值的信息。
- 参数:
lambda -- Lambda 值
criterion -- 指标值
- 返回:
std::string 信息字符串
公有静态属性
-
static std::unordered_map<BandwidthSelectionCriterionType, std::string> BandwidthSelectionCriterionTypeNameMapper
保护方法
-
inline bool isStoreS()
是否保存帽子矩阵 \(S\).
- 返回:
true 如果保存帽子矩阵。
- 返回:
false 如果不保存帽子矩阵。
-
void createPredictionDistanceParameter(const arma::mat &locations)
生成用于预测的距离参数。
- 参数:
locations -- 用于预测的距离参数。
-
void createDistanceParameter()
生成距离参数。
-
double lambdaAutoSelection(const BandwidthWeight &bandwidthWeight)
lambda和带宽自动选择。函数还没写好。
lambda自动选择。
- 参数:
bandwidthWeight -- 传入带宽值,来获取权重,后续更方便改成多元优化.
- 返回:
double 返回优选以后的lambda值.
-
Status r_squareByLambda(const BandwidthWeight &bandwidthWeight, double lambda, double &rsquare)
lambda获得R方,作为优选的函数。
- 参数:
bandwidthWeight -- 输入带宽权重,
lambda -- 输入要获取R方的lambda值。
rsquare -- 根据输入的lambda值和带宽获取的R方值.
- 返回:
Status 算法运行状态。
-
arma::vec lambdaBwAutoSelection(BandwidthWeight &bandwidth, size_t max_iter, double min_step)
优化的主函数
- 参数:
bandwidth -- BandwidthWeight类型,带宽
max_iter -- 最大迭代次数,设置为1000
min_step -- 优化中的步长,设置为0.01(变化阈值为步长/1000)
- 返回:
优化结果,一个向量:(lambda, bw).
-
double criterionByLambdaBw(const BandwidthWeight &bandwidth, double lambda, BandwidthSelectionCriterionType criterion)
利用带宽和lambda计算指标的函数
- 参数:
bandwidthWeight -- 输入带宽权重,
lambda -- 获取指标的lambda值
criterion -- BandwidthSelectionCriterionType类型,确定求的指标
- 返回:
对应类型的指标值
-
inline CRSSTDistance &stDistance() const
保护属性
-
bool mHasHatMatrix = true
是否具有帽子矩阵。
-
bool mIsAutoselectBandwidth = false
是否需要自动优选带宽。
-
bool mIsAutoselectLambda = false
是否需要自动优选lambda。
-
bool mIsAutoselectLambdaBw = false
-
BandwidthSelectionCriterionType mBandwidthSelectionCriterion = BandwidthSelectionCriterionType::AIC
默认的带宽优选方式。
-
BandwidthSelectionCriterionCalculator mBandwidthSelectionCriterionFunction = >WR::bandwidthSizeCriterionCVSerial
默认的带宽优选函数。
-
BandwidthCriterionList mBandwidthSelectionCriterionList
默认的带宽优选参数列表。
-
double mBandwidthLastCriterion = DBL_MAX
上一次带宽优选的有效指标值。
-
PredictCalculator mPredictFunction = >WR::predictSerial
默认的Predict函数。
-
FitCalculator mFitFunction = >WR::fitSerial
默认的Fit函数。
-
ParallelType mParallelType = ParallelType::SerialOnly
并行方法类型。
-
int mOmpThreadNum = 8
并行计算创建的线程数。
-
arma::mat mBetasSE
回归系数估计值的标准差。
-
arma::vec mSHat
由 \(tr(S)\) 和 \(tr(SS^T)\) 组成的向量。
-
arma::vec mQDiag
矩阵 \(Q\) 的对角线元素。
-
arma::mat mS
帽子矩阵 \(S\)。
-
arma::vec vTimes
输入时间的向量。
Protected Static Functions
-
static double criterion_function(const gsl_vector *v, void *params)
构建gsl的gsl_multimin_function以及优化指标
- 参数:
v -- gsl的优化向量(lambda, bw)
params -- 传入的参数,从void*转换成Parameter*
- 返回:
CV或AIC的指标值
-
struct Parameter
-
typedef arma::mat (GTWR::* PredictCalculator)(const arma::mat&, const arma::mat&, const arma::vec&)