Kullandığınız kod, glm
işlevi kullanarak bir lojistik regresyon modelini tahmin eder. Veri eklemedin, bu yüzden biraz telafi edeceğim.
set.seed(1234)
mydat <- data.frame(
won=as.factor(sample(c(0, 1), 250, replace=TRUE)),
bid=runif(250, min=0, max=1000)
)
mod1 <- glm(won~bid, data=mydat, family=binomial(link="logit"))
Bir lojistik regresyon modeli, ikili tepki değişkeni ile bu durumda bir sürekli yordayıcı arasındaki ilişkiyi modeller. Sonuç, yordayıcıyla doğrusal bir ilişki olarak logit dönüşümü olasılığıdır. Sizin durumunuzda, sonuç, kumar kazanma veya kazanmamaya karşılık gelen ikili bir yanıttır ve bahsin değeri ile tahmin edilir. 'Den gelen katsayılar, mod1
kaydedilen oranlarda (yorumlanması zor olan) verilir:
logit ( p ) = log( p( 1 - p )) = β0+ β1x1
Kayıtlı olasılıkları olasılıklara dönüştürmek için yukarıdakileri
p = exp( β0+ β1x1)( 1 + tecrübe( β0+ β1x1) )
Grafiği ayarlamak için bu bilgileri kullanabilirsiniz. İlk olarak, bir dizi tahmin değişkeni gerekir:
plotdat <- data.frame(bid=(0:1000))
Ardından predict
, modelinize dayalı tahminler alabilirsiniz.
preddat <- predict(mod1, newdata=plotdat, se.fit=TRUE)
Takılan değerlerin ayrıca
mod1$fitted
Belirterek se.fit=TRUE
, her takılan değerle ilişkili standart hatayı da alırsınız. Sonuçta data.frame
aşağıdaki bileşenlere sahip bir matris bulunur: takılan tahminler ( fit
), tahmini standart hatalar ( se.fit
) ve standart hataları hesaplamak için kullanılan dağılımın kare kökünü veren bir skaler ( residual.scale
). Bir binom logit durumunda, değer olacaktır 1 (siz girerek görebileceğiniz preddat$residual.scale
içinde R
). Şimdiye kadar hesapladığınız şeyin bir örneğini görmek istiyorsanız, yazabilirsiniz head(data.frame(preddat))
.
Bir sonraki adım, arsa oluşturmaktır. Önce parametreleri ile boş bir çizim alanı kurmak istiyorum:
with(mydat, plot(bid, won, type="n",
ylim=c(0, 1), ylab="Probability of winning", xlab="Bid"))
Şimdi, takılmış olasılıkların nasıl hesaplanacağını bilmenin önemli olduğunu görebilirsiniz. Yukarıdaki ikinci formülü takip ederek takılan olasılıklara karşılık gelen çizgiyi çizebilirsiniz. Tuşunu kullanarak, preddat data.frame
takılan değerleri olasılıklara dönüştürebilir ve bunu, tahmin değişkeninizin değerlerine karşı bir çizgi çizmek için kullanabilirsiniz.
with(preddat, lines(0:1000, exp(fit)/(1+exp(fit)), col="blue"))
Son olarak, sorunuzu cevaplayın, uygun değerlerin +/- 1.96
standart hatanın çarpı olasılığını hesaplayarak grafiğe güven aralıkları eklenebilir :
with(preddat, lines(0:1000, exp(fit+1.96*se.fit)/(1+exp(fit+1.96*se.fit)), lty=2))
with(preddat, lines(0:1000, exp(fit-1.96*se.fit)/(1+exp(fit-1.96*se.fit)), lty=2))
Ortaya çıkan çizim (rastgele oluşturulan verilerden) şöyle görünmelidir:
Uygunluk uğruna, tek bir parçadaki tüm kodlar:
set.seed(1234)
mydat <- data.frame(
won=as.factor(sample(c(0, 1), 250, replace=TRUE)),
bid=runif(250, min=0, max=1000)
)
mod1 <- glm(won~bid, data=mydat, family=binomial(link="logit"))
plotdat <- data.frame(bid=(0:1000))
preddat <- predict(mod1, newdata=plotdat, se.fit=TRUE)
with(mydat, plot(bid, won, type="n",
ylim=c(0, 1), ylab="Probability of winning", xlab="Bid"))
with(preddat, lines(0:1000, exp(fit)/(1+exp(fit)), col="blue"))
with(preddat, lines(0:1000, exp(fit+1.96*se.fit)/(1+exp(fit+1.96*se.fit)), lty=2))
with(preddat, lines(0:1000, exp(fit-1.96*se.fit)/(1+exp(fit-1.96*se.fit)), lty=2))
(Not: Bu, stats.stackexchange ile daha alakalı hale getirme girişiminde yoğun olarak düzenlenmiş bir cevaptır.)