假设我们有使用密度()函数创建了两个对象。有没有一种方法来添加这两个对象再弄密度(或类似)的对象?
例如:
A = rnorm(100)
B = rnorm(1000)
dA = density(A)
dB = density(B)
dC = density(c(A, B))
有没有办法让来自DA和DB对象DC对象?和操作的一些王?
从density
的返回与这些部件列表:
> str(dA)
List of 7
$ x : num [1:512] -3.67 -3.66 -3.65 -3.64 -3.63 ...
$ y : num [1:512] 0.00209 0.00222 0.00237 0.00252 0.00268 ...
$ bw : num 0.536
$ n : int 4
$ call : language density.default(x = A)
$ data.name: chr "A"
$ has.na : logi FALSE
- attr(*, "class")= chr "density"
注意原始数据是不是在那里,所以我们不能拿到,只是这样做dAB = density(c(dA$data, dB$data))
。
该x
和y
部件形成密度,您可以用plot(dA$x, dA$y)
绘制的曲线。你可能会认为你需要做的是从两个y
对象添加density
值,但不能保证他们会在同一x
点。
因此,也许你认为你可以插一个相同的x
点,然后添加y
值。但是,这不会集成到1像一个适当的密度应该,所以你应该做的是根据点的每个组件密度分数规模dA$y
和dB$y
- 你可以从dA$n
组件获得。
如果你不明白,最后一点,考虑以下两个密度,一个从1000点和一个10:
dA = density(runif(1000))
dB = density(runif(500)+10)
第一个是在0和1之间的均匀,第二10和11两者的制服的高度为1,以及它们的范围不重叠,因此,如果它们加入你会得到相等的高度的两个步骤之间的均匀。但他们的工会密度:
dAB = density(c(runif(1000), runif(500)+10))
是具有0和1之间的两倍质量比10和11之间。当添加从样品取出密度你由样本大小需要重量的密度。
所以,如果你可以把它们插在同一x
值,再总结根据y
值的权重比例的n
值,你可以得到的东西,会接近density(c(A,B))
。