2

我有两种类型的个体,比如 M 和 F,每一种都用六个变量来描述(形成一个 6D 空间 S)。我想确定 S 中 M 和 F 的密度差异最大的区域。我首先尝试了一个逻辑二项式模型,将 F/M 与六个变量联系起来,但这个 GLM 模型的结果很难解释(部分原因是有许多重要的交互项)。因此,我正在考虑进行“空间”分析,在该分析中,我将分别估计 S 中各处 M 和 F 个体的密度,然后计算密度差异。最终我会手动寻找最大的密度差异,并提取 6 个变量的值。

我在包 sm 中找到了可以估计 3d 空间中的密度的函数 sm.density,但对于 n>3 的空间,我一无所获。你知道在 R 中能做到这一点的东西吗?或者,是否有更优雅的方法来回答我的第一个问题(第二句)?

提前,非常感谢您的帮助

4

2 回答 2

3

kde该包的功能对ks维度范围从 1 到 6 的多项数据执行核密度估计。

pdfClusternp包提出了在更高维度上执行核密度估计的函数。

如果您更喜欢参数技术,您可以查看 R 包进行高斯混合估计,如mclustor mixtools

于 2014-06-11T09:23:53.873 回答
2

使用 GLM 模型执行此操作的能力可能会受到您已经遇到的可解释性问题以及数值稳定性问题的限制。此外,您没有描述 GLM 模型,因此无法查看您是否考虑了非线性。如果您有大量数据,您可以考虑使用 2D 交叉样条项。(这些并不是真正的密度估计。)如果我对 rms/Hmisc 包中的设施进行五个维度的初步探索,它可能看起来像:

  library(rms)
  dd <- datadist(dat)
  options(datadist="dd")

  big.mod <- lrm( MF ~ ( rcs(var1, 3) +    # `lrm` is logistic regression in rms
                         rcs(var2, 3) +
                         rcs(var3, 3) +
                         rcs(var4, 3) +
                         rcs(var5, 3) )^2,# all 2way interactions
                    data=dat,
                    max.iter=50) # these fits may take longer times
   bplot( Predict(bid.mod, var1,var2, n=10) )

这应该显示 var1 和 var2 的同时函数形式对“5 维”模型估计的贡献分别为 10 个点和其他三个变量的中值。

于 2012-05-08T15:39:55.523 回答