逻辑回归的解释和绘图

5

我目前正在研究不同种类蝙蝠的栖息地破碎化问题。我的数据集包含存在数据(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

我的第一个问题是确认我是否正确解释了这些数据:如何正确解释这些数据?我使用了这个网站来帮助我解释。
此外,我尝试绘制这些数据以进行可视化。然而,在添加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() 

导致以下图片的原因:

左图为Plot 1,右图为Plot 2

是什么原因导致了这些差异,哪一个才是正确的呢?

样本数据集(未分类的一部分数据集)。


如果您提供一些数据以使问题可重现,那么帮助您将更加容易。这些数据不必是真实的数据,只需要看起来像真实数据即可。 - Richard Telford
样本数据的CSV文件包含在以下链接中:http://pastebin.com/cHXp0ivG - Y. Hidskes
这可能是一个不错的起点 - MYaseen208
@MYaseen208 这怎么应用到这个案例中呢?我现在明白 geom_smooth 不适合绘制这些线了。 - Y. Hidskes
1个回答

2
你链接的资源在标题为“使用logit模型”的项目符号下有一个解释。估计值是每个协变量对出现概率的对数几率的加法效应,这是连续协变量每增加1单位或分类变量每实例的效应。关于这点需要注意以下几点:
- 由于对连续协变量取了对数,它们的效应是按log比例尺上每1个单位的改变,难以解释。我强烈反对这样做。在拟合该模型时,不需要FragSize或Mass服从正态分布。 - 注意到列表中缺少一个类别吗?协变量的效应必须相对于某个参考水平进行测量。在这种情况下,参考水平是具有logFrag=0和logMass=0的食肉动物。这些0值是不可能的。这是通常情况,并且说明为什么无法使用(截距)的解释。 接下来是标准误差,这是对你对估计值效应的信心度量。人们通常使用估计值±2倍标准误差的正态近似构建置信区间,并使用它们进行陈述。当±2倍标准误差的区间包含0时,则存在某些可能性,真实效应为0。你不希望发生这种情况,因此希望标准误差的值相对于估计值较小。
z值和Pr(| z | >)与我提到的正态近似有关。你可能已经知道标准化评分(标准正态分布),以及人们如何使用它们进行显著性检验。
现在来看你的图表:实际上,这些图表并没有绘制出你的模型。你正在使用平滑器拟合类似类型但不同数据集的新模型。平滑器仅考虑logFrag的效应,以在每个行业内拟合迷你逻辑模型。
因此我们期望图表与summary()不同,但互相之间是相同的。发生这种情况的原因很有趣,与使用bats2$presence而不是presence有关。当你传入bats2$presence时,这实际上就像向ggplot2传递单独的匿名数据列表。只要该列表与数据框按预期对齐,一切都好。似乎facet_wrap()在使用bats2$presence时混淆了数据,可能由于按行业对bats2进行排序。请使用普通的presence,结果将相同。

非常感谢您的解释! - Y. Hidskes
此外,在这个模型中我能用 FragSizeMass 代替对数吗?我如何测试逻辑回归的假设?我曾经有测试过,但只是想确保一下。 - Y. Hidskes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接