我在尝试使用插值基于简单的点图生成一个能够干净地产生均值(特别是加权平均值)的代码时遇到了问题。
例如;
ex=c(1,2,3,4,5)
why=c(2,5,9,15,24)
这显示了我正在使用的信息类型。
plot(ex, why, type="o")
此时,我希望实际上有每个点" binned"所以它们之间的线条笔直。为此,我一直在excel中手动添加x值作为(x + 0.01)。 这是新的输出:
why=c(2,2,5,5,9,9,15,15,24,24)
ex=c(1,2,2.01,3,3.01,4,4.01,5,5.01,6)
plot(ex, why, type="o")
所以这就是我的问题所在。我必须多次这样做,并且不想生成大量新的矢量和对象。为了获得加权平均值,我一直在使用插值到新对象中插入x的增量为0.01的y值。然后,当一个点落在实际的ex值之间时,我就可以进入这个新对象并得到一个平均值,即
mean(newy[1:245])
因为我为x的100个增量创建了新的y值(基本上)遵循一条直线,所以我在这里得到加权平均值x = 1到2.45。
是否有更简单,更优雅的方法将插值代码嵌入到平均代码中,因此我可以说"非真实x的插值y的平均值为非真实x?"
答案 0 :(得分:1)
它并没有完全符合您的要求,但您应该考虑v=spf1 a:app30.absorbstaging.com ~all
函数 - 这会创建两个系列中的步进函数。
stepfun
plot(stepfun(ex[-1], why))
非常方便,因为它为您提供了在该时间间隔内定义的函数,因此您可以通过在任何地方进行评估来轻松进行插值。它的缺点是它没有严格定义给定的范围(这就是为什么我们必须切断stepfun
中的第一个值。)
答案 1 :(得分:0)