【问题标题】:Logistic function for regression kriging回归克里金的逻辑函数
【发布时间】:2015-06-07 08:37:41
【问题描述】:

我想对二进制存在-不存在和宿主网格数据执行回归克里金法 (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)

【问题讨论】:

  • 第一个脚本有几个问题:首先,您忘记了library(sp),然后您的google驱动器上的点数据格式不方便,然后presabs$host.asc.txt &lt;- log(host.ov$host.asc.txt)不对应glm 输出在下面,然后您似乎在 glm 对象上调用 summary.lm 而不是适当的 summary,然后缺少 glm.presabs。看起来您复制和粘贴的命令没有检查它们的一致性和可重复性。

标签: r glm logistic-regression kriging gstat


【解决方案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

因此,您不认识通用克里金法预测中的网格图并不奇怪:两者几乎(线性)独立。

【讨论】:

    猜你喜欢
    • 2013-09-05
    • 2014-09-16
    • 2018-01-20
    • 2020-03-12
    • 2015-01-07
    • 2021-02-16
    • 2018-03-01
    • 2020-01-31
    • 2019-02-09
    相关资源
    最近更新 更多