2017-09-05 12 views
1

個人とグループのトレンドラインを私のプロットに追加する方法には苦労しています。 (Rとggplot2を使用)。ここでR:GMMプロットにグループと個々の多項式のトレンドラインを追加する

は、私が使用していますコードです:

MensHG.fm2=lmer(HGNewtons~Temperature+QuadTemp+Run+(1|Subject),MenstrualData) #model 

plot.hg<-data.frame([email protected],fitted.re=fitted(MensHG.fm2)) 

g1<-ggplot(plot.hg,aes(x=Temperature,y=HGNewtons))+geom_point() 

g2<-g1+facet_wrap(~Subject, nrow=6)+ylab(bquote('HG MVF (N)'))+xlab(bquote('Hand ' ~T[sk] ~(degree*C))) 

g3<-g2+geom_smooth(method="glm", formula=y~ploy(x,2), se=FALSE) #This gives me my individual trendlines 

今、私は私の個々のプロットの各々にデータのG1一部(すなわち、全体的な傾向)のためのトレンドラインに入れたい - 何ですこれを行う最善の方法は?できるだけ早く私は、ファセットラップを行うよう

g5=g1+geom_smooth(method="glm", formula=y~poly(x,2), se=FALSE) 

​​

が、このトレンドラインdisspears

それを(私はG3と同じ出力を得る):私は、コードを使用する場合、私は傾向を見ることができます使用して問題を解決するためには表示されません:G4 < -g3 + geom_smooth(データ= MensHG.fm2)

+0

可能な複製(HTTPS [どのように私はggplot2オブジェクトの各端面に、同一の円滑なを置くのですか?]: //stackoverflow.com/questions/6673074/how-do-i-place-an-identical-smooth-on-each-facet-of-a-ggplot2-object) – aosmith

+0

'geom_smooth'の代わりに' geom_line(aes (Temperature、fitted.re)) 'を実行して、すべての適合値を結ぶ線を生成します。 – Brian

答えて

1

をあなたのデータの最小限の作業例がなければ、私は組み込みアイリスデータを使用しました。ここで私はがデモンストレーションのために異なる主題であるとふりをしました。私もシンプル、broomdplyrための2つの追加パッケージを使用

library(lme4) 
library(ggplot2) 

fit.iris <- lmer(Sepal.Width ~ Sepal.Length + I(Sepal.Length^2) + (1|Species), data = iris) 

augmentからbroomまでは..., fitted.re=fitted(MensHG.fm2)で上記と同じことをしますが、いくつかの鐘や笛があります。私もdplyr::selectを使用していますが、それは望む出力に応じて厳密には必要ありません(図2と図3の違い)。

library(broom) 
library(dplyr) 
augment(fit.iris) 
# output here truncated for simplicity 
Sepal.Width Sepal.Length I.Sepal.Length.2. Species .fitted  .resid .fixed ... 
1   3.5   5.1    26.01 setosa 3.501175 -0.001175181 2.756738 
2   3.0   4.9    24.01 setosa 3.371194 -0.371193601 2.626757 
3   3.2   4.7    22.09 setosa 3.230650 -0.030649983 2.486213 
4   3.1   4.6    21.16 setosa 3.156417 -0.056417409 2.411981 
5   3.6   5.0    25 setosa 3.437505 0.162495354 2.693068 
6   3.9   5.4    29.16 setosa 3.676344 0.223656271 2.931907 
ggplot(augment(fit.iris), 
     aes(Sepal.Length, Sepal.Width)) + 
    geom_line(#data = augment(fit.iris) %>% select(-Species), 
      aes(y = .fixed, color = "population"), size = 2) + 
    geom_line(aes(y = .fitted, color = "subject", group = Species), size = 2) + 
    geom_point() + 
    #facet_wrap(~Species, ncol = 2) + 
    theme(legend.position = c(0.75,0.25)) 

I #は二つの文-commented注:data = ...facet_wrap(...)を。あなたは全体の範囲で(固定効果のため.fixed)スムーズなあなたの人口を持ち、その後、あなたはグループがフィットモデルを示すことが滑らかに持って

enter image description here

:これらの行はコメントアウトすると、次のような出力を得ますサブジェクトレベルのインターセプトを考慮した値(.fitted)。

その後、コードスニペットで二# -commentマークを取り出すことにより、面でこれを表示することができます

enter image description here

これは同じですが、フィットの値が唯一の範囲内に存在するので、各サブジェクトレベルのパネルの元のデータでは、母集団の平滑化はその範囲にのみ切り捨てられます。それを回避するために

、我々は最初の# -commentマークを削除することができますの

enter image description here

関連する問題