Как построить график данных для Challenger crissi специальным c способом - PullRequest
0 голосов
/ 05 мая 2020

У меня есть следующий вывод R, где данные ниже показывают температуру (Temp) во время полета и было ли хотя бы одно первичное уплотнительное кольцо термическим повреждением (TD) с 1 = да, 0 = нет.

Temp = c(66,72,70,75,75,70,73,78,70,76,69,70,67,81,58,68,57,53,76,67,63,67,79)
TD = c(0,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0,1,1,0,0,1,0,0)
d = data.frame(Temp,TD) 

Эти данные относятся к катастрофе миссии Challenger в 1986 году. Мне интересно, что значит построить график расчетных вероятностей для обоих случаев, когда пострадало хотя бы одно первичное уплотнительное кольцо. термическое повреждение (TD) и отсутствие теплового повреждения (TD) первичного уплотнительного кольца в зависимости от температуры. Постройте два графика в одной и той же системе координат.

Меня это смущает, поскольку два условия, которые он хочет, чтобы мы построили, не имеют для меня смысла. Похоже, вы получите только постоянные графики.

1 Ответ

0 голосов
/ 05 мая 2020

Ключ здесь как функция температуры . Итак, что является разумной функцией в этом случае, когда результат является двоичным?

Первое, что приходит на ум, - это функция logisti c.

plot(d, pch=20, col=2) # Half the work done.

Давайте подберем logisti c регрессионная модель к данным. Обратите внимание, что это будет оценивать lo git (логарифмические шансы) по умолчанию, а не вероятность.

m1 <- glm(TD~Temp, data=d, family="binomial")

predict с «type = response» даст вам прогнозируемые вероятности для наших данных Temp, а не lo git (по умолчанию).

pr <- predict(m1, type="response"); pr

, и вы можете легко добавить их к графику.

points(Temp, pr, pch=20)

Но лучше показать гладкая линия, представляющая не только данные, но и все возможные температуры в диапазоне данных. Для этого мы передаем в функцию predict больше точек данных через аргумент «newdata». Этот новый фрейм данных должен содержать все термины из модели, в данном случае только Temp.

newdata <- data.frame(Temp=seq(range(Temp)[1], range(Temp)[2], by=1))
newdata$pr <- predict(m1, type="response", newdata=newdata)

plot(d, pch=20, col=2)
lines(newdata)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...