Построение сгруппированных средних значений в R - PullRequest
0 голосов
/ 26 июня 2018

Я получаю вероятности с помощью линейной регрессии y ~ x, где x - значения с плавающей запятой в фиксированном диапазоне, например, от 0 до 5, и наблюдаемые значения y равны 0 или 1. Обратите внимание, что х могут быть дублированы, например, данные (0,1,0), (0,1,1), (0,1,0), (0,12,1) и т. д.

Выполнение самой регрессии - это хорошо, и я также могу построить результаты регрессии, например, через пакет ggplot2

qplot(x,y,data=data,geom='smooth',method='lm')

Поскольку точечные графики фактических данных добавили бы много точек при y = 0 и y = 1, я надеялся получить «сгруппированные средние», например, средние значения y для всех x в [0,0.2) как одна точка, другая для [0.2,0.4) и т. д.

В идеале, этот график также должен показывать размеры выборки, аналогичные тому, как работает регрессия, например, если одно групповое среднее имеет меньше базовых данных, чем другое, то оно отображается в меньшем круге, как пузырьковая диаграмма.

1 Ответ

0 голосов
/ 26 июня 2018

Используйте cut, чтобы разделить выборки на интервалы. Вы можете использовать data.table для быстрой агрегации. Тогда нужно добавить компонент размера к вашему графику:

x<-rnorm(100)
y<-5*x+6+rnorm(100,sd=0.2)
DT<-data.table(x,y)
DT[,bin:=cut(x,seq(-3,3,0.2),right = F)]
#Aggregate table
DT1<-DT[,.(mx=mean(x),my=mean(y),.N),by=bin]
qplot(x,y,data=DT,geom='smooth',method='lm')+
    geom_point(data = DT1,aes(x= mx,y=my,size=N))

Sample output

...