"Tilde"应用于 Matlab 的"R"模型公式?



我现在面临一个困扰我的问题。。。我试图用Matlab和"BMElib2.0"工具箱从著名的"Meuse"数据("R"中的"sp"包(中获得残差变差函数。问题是"lscov"函数返回了错误的东西(我认为是这样(,并且我的残差被Matlab高估了(见附件https://i.stack.imgur.com/8hXc8.png)。它在y轴上超过0.5!但是,我应该得到这个(见附件https://i.stack.imgur.com/v0bU8.png)。这是2007年Minasny&McBratney的文章"使用带Matérn协方差函数的EBLUP对土壤性质进行空间预测",正如你所看到的,残差不会超过0.3。我试着从"R"中得到结果,它和Minasny&McBratney(见附件https://i.stack.imgur.com/0a4YZ.png)。蓝色圆圈(残差数据(在y轴上的0.3处达到峰值。我发现"R"使用了一个名为"模型公式"的特殊命令,该命令允许为另一个变量指定回归函数。它是下面代码中的"波浪号"。我需要在log(zinc(和sqrt(dist(之间建立一个依赖关系。

我的问题很简单:是否有一个用于Matlab的"模型公式"命令,以便获得与"R"和Minasny&McBratney的文章或者我的"lscov"函数不适合这个函数?

提前感谢您提供的任何帮助!

我的"R"代码(我感兴趣的"波浪号"在"v1"命令中可见(:

library(lattice)
library(gstat)
library(sp)
load(system.file("data", "meuse.rda", package = "sp"))
v1 = variogram(log(zinc) ~ sqrt(dist), locations = ~x + y, data = meuse, width=50, cutoff=2000)
v2 = variogram(log(zinc) ~ 1, locations = ~x + y, data = meuse, width=50, cutoff=2000)
m1 = fit.variogram(v1, vgm(psill = 0.1089, "Mat", range = 40, nugget = 0.084, kappa = 8)) 
m2 = fit.variogram(v2, vgm(psill = 4.9335, "Exp", range = 1412, nugget = 0.086, kappa = 1)) 
plot(gamma~dist, v2, ylim = c(0, 1.05*max(v2$gamma)),col='red', ylab = 
'semivariance', xlab = 'distance') 
lines(variogramLine(m2, 2000), col='red',ylab ='',xlab='') 
points(gamma~dist, v1, col='blue') 
lines(variogramLine(m1, 2000), col='blue')

残差的Matlab代码("BMElib2.0"用于获取变差函数(:

% "coord" (coordinates of the 155 points) and "z" (log of zinc concentration for these 155 points) 
X_Zn = [ones(size(coord(:,2))) coord(:,2) coord(:,1)];
b_derive_Zn = lscov(X_Zn,z);
Zn_derive = X_Zn*b_derive_Zn;
Zn_vec = z - Zn_derive;
figure
plZn_vec = (0:40:2000);
[dZn_vec,vZn_vec,oZn_vec] = vario(coord,Zn_vec,plZn_vec,'kron');
plot(dZn_vec,vZn_vec,'r*');
xlabel('Distance (m)','FontSize',11); ylabel('Variogram','FontSize',11);

所以,我自己回答:"lscov"非常适合,但我的Matlab代码是错误的。我试过了:

X_Zn = [ones(size(coord(:,2))) coord(:,2) coord(:,1)];

但这是不对的。坐标在这里并不重要,重要的是"sqrt(ndist("!因此,正确的代码是:

X_Zn = [ones(size(coord(:,2))) sqrt(ndist)];

运行脚本会得到正确的残差变差函数:-(。。。希望它能帮助其他用户!

最新更新