2015-04-02 143 views
2

我想为二进制存在 - 缺失和主机网格数据执行回归克里格法(RK)作为常数预测器。我已经使用逻辑函数来估计二元结果和预测变量之间的关系,但是我认为它没有通过RK假设?预测变量在模型中并不是重要的。有没有其他选择如何处理它?回归克里格的逻辑函数

数据的代码:https://drive.google.com/folderview?id=0B7-8DA0HVZqDYk1BcFFwSkZCcjQ&usp=sharing

presabs <- read.csv("Pres_Abs.csv",header=T, 
          colClasses = c("integer","numeric","numeric", 
              "integer")) 

coordinates(presabs) <- c("Long","Lat") # creates SpatialPointsDataFrame 

host <- read.asciigrid("host.asc.txt") # reads ArcInfo Ascii raster map 

host.ov <- overlay(host, presabs) # create grid-points overlay 
presabs$host.asc.txt <- host.ov$host.asc.txt #copy host values 
presabs$host.asc.txt <- log(host.ov$host.asc.txt) 

glm(formula = Pres ~ host.asc.txt, family = binomial, data = presabs) 
summary(glm.presabs) 

Weighted Residuals: 
    Min  1Q Median  3Q  Max 
-0.3786 -0.3762 -0.3708 -0.3497 3.3137 

Coefficients: 
       Estimate Std. Error t value Pr(>|t|)  
(Intercept) -1.942428 0.320104 -6.068 1.38e-08 *** 
host.asc.txt -0.001453 0.003034 -0.479 0.633  
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 1.007 on 127 degrees of freedom 
Multiple R-squared: 1.317e-05, Adjusted R-squared: -0.007861 
F-statistic: 0.001673 on 1 and 127 DF, p-value: 0.9674 

然后,当涉及到实际的克里格,我已经建立从教程这个代码,但似乎从GLM实际残差不是送入krige功能。 gstat可以改进吗?

library(gstat) 

# Set bin width for the variogram and max distance: 
Bin <- 0.09 
MaxDist <- 1 
BinNo <- MaxDist/Bin 

# Calculate and plot the variogram 
surpts.var <- variogram(Pres~1, presabs, cutoff=MaxDist, width = Bin) 
plot(surpts.var) 

# Insert parameter values for the variogram model 
psill = 0.05921 
distance = 63.7/111 
nugget = 0.06233 # constant 

# Fit and plot variogram model: 
null.vgm <- vgm(psill,"Sph",distance,nugget) # initial parameters 
vgm_Pres_r <- fit.variogram(surpts.var, model=null.vgm, fit.ranges=TRUE, 
          fit.method=1) 
plot(surpts.var,vgm_Pres_r) 

# Run RK using universal kriging: 
presabs_uk <- krige(Pres~host.asc.txt, locations=presabs, 
         newdata=host, model=vgm_Pres_r) 
+0

第一个脚本有几个问题:首先,您忘记了'library(sp)',那么点数据在您的谷歌驱动器中没有方便的格式,然后'presabs $ host.asc.txt < log(host.ov $ host.asc.txt)'不对应于下面的glm输出,那么你似乎在'glm'对象上调用'summary.lm'而不是相应的'summary',然后'glm .presabs'丢失。看起来像复制和粘贴命令,而不检查它们是否一致和可重复。 – 2015-04-27 13:41:25

回答

1

krige提到它是

[using universal kriging] 

这意味着,它符合线性模型,但不是一个广义线性模型。它使用适合原始数据的变差函数,而不是残差。剩余的变差函数会被

surpts.var <- variogram(Pres~host.asc.txt, presabs, cutoff=MaxDist, width = Bin) 

获得,但几乎是相同的,因为你的变量和栅格地图几乎不相关:

> cor(presabs$Pres,presabs$host.asc.txt) 
[1] -0.04281038 

所以,它不是你没有一个惊喜在通用的克里格预测中识别网格图:两者几乎是(线性)独立的。