5

我正在尝试使用glm( family='binomial').

这是模型:

model<-glm(f_ocur~altitud+UTM_X+UTM_Y+j_sin+j_cos+temp_res+pp, 
           offset=(log(1/off)), data=mydata, family='binomial')

mydata有 76820 个观测值。响应变量 (f_ocur) 为 0-1。
该数据是更大数据集的样本,因此设置偏移量的想法是考虑到此处使用的数据代表要分析的真实数据的样本。

由于某种原因,偏移量不起作用。当我运行这个模型时,我得到了一个结果,但是当我运行相同的模型但没有偏移量时,我得到的结果与以前的模型完全相同。我期待一个不同的结果,但没有区别。

难道我做错了什么?偏移量是否应该与线性预测变量一起使用?像这样:

model <- glm(f_ocur~altitud+UTM_X+UTM_Y+j_sin+j_cos+temp_res+pp+offset(log(1/off)), 
             data=mydata, family='binomial')

模型准备好后,我想将其与新数据一起使用。新数据将是验证此模型的数据,此数据具有相同的列。我的想法是使用:

validate <- predict(model, newdata=data2, type='response')

我的问题来了,预测函数是否考虑了用于创建模型的偏移量?如果不是,我应该怎么做才能获得新数据的正确概率?

4

2 回答 2

5

我认为对数偏移与泊松族一起使用。如果是二项式,则不应使用对数。检查链接https://stats.stackexchange.com/questions/25415/using-offset-in-binomial-model-to-account-for-increased-numbers-of-patients

于 2012-11-05T18:44:17.490 回答
3

看看你的问题,我猜你的主要问题是为什么偏移没有任何区别。

从@Ben Bolker Rpub ( https://rpubs.com/bbolker/logregexp )中窃取一句话:“生态学(和其他地方)一个非常常见的情况是生存/二元结果模型,其中个体(每个测量一次)不同“

因此,在此基础上,我建议您可能正在寻找的代码:

model <- glm(f_ocur~altitud+UTM_X+UTM_Y+j_sin+j_cos+temp_res+pp, 
       data=mydata, family = binomial(link = cloglog),offset=log(1/off))

下面是一个小例子,它表明不仅有和没有偏移的结果不同,而且使用 AICc 模型选择,尽管“时间”与“站点”混淆,但更好的模型排名更高。

library(AICcmodavg)

set.seed(1)
time <- c(rep(1,50),rep(2,50))
site <- c(rep("site 1",50),rep("site 2",50))
surv <- c(rbinom(50,1,prob=0.7),rbinom(50,1,prob=0.7^2))

my.data <- data.frame(surv, site, time)

# setup AICc model list
Cand.models <- list( )

Cand.models[[1]] <- glm(surv ~ 1, data=my.data, family = binomial(link = cloglog), offset=log(1/time))
Cand.models[[2]] <- glm(surv ~ 1, data=my.data, family = binomial(link = cloglog))
Cand.models[[3]] <- glm(surv ~ site , data=my.data, family = binomial(link = cloglog), offset=log(1/time))

# create a vector of names to trace back models in set
Modnames <- paste("mod", 1:length(Cand.models), sep = " ")

# generate AICc table
aictab(cand.set = Cand.models, modnames = Modnames, sort = TRUE)
于 2015-12-16T03:43:43.163 回答