我有一些数据涉及具有X-Y坐标的许多不同位置的成功/失败变量(两者之间的整数在大约0和80之间)。我想模拟任何特定位置的预期概率。我可以使用plyr轻松地做到这一点:
sucProp <- ddply(df, .(xcrd,ycrd), function(x) data.frame(obs=nrow(x),prop=mean(x$success)))
这给了我每个坐标成功的比例。由于一点的成功率应该与附近点的成功率相近,我想知道如何在X和Y方向上最好地取得+ + -5范围内所有点的平均成功。
所以(25,50)点将取所有观测值的平均值(20-30,45-55)。
最好的方法是什么?我可以直接将其输入到ddply中的.variables中吗?还是我必须编制某种滚动索引?
答案 0 :(得分:0)
你必须做出各种各样的滚动。这是用sapply做的一种方法:
data.frame(
x = rnorm(10, 40, 5),
y = rnorm(10, 50, 7),
success = rbinom(10, 1, .4)) -> ff
newmean <- function(q) {
ff[q,"x"] + 5 -> a
ff[q,"x"] - 5 -> b
ff[q,"y"] + 5 -> c
ff[q,"y"] - 5 -> d
ff[ff$x < a & ff$x >b & ff$y < c & ff$y > d, "success"] -> k
mean(k)
}
sapply(X = 1:nrow(ff), newmean) -> ff$neighborhood_prob