データ1~3に対して複数の回帰分析を行い、その結果をこのサイトにあるような図にまとめたいと考えています。
回帰分析の結果は以下のようにまとまっています。
> lmRes_set
Source: local data frame [5 x 3]
Groups: <by row>
# A tibble: 5 × 3
iter lmResRand lmResBias
* <dbl> <list> <list>
1 1 <data.frame [7 × 5]> <data.frame [7 × 5]>
2 2 <data.frame [6 × 5]> <data.frame [6 × 5]>
3 3 <data.frame [6 × 5]> <data.frame [6 × 5]>
一つ一つの結果は、
> lmRes_set[[2]]
[[1]]
term estimate std.error statistic p.value
1 (Intercept) 44.08651614 12.7941054 3.44584594 0.04106068
2 treatment_rand -1.00512172 10.4939360 -0.09578119 0.92973389
3 age 0.06060037 0.1618392 0.37444793 0.73297251
4 factor(partyID)4 3.32417091 10.8821091 0.30547120 0.77997631
5 factor(partyID)7 -1.10496660 11.2153538 -0.09852267 0.92773124
6 factor(partyID)8 23.71469512 10.9822559 2.15936465 0.11964723
7 gender 9.75602334 7.2412885 1.34727726 0.27061498
のようになっていて、このうちtreatment_rand
だけを使い、先ほどのページの図の(Intercept)
のように、一つの変数に対して3つのデータセットを結果を色を変えつつ表示したいと考えています。
この場合、結果の入ったlmRes_Set
をどのような形でggolot2
に流すべきなのでしょうか。いくつかためしましたが、上手くいきませんでした。
以下私が使いたいデータに近い擬似データを作るコードと、試したコードになっています
library(tidyverse);library(broom)
# Data Creation
population_num <- 50
population <- tibble(
gender = as.numeric(rbinom(population_num, 1, 0.5)),
age=rnorm(population_num, mean=50, sd=20),
score=rnorm(population_num, mean=80, sd=30),
setid=sample(c(1,2,3), size=population_num, replace=T)
)
# Analysis
lmRes_set <- population %>%
group_by(setid) %>%
do(model1=tidy(lm(score~age, data=.)),
model2=tidy(lm(score~age+gender, data=.)))
# Make Plot for model 1 # Error!!!
temp <- lmRes_set %>%
group_by(setid) %>%
select(model1)
よろしくお願い致します。
(こちらの質問は英語版での質問に反応が悪かったため、日本語で再質問したものになります。どちらかで回答頂けた場合は質問者が責任を持ってもう片方に翻訳致します。)