下面是一組虛構的概率數據,我將其轉換爲二項式,其中threshold of 0.5
。我對離散數據運行了一個glm()
模型,以測試從glm()返回的間隔是'平均預測間隔'(「置信區間」)還是'點預測間隔'(「預測間隔」)。從下面的圖看來,返回的區間是後者 - 「點預測區間」;注意,在95%的置信度下,這個樣本中2/20點落在線外。Logistic迴歸的預測和置信區間
如果確實如此,那麼如何使用glm()函數爲0和1綁定的二項數據集生成R中的'平均預測間隔'(即「置信區間」)?請用適合線,給定概率,「置信區間」和「預測區間」來顯示您的代碼和繪圖。
# Fictitious data
xVal <- c(15,15,17,18,32,33,41,42,47,50,
53,55,62,63,64,65,66,68,70,79,
94,94,94,95,98)
randRatio <- c(.01,.03,.05,.04,.01,.2,.1,.08,.88,.2,
.2,.99,.49,.88,.2,.88,.66,.87,.66,.90,
.98,.88,.95,.95,.95)
# Converted to binomial
randBinom <- ifelse(randRatio < .5, 0, 1)
# Data frame for model
binomData <- data.frame(
randBinom = randBinom,
xVal = xVal
)
# Model
mode1 <- glm(randBinom~ xVal, data = binomData, family = binomial(link = "logit"))
# Predict all points in xVal range
frame <- data.frame(xVal=(0:100))
predAll <- predict(mode1, newdata = frame,type = "link", se.fit=TRUE)
# Params for intervals and plot
confidence <- .95
score <- qnorm((confidence/2) + .5)
frame <- data.frame(xVal=(0:100))
#Plot
with(binomData, plot(xVal, randBinom, type="n", ylim=c(0, 1),
ylab = "Probability", xlab="xVal"))
lines(frame$xVal, plogis(predAll$fit), col = "red", lty = 1)
lines(frame$xVal, plogis(predAll$fit + score * predAll$se.fit), col = "red", lty = 3)
lines(frame$xVal, plogis(predAll$fit - score * predAll$se.fit), col = "red", lty = 3)
points(xVal, randRatio, col = "red") # Original probabilities
points(xVal, randBinom, col = "black", lwd = 3) # Binomial Points used in glm
這裏的情節,推測可能與「點預測的間隔」(即「預測區間」)的紅色虛線,且平均配合在固體紅色。黑點表示從初始概率離散二項數據randRatio
:
我認爲你的前提是不正確的。我認爲你沒有看到你所稱的「點預測間隔」,而大多數人只是簡單地稱之爲「預測間隔」。你所說的「平均預測間隔」(可能)是大多數人稱之爲「置信區間」的東西,並且它們適用於估計參數的合理位置。 –
@ 42-我編輯了一些措辭,以更好地與您的評論保持一致。 –
@ZheyuanLi請參閱修改後的問題。我很想看到你的解決方案,更有甚者,如果有一種方法使用glm()。在lm()上用「confidence」或「prediction」預測()似乎不是glm()的一個選項。請參閱:http://stackoverflow.com/questions/12544090/predict-lm-in-r-how-to-get-nonconstant-prediction-bands-around-fitted-values –