aspettl — Jun 27, 2013, 2:29 PM
# Daten einlesen
daten <- read.table("challenger.txt", header=T)
# a) logistische Regression (Logit-Modell)
# Modell aufstellen
logitModell <- glm(daten$Ausfall ~ daten$Temperatur, family = binomial(link = logit))
# Koeffizienten ausgeben
beta0 <- as.vector(coef(logitModell))[1]
beta1 <- as.vector(coef(logitModell))[2]
print(beta0)
[1] 15.04
print(beta1)
[1] -0.2322
# Prognose der Ausfallwahrscheinlichkeit bei 31 °F
print(exp(beta0 + beta1 * 31)/(1 + exp(beta0 + beta1 * 31)))
[1] 0.9996
# b) Probit-Modell (Linkfunktion ist die Inverse der Verteilungsfunktion der Standardnormalverteilung)
# Modell aufstellen
probitModell <- glm(daten$Ausfall ~ daten$Temperatur, family = binomial(link = probit))
# Koeffizienten ausgeben
beta2 <- as.vector(coef(probitModell))[1]
beta3 <- as.vector(coef(probitModell))[2]
print(beta2)
[1] 8.775
print(beta3)
[1] -0.1351
# Prognose der Ausfallwahrscheinlichkeit bei 31 °F
print(pnorm(beta2 + beta3 * 31))
[1] 1
# c) Kurven plotten
# - generiere zuerst die (Temperatur-)Auswertepunkte für die Kurve
s <- rep(0, 1000)
min <- 29
max <- 91
for (i in 1:1000) {
s[i] <- min + ((i - 1) * (max - min))/1000
}
# - Ausfallwahrscheinlichkeiten für die verschiedenen Auswertepunkte, mit Logit-Modell,
# d.h. Bernoulli-Verteilung und natürliche Linkfunktion
w1 <- exp(beta0 + beta1 * s)/(1 + exp(beta0 + beta1 * s))
plot(s, w1, xlab="Temperatur in °F", ylab="Ausfallwahrscheinlichkeit", type="l")
# - Ausfallwahrscheinlichkeiten für die verschiedenen Auswertepunkte, mit Probit-Modell,
# d.h. Bernoulli-Verteilung und Quantilfunktion der Normalverteilung als Linkfunktion
w2 <- pnorm(beta2 + beta3 * s)
lines(s, w2, lty=2)
# - Datenpunkte noch einzeichnen
points(daten$Temperatur, daten$Ausfall, pch=8)
# - und die Legende
legend(x=30, y=0.2, legend=c("Logit-Modell", "Probit-Modell"), lty=c(1, 2))