我目前正在研究涉及不同种类的蝙蝠和栖息地的碎片.我的数据集包含存在数据(1 =存在,0 =不存在)和片段大小,体重(连续)和喂养公会的数据(Feeding.Guild;分类,6个级别:食肉动物,食肉动物食虫动物,食虫动物,杂食动物和血管动物).使用自然日志转换片段大小(logFrag)和体重(logMass)以符合正态分布.由于被分类,我无法呈现完整的数据集(bats2).
为了分析这些数据,我使用了逻辑回归.在R中,这是二项式族的glm函数.
bats2 <- read.csv("Data_StackExchange.csv",
quote = "", sep=";", dec = ".", header=T, row.names=NULL)
bats2$presence <- ifelse(bats2$Corrected.Abundance == 0, 0, 1)
bats2$logFrag <- log(bats2$FragSize)
bats2$logMass <- log(bats2$Mass)
str(bats2$Feeding.Guild)
Factor w/ 6 levels "carnivore","frugivore",..: 6 1 5 5 2 2 2 2 2 2 ...
levels(bats2$Feeding.Guild)
[1] "carnivore" "frugivore" "insectivore" "nectarivore" "omnivore" "sanguinivore"
regPresence <- glm(bats2$presence~(logFrag+logMass+Feeding.Guild),
family="binomial", data=bats2)
该回归的结果通过summary()函数获得,如下所示.
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -4.47240 0.64657 -6.917 4.61e-12 ***
logFrag 0.10448 0.03507 2.979 0.002892 **
logMass 0.39404 0.09620 4.096 4.20e-05 ***
Feeding.Guildfrugivore 3.36245 0.49378 6.810 9.78e-12 ***
Feeding.Guildinsectivore 1.97198 0.51136 3.856 0.000115 ***
Feeding.Guildnectarivore 3.85692 0.55379 6.965 3.29e-12 ***
Feeding.Guildomnivore 1.75081 0.51864 3.376 0.000736 ***
Feeding.Guildsanguinivore 1.73381 0.56881 3.048 0.002303 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
我的第一个问题是验证我是否正确解释了这些数据:如何正确解释这些数据?我用this website来帮助我解释.
此外,我尝试绘制这些数据以便可视化.然而,当添加facet_wrap函数以为不同的饲养行会制作单独的图时,与在一个图中对不同的饲养行会着色相比,截距和斜率发生变化.我使用了以下代码:
情节1:
library(ggplot2)
qplot(logFrag, bats2$presence, colour=Feeding.Guild, data=bats2, se=F) +
geom_smooth(method = glm, family = "binomial", se=F, na.rm=T) + theme_bw()
情节2:
qplot(logFrag, bats2$presence, data=bats2, se=F) + facet_wrap(~Feeding.Guild,
scales="free") +
geom_smooth(method = glm, family = "binomial", se=F, na.rm=T) + theme_bw()
导致以下图像:
导致这些差异的原因是哪一个是正确的?
Sample data set(未分类的数据集的一部分).
最佳答案 您链接到的资源在“使用logit模型”标题下的项目符号部分中解释了解释.估计每个协变量对存在的对数几率的加性效应.这是连续协变量或每个分类实例的每1个单位增加.关于这一点有几点:
>因为您已经记录了连续协变量,它们的效果是对数刻度上的每1个单位 – 很难解释.我强烈建议不要这样做.为了适应这种模型,不需要FragSize或Mass的正常性.
>请注意,列表中缺少您的某个类别?必须根据某些参考来测量协变量的影响.在这种情况下,参考是食肉动物,logFrag = 0,logMass = 0.这些0值是不可能的.这是常见的,为什么解释(拦截)对你没用.
到标准.错误,这是衡量您对估算效果的信心的指标.人们经常使用 – 2 *标准的正常近似值.围绕Estimate形成置信区间并使用它们生成语句时出错.当间隔为 – 2 * Std.错误包含0有一些概率,真实效果是0.你不想要那样,所以你正在寻找Std的小值.关于估计的错误
z值和Pr(> | z |)与我提到的正常近似有关.您可能已经知道Z分数(标准正常)是什么以及人们如何使用它们来执行重要性测试.
现在你的情节:
这些图实际上并没有绘制您的模型.您正在使用平滑器来拟合类似类型的新模型,但是使用不同的数据集.更顺畅的是只考虑logFrag在每个公会中适应迷你逻辑模型的效果.
因此我们希望这些图与摘要()不同,但不是彼此不同.发生这种情况的原因很有趣,这与使用bats2 $presence而不是存在有关.当你传入bats2 $presence时,这实际上就像传递ggplot2一个单独的匿名数据列表.只要该列表与您期望的数据帧一致,一切都很好.看来facet_wrap()在使用bats2 $presence时会混淆数据,可能是因为guild对bats2进行了排序.使用普通的老存在,他们会出来一样.