Метод извлечения точных 95% доверительных значений из stat_smooth (method = "glm") - PullRequest
0 голосов
/ 14 февраля 2020

Я создал график взаимодействия с glm, используя ggplot2. Я приложил код, который использовал, и сюжет

plot showing grey shaded 95% interval that i want to extract the values from.

Я знаю, что серые заштрихованные области представляют 95-процентный доверительный интервал, но мне интересно, есть ли способ получить точные значения серых закрашенных областей и, следовательно, 95% -ный доверительный интервал?

#bind data togther

Modern_EarlyHolocene<-rbind(FladenF30, FladenB30, Early_Holocene)

#Build modern vs Holocene model

Modern_EarlyHolocene<-glm(Max_Height~Age+Time_period, data=Modern_EarlyHolocene,family = gaussian)

#Produce gg interaction plot

Modern_EarlyHolocene_plot<-ggplot(data=Modern_EarlyHolocene) + aes(x = Age, y = Max_Height, group = Time_period, color = Time_period,) +> geom_point( alpha = .7) + stat_smooth(method = "glm", level=0.95) + expand_limits(y=c(0,90), x=c(0,250))

#add axis labels

Modern_EarlyHolocene_plot + labs(x = "Age (years)", y = 'Maximum height (mm)') + theme(legend.text = element_text(size = 14, colour = "Black"), legend.title=element_blank()) + theme(axis.text=element_text(size=14), axis.title=element_text(size=16,face="bold"))

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

Вы эффективно подбираете разные линии регрессии для каждого периода времени, поэтому ваш glm должен включать термин взаимодействия. Это должно быть:

Modern_EarlyHolocene<-glm(Max_Height~Age*Time_period, data=Modern_EarlyHolocene)

У меня нет ваших данных, поэтому см. Ниже пример с радужной оболочкой:

fit = glm(Sepal.Width ~ Sepal.Length * Species,data=iris)
g1 = ggplot(iris,aes(x=Sepal.Length,y=Sepal.Width,color=Species)) +
geom_point( alpha = .7) + stat_smooth(method = "glm", level=0.95)

enter image description here

Чтобы получить само предсказание, вы должны:

pred = predict(fit,iris,se.fit = TRUE)
df_pred = data.frame(iris,pred=pred$fit,se=pred$se)

Мы можем построить это, и верхняя и нижняя границы предсказания равны 1,96 * стандартная ошибка:

g2 = ggplot(df_pred,aes(x=Sepal.Length,y=Sepal.Width,color=Species)) +
geom_point( alpha = .7) + 
geom_ribbon(aes(ymin=pred-1.96*se,ymax=pred+1.96*se,fill=Species),alpha=0.1)

enter image description here

0 голосов
/ 14 февраля 2020

Вы можете получить доступ к данным de plot с помощью layer_data(Modern_EarlyHolocene_plot, i), где i соответствует возвращаемому слою в порядке, добавленном к графику

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