Как построить среднюю линейную регрессию разных наборов данных на одном графике - PullRequest
0 голосов
/ 24 мая 2019

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

Я попытался использовать простую линейную регрессию, используя stat_smooth () из пакета ggplot2.Это дает отдельную линию регрессии для набора данных, но я хочу объединить эти линии регрессии в одну линию регрессии, которая представляет оба эти значения и, возможно, среднее значение для нескольких линий регрессии

The image is here

    geom_point(aes(x= DateAndTime, y= T_423), na.rm=TRUE, color="purple", shape=19, size=3)+
    geom_point(aes(x= DateAndTime, y= T_422), na.rm=TRUE, color="red", shape=8, size=1)+
    ggtitle("Module Temperature STP423 - Total distribution") +
           xlab("Date") + ylab("Module Temperature (C)")


Данные выглядят примерно так:

        Dates            X1            X2
1    2014-01-04      8.0645816      7.2969667
2    2014-01-06      7.7804850      7.1507470
3    2014-01-07      8.8772607      8.6917391
4    2014-01-08      8.8943146      8.3475009
5    2014-01-10      11.6734008     10.6493480
6    2014-01-11      9.0915727      8.5793932
7    2014-01-12      9.5216658      9.4891858
8    2014-01-13     -6.2493962     -6.9360515

1 Ответ

0 голосов
/ 24 мая 2019

ggplot2 лучше всего работает с данными в длинном формате.Например, geom_smooth требует, чтобы все его значения y находились в одном столбце.Поэтому нам нужно конвертировать ваши данные в длинный формат.В частности, я повторно использую код из этого FAQ (потому что речь идет о ggplot), но другой FAQ, Как изменить форму данных с широкого на длинный? охватывает несколько других методов.

test_data = read.table(text = '        Dates            X1            X2
1    2014-01-04      8.0645816      7.2969667
2    2014-01-06      7.7804850      7.1507470
3    2014-01-07      8.8772607      8.6917391
4    2014-01-08      8.8943146      8.3475009
5    2014-01-10      11.6734008     10.6493480
6    2014-01-11      9.0915727      8.5793932
7    2014-01-12      9.5216658      9.4891858
8    2014-01-13     -6.2493962     -6.9360515', header = T)

test_data$Dates = as.Date(test_data$Dates)

# code copy/pasted from linked FAQ, only changed id = "date" to id = "Dates"
library("reshape2")
library("ggplot2")

test_data_long <- melt(test_data, id = "Dates")  # convert to long format


# now we can plot:

ggplot(test_data_long, aes(x = Dates, y = value)) +
  geom_point(aes(color = variable, size = variable, shape = variable)) +
  geom_smooth() +
  labs(title = "Module Temperature STP423 - Total distribution",
       x = "Date",
       y = "Module Temperature (C)") +
  scale_size_manual(values = c(1, 3)) +
  scale_color_manual(values = c("red", "purple")) +
  scale_shape_manual(values = c(8, 19))

enter image description here

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