GWR模型报错汇总(arcgis与GWR4)

总结:建GWR模型时的错误大体分为两种:1.知道为什么但是不知道怎么解决  2.不知道为什么但是知道怎么解决

           换软件是通用的解决方案。目前我还没遇到过arcgis和GWR4全跑不出来的情况。

           如果一旦遇到了,我们还有R语言:https://blog.csdn.net/tjhxrrr/article/details/104874352

一. GWR4

错误1.Error: GWR computation was failed: optional tests and/or model

这个错误有可能是很多原因造成的,可以分别进行如下检查:

1. 如果使用的是经纬度坐标,模型里选择的是否选择的是球面坐标系。反之亦然。

2. 是否有两个指标的值在该kenel type下会完全相同。如果存在这种情况,更换kernel type。kernal type选成binary时很有可能出现这个问题。

3.我的一个猜测。这个错误可能是由于存在局部多重共线性导致的。某次我出现这个错误的时候,带宽的critetion值是NaN。使用AICc或CV方法确定带宽时,局部多重共线性会导致计算不出带宽。可以尝试一下手动限制带宽范围。

错误2.外部组件异常

这个错误其实是这个软件的一个bug,数据量大的时候软件就会崩溃。

解决方法:换用GWR4.09版本(如果你本身用的就是这个版本,但是仍然报了这个错,那就重装一下这个链接里的试试。我重装了一次之后就不崩了。)

https://download.csdn.net/download/qq_36426059/10405269

错误3. (本条错误算是逻辑错误)

当计算出来的系数出现了这种明显不正常的值的时候,多半是两个指标之间有问题(例如我这两个指标之间存在多重共线性)

解决方法:可以先通过逐步回归的方法筛选一下指标(此处隆重感谢我的博士学姐),然后再跑GWR。需要注意的是,逐步线性回归时因为多重共线性被排除的指标与最初添加指标的顺序有关(直白的说,排除plantRatio还是排除age与这两个指标谁在前谁在后有关,因为逐步回归是按顺序一个一个添加嘛)。

二. ArcGIS(ArcMap)

错误1. 040038

arcgis给出的官方解释是存在多重共线性,但是其实在跑ols模型的时候我的指标的vif也都是小于7的,可能是存在局部多重共线性吧。

解决方法:方法(1)使用GWR4进行计算,使用golden selection search的方法计算带宽 

                  方法(2)一个指标一个指标的添加,看看究竟是哪个指标和其他指标之间出现了多重共线性。

错误2. 040039

官网解释是缺少数据,但我不觉得是这个问题。

解决方法:方法(1)使用GWR4

                  方法(2)放弃出现了这个问题的指标

 

 

 

  • 14
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
GWR(Growing Neural Gas)模型是一种基于竞争学习的神经网络模型,用于数据聚类和可视化。以下是一个简单的MATLAB实现: ```matlab function [w, c] = gwr(data, params) % GWR algorithm implementation % Inputs: % data: input data (n x d matrix) % params: algorithm parameters (struct) % Outputs: % w: weight vectors (m x d matrix) % c: cluster labels (m x 1 vector) % Initialize weight vectors randomly [m, d] = size(data); w = rand(m, d); % Initialize age matrix age = zeros(m, m); % Initialize distance matrix dist = pdist2(w, w); % Algorithm parameters params_initial = 0.1; % initial learning rate params_decay = 0.95; % learning rate decay params_neighbor = 0.5; % neighbor learning rate params_threshold = 0.1; % node threshold params_max_nodes = 100; % maximum number of nodes % Main loop for t = 1:params_max_nodes % Select random data point i = randi(m); x = data(i,:); % Compute distances and find winning node d = sqrt(sum((w - x).^2, 2)); [~, j] = min(d); % Update winner's weight vector w(j,:) = w(j,:) + params_initial*(x - w(j,:)); % Update age matrix age(j,:) = age(j,:) + 1; age(:,j) = age(:,j) + 1; % Remove nodes with age greater than threshold [r,c] = find(age > params_threshold); for k = 1:length(r) age(r(k),c(k)) = 0; age(c(k),r(k)) = 0; w(r(k),:) = []; age(r(k),:) = []; age(:,r(k)) = []; end % Add new node if necessary if size(w,1) < params_max_nodes && mod(t,10) == 0 [~,j] = max(d); w(end+1,:) = (x + w(j,:))/2; age(end+1,:) = 0; age(:,end+1) = 0; m = m + 1; end % Update distances dist = pdist2(w, w); % Update learning rate params_initial = params_initial*params_decay; % Update neighbor learning rate params_neighbor = params_neighbor*params_decay; % Update weight vectors of neighbors neighbors = find(dist(j,:) < params_neighbor); for k = 1:length(neighbors) w(neighbors(k),:) = w(neighbors(k),:) + params_neighbor*(x - w(neighbors(k),:)); end end % Assign data points to clusters c = dsearchn(w, data); end ``` 参数结构体`params`应该包含上述算法参数的值。`data`是输入数据,每行是一个数据点,`w`是输出的权重向量矩阵,每行对应一个节点,`c`是每个数据点的聚类标签。 请注意,这只是一个简单的实现,可能需要进行优化和调整以适应不同的数据集。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值