为什么我的预测值不变?
Why are my predicted values constant?
我的数据
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 个结果 return 44.0833 #我只是不明白!!!
我不明白我是如何 return 在有这么多零的情况下跨字段输入单个值的。我希望看到单个区域的值下降。
想法?
试试这个:
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
克里格算法根据 "nearby" 数据点的值(根据与预测点的距离进行折扣)计算预测点的估计值。 cov.pars=...
的 "range" 元素(第二个元素)控制查找 "nearby points" 的距离。您将其设置为 3.33,而最近的点距离大约 50 个单位。所以基本上算法没有使用任何附近的点,然后所有点的估计只是所有数据值的平均值。
我的数据
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 个结果 return 44.0833 #我只是不明白!!!
我不明白我是如何 return 在有这么多零的情况下跨字段输入单个值的。我希望看到单个区域的值下降。
想法?
试试这个:
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
克里格算法根据 "nearby" 数据点的值(根据与预测点的距离进行折扣)计算预测点的估计值。 cov.pars=...
的 "range" 元素(第二个元素)控制查找 "nearby points" 的距离。您将其设置为 3.33,而最近的点距离大约 50 个单位。所以基本上算法没有使用任何附近的点,然后所有点的估计只是所有数据值的平均值。