Значения корреляции в фасетной сетке из ggplot2
При использовании facet_grid в ggplot2 я хотел бы иметь возможность иметь значение корреляции для поднабора данных для каждой ячейки сетки в верхнем правом углу конкретного графика.
например, если работает:
p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
p + facet_grid(vs ~ am, margins=TRUE)
Я хотел бы видеть значение для корреляции для каждого из 9 графиков в сетке где-то. В этом конкретном случае из примера, я ожидаю, что каждый будет близок к -0,9 или около того из визуального осмотра.
Или, возможно, выходная таблица должна соответствовать графику, который дает значения корреляции для каждой ячейки таблицы, совпадающей с facet_grid...(это менее желательно, но также и вариант).
В идеале я хотел бы распространить это на любую другую функцию, которую я выбрал, чтобы она могла использовать одну или обе из двух переменных, построенных для расчета статистики.
Это возможно?
заранее спасибо
2 ответа
Уинстон Чанг предложил ответ на группу ggplot2... это то, что он сказал... это не плохой ответ...
Вы могли бы сделать что-то вроде этого:
p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
# Calculate correlation for each group
cors <- ddply(mtcars, c("vs", "am"), summarise, cor = round(cor(mpg, wt), 2))
p + facet_grid(vs ~ am) +
geom_text(data=cors, aes(label=paste("r=", cor, sep="")), x=30, y=4)
Я не думаю, что это можно сделать правильно с полями = ИСТИНА. Если вам нужны поля, вам может потребоваться предварительная обработка данных, чтобы добавить значение ALL для каждой переменной фасетирования.
Уинстон
Я бы предпочел добавить (линейный) сглаживатель к данным. Это дает вам гораздо больше информации, чем корреляция.
ggplot(mtcars, aes(mpg, wt)) +
geom_smooth(method = "loess", colour = "red", fill = "red") +
geom_smooth(method = "lm", colour = "blue", fill = "blue") +
geom_point() + facet_grid(vs ~ am, margins=TRUE)
ggplot(mtcars, aes(mpg, wt)) + geom_smooth(method = "lm") + geom_point() +
facet_grid(vs ~ am, margins=TRUE)