0

情况如下:

我想将直方图描述为几个分布的总和,从而将这些分布拟合到该直方图上。在 ROOT/C++ 中这很明显,但我在 R 中寻找等价物。这是一个不言自明的示例:

## SUM OF TWO GAUSSIANS OF DIFFERENT WIDTHS
x=rnorm(n=1000,mean=0,sd=1)
y=rnorm(n=1000,mean=0,sd=3)
z=append(x,y)
b=seq(-10,10,by=0.25)
hist(z,breaks=b)

在这种情况下,单个贡献 (x) 和 (y) 是已知的,我可以使用内核提取它们的密度曲线:

## NARROW GAUSSIAN
hist(x,prob=T,breaks=b)
dx=density(x,ker="epan")
lines(dx,col=3,lwd=2)

## WIDE GAUSSIAN
hist(y,prob=T,breaks=b)
dy=density(y,ker="epan")
lines(dy,col=2,lwd=2)

我想做类似 z~dx+dy 的事情

其中 dx 和 dy 的分数将是要拟合的参数。查看 R 文档,我只发现了对单一回归和平滑的引用。

有没有人有线索或同情的联系?

在此先感谢,X。

4

1 回答 1

0

我找到了一种方法,但忽略了内核:

x=rnorm(n=10000,mean=0,sd=1)
y=rnorm(n=10000,mean=0,sd=3)
z=append(x,y)
x=subset(x,abs(x)<=10)
y=subset(y,abs(y)<=10)
z=subset(z,abs(z)<=10)
hx=hist(x,prob=T,breaks=b)
hy=hist(y,prob=T,breaks=b)
hz=hist(z,prob=T,breaks=b)

lm(公式=as.formula(hz$intensities~hx$intensities+hy$intensities))

调用: lm(formula = as.formula(hz$intensities ~ hx$intensities + hy$intensities))

系数:(截距)hx$intensities hy$intensities
4.344e-17 5.002e-01 4.998e-01

这假设模板直方图是可靠的(足够的条目,相关的分箱)。同时,我将进一步研究如何将其应用于内核的拟合,因为 lm(formula=as.formula(hz$intensities~dx$y+dy$y)) lm(formula=as.formula(z ~dx$y+dy$y)) 最终出现错误:可变长度不同(为 'dx$y' 找到)

因为内核是根据完整集 (x) 而不是直方图 hx 估计的。

谢谢,马萨诸塞州的问候!

于 2013-11-06T10:58:38.903 回答