Class GTDR
Defined in File GTDR.h
Inheritance Relationships
Base Types
public gwm::SpatialAlgorithm(类 SpatialAlgorithm)public gwm::IRegressionAnalysis(结构体 IRegressionAnalysis)public gwm::IVarialbeSelectable(结构体 IVarialbeSelectable)public gwm::IParallelizable(结构体 IParallelizable)public gwm::IParallelOpenmpEnabled(结构体 IParallelOpenmpEnabled)
Class Documentation
-
class GTDR : public gwm::SpatialAlgorithm, public gwm::IRegressionAnalysis, public gwm::IVarialbeSelectable, public gwm::IParallelizable, public gwm::IParallelOpenmpEnabled
地理加权密度回归模型
Public Types
-
typedef arma::mat (GTDR::* PredictCalculator)(const arma::mat&, const arma::mat&, const arma::vec&)
用于预测的函数
-
typedef arma::mat (GTDR::* FitCalculator)(const arma::mat&, const arma::vec&, arma::mat&, arma::vec&, arma::vec&, arma::mat&)
用于拟合的函数
-
typedef double (GTDR::* BandwidthCriterionCalculator)(const std::vector<std::reference_wrapper<BandwidthWeight>>&)
带宽优选指标值计算函数
Public Functions
-
inline GTDR(const arma::mat &x, const arma::vec &y, const arma::mat &coords, const std::vector<SpatialWeight> &spatialWeights, bool hasHatMatrix = true, bool hasIntercept = true)
构造一个新的 GTDR 对象。
- 参数:
x -- 自变量
y -- 因变量
coords -- 样本坐标
spatialWeights -- 空间权重配置
hasHatMatrix -- 是否计算帽子矩阵
hasIntercept -- 是否包含截距
-
inline const arma::mat &betas() const
获取回归系数估计值。
- 返回:
arma::mat 回归系数估计值
-
inline bool hasHatMatrix() const
获取是否有帽子矩阵。
- 返回:
true 是
- 返回:
false 否
-
inline void setHasHatMatrix(bool flag)
设置是否有帽子矩阵。
- 参数:
flag -- 是否有帽子矩阵。
-
inline const std::vector<SpatialWeight> &spatialWeights() const
获取空间权重配置。
- 返回:
const std::vector<SpatialWeight>& 空间权重配置
-
inline void setSpatialWeights(const std::vector<SpatialWeight> &spatialWeights)
设置空间权重配置。
- 参数:
spatialWeights -- 空间权重配置
-
inline bool enableBandwidthOptimize()
获取是否进行带宽优选。
- 返回:
true 是
- 返回:
false 否
-
inline void setEnableBandwidthOptimize(bool flag)
设置是否进行带宽优选。
- 参数:
flag -- 是否进行带宽优选
-
inline double bandwidthOptimizeEps() const
获取带宽优选阈值。
- 返回:
double 带宽优选阈值
-
inline void setBandwidthOptimizeEps(double value)
设置带宽优选阈值。
- 参数:
value -- 带宽优选阈值
-
inline std::size_t bandwidthOptimizeMaxIter() const
获取带宽优选最大迭代次数。
- 返回:
std::size_t 带宽优选最大迭代次数
-
inline void setBandwidthOptimizeMaxIter(std::size_t value)
获取带宽优选最大迭代次数。
- 参数:
value -- 带宽优选最大迭代次数
-
inline double bandwidthOptimizeStep() const
获取带宽优选步长。
- 返回:
double 带宽优选步长
-
inline void setBandwidthOptimizeStep(double value)
设置带宽优选步长。
- 参数:
value -- 带宽优选步长
-
inline BandwidthCriterionType bandwidthCriterionType() const
获取带宽优选指标类型。
- 返回:
BandwidthCriterionType 带宽优选指标类型
-
void setBandwidthCriterionType(const BandwidthCriterionType &type)
设置带宽优选指标类型。
- 参数:
type -- 带宽优选指标类型
-
inline bool enableIndpenVarSelect() const
获取是否优选变量。
- 返回:
true 是
- 返回:
false 否
-
inline void setEnableIndepVarSelect(bool flag)
设置是否优选变量。
- 参数:
flag -- 是否优选变量
-
inline double indepVarSelectThreshold() const
获取变量优选阈值
- 返回:
double 变量优选阈值
-
inline void setIndepVarSelectThreshold(double threshold)
设置变量优选阈值
- 参数:
threshold -- 变量优选阈值
-
inline const VariablesCriterionList &indepVarCriterionList() const
获取变量优选过程中每种变量组合对应的指标值列表。
- 返回:
VariablesCriterionList 变量优选过程中每种变量组合对应的指标值列表
-
inline const std::vector<std::size_t> &selectedIndepVars() const
获取选中的变量组合
- 返回:
const std::vector<std::size_t>& 选中的变量组合
-
inline arma::mat betasSE()
获取回归系数估计值标准误差。
- 返回:
arma::mat 回归系数估计值标准误差。
-
inline arma::vec sHat()
获取一个包含 \(S\) 和 \(S'S\) 矩阵迹的向量。
- 返回:
arma::vec 一个包含 \(S\) 和 \(S'S\) 矩阵迹的向量
-
inline arma::vec qDiag()
获取矩阵 \(Q\) 的对角线元素。
- 返回:
arma::vec 矩阵 \(Q\) 的对角线元素
-
inline arma::mat s()
获取帽子矩阵 \(S\)。
- 返回:
arma::vec 帽子矩阵 \(S\)
-
virtual bool isValid() override
检查算法配置是否合法。
- 返回:
true 如果算法配置是合法的。
- 返回:
false 如果算法配置不合法。
-
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 Status getCriterion(const std::vector<std::size_t> &variables, double &criterion) override
根据指定的变量计算变量优选的指标值。
- 参数:
variables -- 指定的变量。
criterion -- [出参] 带宽优选的指标值。
Status -- 算法运行状态。
-
inline virtual std::vector<std::size_t> selectedVariables() override
获取优选的变量。
- 返回:
std::vector<std::size_t> 优选的变量。
-
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 double bandwidthCriterion(const std::vector<std::reference_wrapper<BandwidthWeight>> &bandwidths)
获取给定带宽值对应的指标值。
- 参数:
bandwidths -- 给定带宽值
- 返回:
double 指标值
Public Static Functions
-
static RegressionDiagnostic CalcDiagnostic(const arma::mat &x, const arma::vec &y, const arma::mat &betas, const arma::vec &shat)
计算诊断信息。
- 参数:
x -- 自变量
y -- 因变量
betas -- 回归系数估计值
shat -- 一个包含 \(S\) 和 \(S'S\) 矩阵迹的向量
- 返回:
RegressionDiagnostic 诊断信息
-
static inline arma::vec Fitted(const arma::mat &x, const arma::mat &betas)
获取因变量估计值。
- 参数:
x -- 自变量
betas -- 回归系数估计值
- 返回:
arma::vec 因变量估计值
-
static inline double RSS(const arma::mat &x, const arma::mat &y, const arma::mat &betas)
获取残差平方和。
- 参数:
x -- 自变量
y -- 因变量
betas -- 回归系数估计值
- 返回:
double 残差平方和
-
static inline double AICc(const arma::mat &x, const arma::mat &y, const arma::mat &betas, const arma::vec &shat)
获取 AICc 值。
- 参数:
x -- 自变量
y -- 因变量
betas -- 回归系数估计值
shat -- 一个包含 \(S\) 和 \(S'S\) 矩阵迹的向量
- 返回:
double
Protected Functions
-
arma::mat predictSerial(const arma::mat &locations, const arma::mat &x, const arma::vec &y)
预测函数的非并行实现。
- 参数:
locations -- 要预测的位置
x -- 自变量
y -- 因变量
- 返回:
arma::mat 回归系数估计值
-
arma::mat fitSerial(const arma::mat &x, const arma::vec &y, arma::mat &betasSE, arma::vec &shat, arma::vec &qdiag, arma::mat &S)
拟合函数的非并行实现。
- 参数:
x -- 自变量
y -- 因变量
betasSE -- [出参] 回归系数估计值标准误差。
shat -- [出参] 一个包含 \(S\) 和 \(S'S\) 矩阵迹的向量
qdiag -- [出参] 矩阵 \(Q\) 的对角线元素
S -- [出参] 帽子矩阵 \(S\)
- 返回:
arma::mat 回归系数估计值
-
double bandwidthCriterionAICSerial(const std::vector<std::reference_wrapper<BandwidthWeight>> &bandwidths)
获取给定带宽值对应的AIC值的非并行实现。
- 参数:
bandwidths -- 给定带宽值
- 返回:
double 指标值
-
double bandwidthCriterionCVSerial(const std::vector<std::reference_wrapper<BandwidthWeight>> &bandwidths)
获取给定带宽值对应的CV值的非并行实现。
- 参数:
bandwidths -- 给定带宽值
- 返回:
double 指标值
-
double indepVarCriterionSerial(const std::vector<std::size_t> &indepVars)
获取给定变量组合对应的AIC值的非并行实现。
- 参数:
bandwidths -- 给定变量组合
- 返回:
double 指标值
-
typedef arma::mat (GTDR::* PredictCalculator)(const arma::mat&, const arma::mat&, const arma::vec&)