Значение se, предоставляемое geom_smooth, является стандартной ошибкой прогноза, а наблюдаемый вами доверительный интервал составляет +/- 1.96 * se прогноза, см. Ниже о том, как его можно рассчитать:
fit = lm(heightIn ~ ageYear,data=heightweight)
newdata = data.frame(ageYear=seq(min(heightweight$ageYear),
max(heightweight$ageYear),by=0.1))
pred = predict(fit,newdata,se=TRUE)
newdata$heightIn = pred$fit
newdata$se = pred$se.fit
ggplot(heightweight, aes(x = ageYear, y = heightIn))+
geom_point()+
geom_line(data=newdata,col="cadetblue")+
geom_ribbon(data=newdata,aes(ymin=heightIn-1.96*se,ymax=heightIn+1.96*se),
alpha=0.2,fill="cadetblue")
![enter image description here](https://i.stack.imgur.com/dPyHJ.png)
Если вы хотите иметь 95% доверительный интервал ваших данных, вы можете попробовать:
ggplot(heightweight, aes(x = ageYear, y = heightIn))+
geom_point()+
geom_quantile(quantiles=c(0.05,0.5,0.95))
![enter image description here](https://i.stack.imgur.com/ofkuI.png)