2015-06-28 3 views
0

Если у вас есть два набора данных, которые вы хотите построить на одном графике, есть ли способ получить доверительные интервалы только для одного из наборов данных, а не для другого? например, регрессии обнаруживаются только для группы данных A, но не B, но вы все же хотите визуально отображать данные для A & B на том же графике с доверительными интервалами вокруг значительной группы A.Доверительные интервалы для ggplot

ответ

3

Вы можете выборочно выбирать, какие данные нужно передать регрессионному плоттеру.

Рассмотрим следующий пример:

set.seed(10) 

#Make sample data 
df <- data.frame(
    group=rep(c("A","B"), each=10), 
    X = rep(1:10, 2)) 
df$Y <- 2*df$X + runif(20, -20, 20) #Create y values with lots of noise 

#Reduce the noise for group A 
df[df$group == "A", "Y"] <- 2*df[df$group == "A", "X"] + rnorm(10) 

#Compare regression p-values 
coef(summary(lm(Y ~ X, data=df[df$group == "A", ])))[, 4] #p < 0.05 for group A 
# (Intercept)   X 
#1.577943e-01 5.411004e-09 

coef(summary(lm(Y ~ X, data=df[df$group == "B", ])))[, 4] #p > 0.05 for group B 
#(Intercept)   X 
# 0.7338232 0.1309030 

#Graph all points, coloring by group. Add a regression line for group A only. 
ggplot(df, aes(x=X, y=Y, colour= group)) + theme_bw() + 
    geom_point(size=2.5) + 
    geom_smooth(data = df[df$group == "A",], method="lm") 

regression for group A only

+0

Отлично! Спасибо! – Raven