2

我的数据

mydata_x <- rep(seq(200,600,by=200),times=1,each=4)
mydata_y <- rep(seq(600,1200,by=200),times=4,each=1)
mydata_z <- c(0,0,0,0,0,0,0,529,0,0,0,0)
mydata <- data.frame(x=mydata_x,y=mydata_y,z=mydata_z)

我从一个虚拟字段中取样,现在想要预测相邻值。它是通过下面描述的两种方法完成的……都为每个点预测一个常数值。我不明白为什么。

请记住,我是新的 R 用户并且喜欢它。我一直在尝试按照我在网上找到的示例来执行我​​的任务。使用示例数据集,我可以毫无问题地实现他们的结果。但是,我无法将其应用于我自己的数据。请参阅此处的示例:http: //www.stat.ucla.edu/~nchristo/statistics_c173_c273/c173c273_lec11_w11.pdf

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

所有 35 个结果都返回 44.0833 #我就是不明白!!!

当有这么多零时,我不明白如何在字段中返回单个值。我希望看到单个区域的值递减。

想法?

4

1 回答 1

1

尝试这个:

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

克里金算法根据“附近”数据点的值计算预测点的估计值(从预测点的距离扣除)。“范围”元素(第二个元素)cov.pars=...控制寻找“附近点”的距离。您将其设置为 3.33,而最近的点距离约为 50 个单位。所以基本上该算法没有使用任何附近的点,所有点的估计就是所有数据值的平均值。

于 2015-09-10T20:28:08.750 回答