R: ggplot2 несколько линий регрессии, сгруппированных по переменной - PullRequest
0 голосов
/ 20 июня 2019

У меня есть датафрейм (пример ниже) с 3 столбцами.Моя цель - иметь переменную "Return" на оси Y и "BetaRealized" на оси X.Исходя из этого, я хотел бы иметь две линии регрессии, сгруппированные по "SML", например, одну линию регрессии для двух «теоретических» значений и одну для 10 «эмпирических» значений.Предпочтительно я хотел бы использовать ggplot2.

Я просмотрел несколько других вопросов, но не смог найти тот, который подходит для моего случая.Поскольку я очень плохо знаком с R, я был бы очень признателен за любую помощь.Не стесняйтесь помочь мне улучшить мой вопрос для будущих пользователей, если необходимо.

Воспроизводимый образец данных:

structure(list(SML = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 2L, 2L), .Label = c("Empirical", "Theoretical"), class = "factor"), 
    Return = c(0.00136162543341773, 0.00327371856919072, 0.00402550498386094, 
    0.00514512870557883, 0.00491788632261087, 0.00501053666090353, 
    0.00485590289408263, 0.00576880451680399, 0.00579134238930521, 
    0.00704131096883141, 0.00471917614445859, 0), BetaRealized = c(0.42574984058487, 
    0.576898009418581, 0.684024167075167, 0.763551381826944, 
    0.833875797322081, 0.902738972263857, 0.976227211834564, 
    1.06544414896672, 1.19436401770255, 1.50932083346054, 0.893219438045588, 
    0)), class = "data.frame", row.names = c(NA, -12L))

1 Ответ

1 голос
/ 23 июня 2019

После комментария AntoniosK кажется, что решение состоит в том, чтобы использовать geom_smooth с цветным аргументом следующим образом.Во-первых, преобразуя ваши выборочные данные в фрейм данных:

df<-data.frame(structure(list(SML = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 2L, 2L), .Label = c("Empirical", "Theoretical"), class = "factor"), 
Return = c(0.00136162543341773, 0.00327371856919072, 0.00402550498386094, 
0.00514512870557883, 0.00491788632261087, 0.00501053666090353, 
0.00485590289408263, 0.00576880451680399, 0.00579134238930521, 
0.00704131096883141, 0.00471917614445859, 0), BetaRealized = c(0.42574984058487, 
0.576898009418581, 0.684024167075167, 0.763551381826944, 
0.833875797322081, 0.902738972263857, 0.976227211834564, 
1.06544414896672, 1.19436401770255, 1.50932083346054, 0.893219438045588, 
0)), class = "data.frame", row.names = c(NA, -12L)))

В последовательности просто вызовите ggplot следующим образом:

ggplot(df, aes(BetaRealized, Return, color = SML)) + geom_point()+geom_smooth(method=lm, se=FALSE)

вывод будет таким: graph

Дополнительно вы можете добавить уравнение, используя пакет ggpubr:

ggplot(df, aes(BetaRealized, Return, color = SML)) + geom_point()+stat_smooth(method=lm, se=FALSE)+
stat_regline_equation()

Наконец, в зависимости от вашего объекта, может быть интересно использовать facet_wrap для различения категорий:

ggplot(df, aes(BetaRealized, Return, color = SML)) + geom_point()+ 
    stat_smooth(method=lm, se=FALSE)+ facet_wrap(~SML)+
    stat_regline_equation()

Изображение будет выглядеть так: graph2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...