我有两种类型的个体,比如M和F,每个都用六个变量描述(形成一个6D空间S)。我想确定S中的区域,其中M和F的密度最大不同。我首先尝试了将F / M与六个变量相关联的逻辑二项式模型,但这个GLM模型的结果很难解释(部分原因是由于众多重要的交互项)。因此,我正在考虑进行“空间”分析,在那里我将分别估计S中各处的M和F个体的密度,然后计算密度的差异。最后,我会手动查找密度的最大差异,并提取6个变量的值。
我发现包sm中的函数sm.density可以估算3d空间中的密度,但我找不到n> 3的空间。你能知道在R中能做到这一点吗?或者,有一个更优雅的方法来回答我的第一个问题(第二句)?
事先, 非常感谢您的帮助
答案 0 :(得分:3)
包ks
的函数kde
对尺寸范围为1到6的多项数据执行核密度估计。
pdfCluster
和np
包提出了在更高维度上执行核密度估计的函数。
答案 1 :(得分: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点和其他三个变量的中值。