类 GWDR
定义于 文件 GWDR.h
继承关系
基类
public gwm::SpatialAlgorithm
(类 SpatialAlgorithm)public gwm::IRegressionAnalysis
(结构体 IRegressionAnalysis)public gwm::IVarialbeSelectable
(结构体 IVarialbeSelectable)public gwm::IParallelizable
(结构体 IParallelizable)public gwm::IParallelOpenmpEnabled
(结构体 IParallelOpenmpEnabled)
类文档
-
class GWDR : public gwm::SpatialAlgorithm, public gwm::IRegressionAnalysis, public gwm::IVarialbeSelectable, public gwm::IParallelizable, public gwm::IParallelOpenmpEnabled
地理加权密度回归模型
公有类型
-
typedef arma::mat (GWDR::* PredictCalculator)(const arma::mat&, const arma::mat&, const arma::vec&)
用于预测的函数
-
typedef arma::mat (GWDR::* FitCalculator)(const arma::mat&, const arma::vec&, arma::mat&, arma::vec&, arma::vec&, arma::mat&)
用于拟合的函数
-
typedef double (GWDR::* BandwidthCriterionCalculator)(const std::vector<BandwidthWeight*>&)
带宽优选指标值计算函数
公有方法
-
inline GWDR(const arma::mat &x, const arma::vec &y, const arma::mat &coords, const std::vector<SpatialWeight> &spatialWeights, bool hasHatMatrix = true, bool hasIntercept = true)
构造一个新的 GWDR 对象。
- 参数
x – 自变量
y – 因变量
coords – 样本坐标
spatialWeights – 空间权重配置
hasHatMatrix – 是否计算帽子矩阵
hasIntercept – 是否包含截距
-
inline 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 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 arma::vec dependentVariable() const override
获取因变量。
- 返回
arma::vec 因变量。
-
inline virtual void setDependentVariable(const arma::vec &y) override
设置因变量。
- 参数
y – 因变量。
-
inline virtual 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 double getCriterion(const std::vector<std::size_t> &variables) override
根据指定的变量计算变量优选的指标值。
- 参数
weight – 指定的变量。
- 返回
double 变量优选的指标值。
-
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<BandwidthWeight*> &bandwidths)
获取给定带宽值对应的指标值。
- 参数
bandwidths – 给定带宽值
- 返回
double 指标值
公有静态方法
-
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
保护方法
-
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<BandwidthWeight*> &bandwidths)
获取给定带宽值对应的AIC值的非并行实现。
- 参数
bandwidths – 给定带宽值
- 返回
double 指标值
-
double bandwidthCriterionCVSerial(const std::vector<BandwidthWeight*> &bandwidths)
获取给定带宽值对应的CV值的非并行实现。
- 参数
bandwidths – 给定带宽值
- 返回
double 指标值
-
double indepVarCriterionSerial(const std::vector<std::size_t> &indepVars)
获取给定变量组合对应的AIC值的非并行实现。
- 参数
bandwidths – 给定变量组合
- 返回
double 指标值
-
typedef arma::mat (GWDR::* PredictCalculator)(const arma::mat&, const arma::mat&, const arma::vec&)