2016-06-18 154 views
4

我目前正在研究涉及不同物種的蝙蝠和棲息地的碎片。我的數據集包含存在數據(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() 

在下面的圖像得到的:

Plot 1 (left) and plot 2 (right).

什麼引起這些差異,並哪一個會是正確的?

Sample data set(未分類的數據集的一部分)。

+0

如果您提供了一些數據以使問題具有可重現性,那將會更容易。它不一定是真實的數據,只是看起來像的東西。 –

+0

樣本數據的CSV文件包含在以下鏈接中:http://pastebin.com/cHXp0ivG –

+0

這可能是一個很好的[開始](http://stackoverflow.com/q/8845279/707145)。 – MYaseen208

回答

1

您鏈接到的資源在項目Using the logit model下的項目符號部分有解釋說明。 Estimate是每個協變量對對數存在性的累加效應。這是連續協變量或分類的每個實例每增加1單位。這裏有幾點:

  • 因爲你已經取得了連續協變量的對數,它們的效果是每對單位的對數尺度 - 很難解釋。我強烈建議不要這樣做。爲了適應此模型,不需要FragSizeMass的正常性。
  • 請注意,您的某個類別在列表中缺失?協變量的影響必須根據一些參考來衡量。在這種情況下,參考是具有logFrag = 0和logMass = 0的食肉動物。這些0值是不可能的。這很平常,爲什麼對(Intercept)的解釋對你沒有用處。

Std. Error,這是衡量您對Estimate效果的信心的度量。人們經常使用圍繞Estimate的正常近似值±2 * Std. Error來形成置信區間並使用它們進行陳述。當+間隔 - 2 * Std. Error包含0有一定的概率,真正的效果是0你不希望出現這種情況,所以你對於尋找的Std. Error小值到Estimate

z valuePr(>|z|)涉及我提到的正常近似值。您可能已經知道Z值(標準正常值)是什麼以及人們如何使用它們執行重要性測試。

現在你的情節: 這些情節實際上並沒有繪製你的模型。您正在使用平滑器來擬合類似類型的新模型,但使用不同的數據集。平滑者只考慮logFrag在每個公會中適合迷你物流模型的效果。

因此,我們預計情節不同於summary(),但不是來自彼此。發生這種情況的原因很有趣,它與使用bats2$presence而不是presence有關。當你通過bats2$presence時,這有效地像傳遞ggplot2一個單獨的匿名數據列表。只要該列表與您期望的數據框一致,一切都很好。看起來facet_wrap()在使用bats2$presence時會混合數據,這可能是由於公會按行會排序bats2。使用普通的舊presence,他們會出來。

+0

非常感謝您的解釋! –

+0

此外,我可以在此模型中使用'FragSize'和'Mass'而不是日誌嗎?我如何測試邏輯迴歸的假設?我有想法我測試了這些,但只是要求確定。 –