2016-08-10 60 views
2

我使用'柵格'包用二項式響應變量繪製概率圖。問題是,當我繪製結果時,我的預測柵格值範圍從-15到5而不是0-1。我使用了與Hijmans,Elith相同的代碼。 「用R分類建模」(第34頁)。他們得到的概率範圍從0到1,而我不斷得到奇怪的值。我在做什麼錯了? 這裏是我的數據的前50行的可重複的例子。對於二項式數據,預測柵格範圍超出0-1(包'柵格')

install.packages("lme4") 
install.packages("raster") 
install.packages("rgdal") 

library("lme4") 
library("raster") 
library("rgdal") 

# my data 
data = structure(list(colorSymbol = c(1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 
1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L), bio_2 = c(75L, 168L, 
57L, 127L, 120L, 100L, 97L, 97L, 97L, 97L, 94L, 102L, 102L, 89L, 
89L, 102L, 96L, 97L, 92L, 100L, 97L, 97L, 97L, 96L, 97L, 95L, 
97L, 105L, 96L, 92L, 96L, 97L, 97L, 88L, 95L, 95L, 95L, 99L, 
96L, 97L, 97L, 100L, 97L, 96L, 94L, 94L, 94L, 94L, 98L, 94L), 
bio_3 = c(24L, 36L, 32L, 57L, 31L, 31L, 32L, 32L, 32L, 32L, 
31L, 33L, 31L, 32L, 32L, 33L, 32L, 31L, 32L, 33L, 32L, 32L, 
32L, 32L, 32L, 32L, 32L, 34L, 31L, 32L, 32L, 32L, 32L, 32L, 
32L, 32L, 32L, 31L, 32L, 32L, 32L, 34L, 31L, 32L, 31L, 31L, 
31L, 31L, 32L, 32L)), .Names = c("colorSymbol", "bio_2", 
"bio_3"), row.names = c(NA, 50L), class = "data.frame") 
# model 
bio2 = data$bio_2 
bio3 = data$bio_3 
colorSymbol = data$colorSymbol 
model = glm(colorSymbol ~ bio2 + bio3, family = binomial) 
# predictors 
w = getData('worldclim', var='bio', res=10) 
rasstack <- stack(w$bio2, w$bio3) 
p <- raster::predict(rasstack, model) 
plot(p) 

這裏就是我得到:prediction raster

我在網上搜徹底,但不能得到什麼是錯的。

回答

3

默認情況下predict給你造成的鏈接(分對數)的規模,而不是響應(概率)規模:只需使用type="response"得到的概率規模預測。

p <- raster::predict(rasstack, model, type="response") 
plot(p) 

enter image description here

+0

謝謝奔! – Lybica

+0

雖然感悟,但StackOverflow棄用[使用評論來說「謝謝你」](http://meta.stackoverflow.com/questions/258004/should-thank-you-comments-be-flagged?lq=1) ;如果這個答案很有用,你可以放棄它(如果你有足夠的聲望),並且在任何情況下,如果它滿意地回答你的問題,我們鼓勵你點擊複選標記來接受它。 –