1

プロットしたいfoo ~ bar。ただし、正確なデータを見たくはありません。bar分位数に分けて、分位mean(foo)数ごとにプロットします (したがって、最終的なプロットには 5 つのデータ ポイントが含まれます)。これは可能ですか?

4

2 に答える 2

6
 foo <- rnorm(100)
 bar <- rnorm(100)

  mn.foo.byQ10bar <- tapply(foo, cut(bar, quantile(bar, (0:5)/5, na.rm=TRUE)), mean)

> mn.foo.byQ5bar
 (-3.31,-0.972] (-0.972,-0.343]  (-0.343,0.317]   (0.317,0.792]    (0.792,2.71] 
     0.13977839      0.03281258     -0.18243804     -0.14242885     -0.01696712 

 plot(mn.foo.byQ5bar)

これはかなり標準的なタスクであり、Harrell の Hmisc パッケージのcut2関数には、グループ数の整数を指定するだけでこれを実行できる素晴らしい gr= 引数があります。また、カット操作からの間隔がRのデフォルトの右クローズではなく左クローズであるため、気に入っています。

于 2013-03-31T18:41:12.073 に答える
5

これらの行の多くを組み合わせてより簡潔なコードにすることができますが、ここでは分解しています

# Sample Data: 
x <- 1:100;   y <- rnorm(x)

# Number Of Groups
N <- 5

# quantiles
Q.y <- quantile(y, probs=seq(0, 1, length=(N+1)))
Q.x <- quantile(x, probs=seq(0, 1, length=N))

# means of y by quantile
means.y <- c(by(y, cut(y, Q.y), mean))

# plot them 
qplot(Q.x, means.y)
于 2013-03-31T18:38:02.523 に答える