R 为什么我的预测值是常数? 我的数据 mydata\u x

R 为什么我的预测值是常数? 我的数据 mydata\u x,r,geospatial,predict,kriging,geor,R,Geospatial,Predict,Kriging,Geor,试试这个: prediction <- ksline(b,cov.pars = c(10,200),locations=k_df) cbind(k_matrix,prediction$predict)[12:20,] # kx ky # [1,] 350 1050 93.6977130 # [2,] 350 1150 292.2674563 # [3,] 350 1250 329.6293038 # [4,] 450 650 0.5

试试这个:

prediction <- ksline(b,cov.pars = c(10,200),locations=k_df)
cbind(k_matrix,prediction$predict)[12:20,]
#        kx   ky            
#  [1,] 350 1050  93.6977130
#  [2,] 350 1150 292.2674563
#  [3,] 350 1250 329.6293038
#  [4,] 450  650   0.5934677
#  [5,] 450  750  -0.1541056
#  [6,] 450  850  -2.9329553
#  [7,] 450  950   1.8124209
#  [8,] 450 1050  93.6977130
#  [9,] 450 1150 292.2674563

prediction我在这里只列出了一个方法,与我最初的陈述相反。使用的第二种方法是函数krige.conv。使用这种方法得到的预测值也是常量。我发现要求代码在网格中预测更多(~500)个值会产生更好的结果。欢迎使用+1用于包含示例数据和代码,这比大多数人做的更多。。。不幸的是,您的代码没有按原样运行:第二行应该有
times=3
。这看起来可能没什么大不了的,但是如果你希望人们帮助你,那么强迫他们克服这样的简单错误是不合理的。times='代码是为了与序列的“长度”一致的数字而运行的。例如,我本应该删除这种可变性,使其更易于阅读。下次我会记住的。你帮了我大忙。谢谢。我知道我在内心深处误解了其中一个变量。现在,ksline和krige.conv代码都工作得很好,并提供了类似的结果。非常感谢你的帮助。
require(geoR)

#create x,y coordinates for locations to predict

kx <- rep(seq(250,700,by=100),times=1,each=length(seq(650,1250,by=100)))
ky <- rep(seq(650,1250,by=100),times=length(seq(250,700,by=100)),each=1)  
k_df <- data.frame(x=kx,y=ky) #coordinates as data.frame
k_matrix <- as.matrix(cbind(kx,ky)) #coordinates as.matrix

#convert sample data (top of post) as.geodata

b <- as.geodata(mydata)

#predict values

prediction <- ksline(b,cov.model = "gaussian",cov.pars = c(10,3.33),locations=k_df)
prediction$predict
prediction <- ksline(b,cov.pars = c(10,200),locations=k_df)
cbind(k_matrix,prediction$predict)[12:20,]
#        kx   ky            
#  [1,] 350 1050  93.6977130
#  [2,] 350 1150 292.2674563
#  [3,] 350 1250 329.6293038
#  [4,] 450  650   0.5934677
#  [5,] 450  750  -0.1541056
#  [6,] 450  850  -2.9329553
#  [7,] 450  950   1.8124209
#  [8,] 450 1050  93.6977130
#  [9,] 450 1150 292.2674563