匹配建模数据集的分布与观察数据集的分布?

时间:2017-08-13 19:47:54

标签: r

我有两个数据集。让我们假设它们看起来像这样简单:

observed <- data.frame(name = c("Jenny", "Mark", "James", "Amber", "Jamie"),
                   height = c(68, 69, 72, 63, 77), 
                   mood = c("content", "content", "melancholy", "happy", "melancholy"))
modeled <- data.frame(name = c("Alex", "Jimmy", "Sal", "Evelyn", "Maria", "George", "Hilary", "Donny", "Jose", "Luke", "Leia"),
                  height = c(74, 71, 68, 66, 80, 59, 67, 67, 69, 65, 72), 
                  mood = c("content", "content", "melancholy", "happy", "melancholy","content", "content", "melancholy", "happy", "melancholy", "happy"))

我想从建模中选择行,使得建模的$高度的分布尽可能接近观察到的$高度的分布。我需要保持行完整,而不是简单地匹配高度整数的分布。任何见解都会非常感激。

1 个答案:

答案 0 :(得分:1)

这是非常特别的,肯定有更好的方法,但这里有一个:

viewer.setLightPreset(4);
viewer.setQualityLevel(false, false);
viewer.setGhosting(true);
viewer.setGroundShadow(true);
viewer.setGroundReflection(true);
viewer.setEnvMapBackground(false);
viewer.setProgressiveRendering(true);

在我们做任何事之前,这是他们的样子:

my_sample <- dplyr::sample_n(modeled, nrow(observed))

enter image description here

然后我们选择一个更相似的样本:

plot(density(observed$height))
lines(density(my_sample$height), col = "red")

然后这是它的样子:

while(cor(observed$height, my_sample$height) < .99){
  my_sample <- dplyr::sample_n(modeled, nrow(observed))
}

enter image description here

随着更大的数据集,它们应该更加相似,其他条件不变。

你甚至可以稍微进一步(或者至少尝试一下,看看建模数据是否有足够的变化来解决这个问题):

plot(density(observed$height))
lines(density(my_sample$height), col = "red")

现在,您可能遇到的一个问题是,您想要的建模样本是否必须包含比原始数据集更多的行。解决这个问题的一种方法是使用不需要样本长度的均值和/或其他汇总统计数据。另一种方法是使用样本的样本,或者从建模数据集的块中获取多个相关性。