2017-07-25 95 views
3

は、標準誤差がデフォルトのオプションを使用して計算されます。ここggplot2:geom_smoothでの予測の信頼区間を取得するにはどうすればよいですか?

dataframe <- data_frame(x = c(1,2,3,4,5,6), 
         y = c(12,24,24,34,12,15)) 
> dataframe 
# A tibble: 6 x 2 
     x  y 
    <dbl> <dbl> 
1  1 12 
2  2 24 
3  3 24 
4  4 34 
5  5 12 
6  6 15  

dataframe %>% ggplot(., aes(x = x, y = y)) + 
geom_point() + 
geom_smooth(method = 'lm', formula = y~x) 

この簡単な例を考えてみましょう。しかし、私はパッケージで提供堅牢分散共分散行列を使用したい使用してsandwichとある

lmtestvcovHC(mymodel, "HC3")

geom_smooth()機能を使用して簡単な方法でそれを取得する方法はあります?

enter image description here

+1

あなたはggplot2で直接これを行うことはできません。 'sandwich'を使って上下の信頼バンドを手動で生成し、それらを' geom_ribbon() 'に渡す必要があります。 'geom_ribbon'だけが表示されるようにするには' se = FALSE'が 'geom_smooth()'にセットされていることを確認してください。 – Noah

+0

@noah、面白いです。あなたはソリューションを投稿するのに気をつけますか? –

答えて

1

私はこの全体の堅牢なSEの事に非常に新しいですが、私は次のように生成することができた:

zz = ' 
x y 
1  1 12 
2  2 24 
3  3 24 
4  4 34 
5  5 12 
6  6 15 
' 

df <- read.table(text = zz, header = TRUE) 
df 

library(sandwich) 
library(lmtest) 

lm.model<-lm(y ~ x, data = df) 
coef(lm.model) 
se = sqrt(diag(vcovHC(lm.model, type = "HC3"))) 
fit = predict(lm.model) 
predframe <- with(df,data.frame(x, 
           y = fit, 
           lwr = fit - 1.96 * se, 
           upr = fit + 1.96 * se)) 

library(ggplot2) 
ggplot(df, aes(x = x, y = y))+ 
    geom_point()+ 
    geom_line(data = predframe)+ 
    geom_ribbon(data = predframe, aes(ymin = lwr,ymax = upr), alpha = 0.3) 

enter image description here

+0

あなたの計算が正しいとは思わない、残念なことに –

関連する問題