使用现有数据和概率模拟数据

时间:2017-03-15 21:08:21

标签: r machine-learning probability distribution bayesian

我测量了一个城市约1500棵树的多个属性(高度,种类,树冠宽度,条件等)。使用遥感技术,我还拥有该市其他9000棵树的高度。我想通过使用它们的高度来模拟/生成/估计这些未测量树的缺失属性。

根据测量数据,我可以获得测量种群中每个物种的比例(因此粗略概率),每个物种的高度分布,物种的高度 - 冠宽度关系,物种 - 条件关系等。我想使用未测量树木的高度数据来首先估计物种,然后使用概率理论估计其余属性。因此,对于25米的高度,它更可能是雪松(高度范围5 - 30米)而不是桑树(高度范围2-8米),更可能是雪松(50%的人口)而不是橡木(相同的高度范围,但人口的2%),因此冠宽为10米,健康状况为95%(根据我的测量数据中的雪松分布)。但是我也期待其他一些25米的树木被给予橡木,根据人口比例的比例,不如雪松那么频繁。

有没有办法在R中使用概率论优先使用贝叶斯或机器学习方法?

我不是要求有人为我编写代码 - 我对R很有经验。我只是想指出正确的方向,即一个整齐地做这种事情的包。

谢谢!

3 个答案:

答案 0 :(得分:1)

因为您想要预测分类变量,即物种,您应该考虑使用树回归,这种方法可以在R包rpart和RandomForest中找到。当您拥有离散数量的类别时,这些模型表现优异,您需要将观察结果插入到这些类别中。我认为这些包可以在您的应用程序中使用。作为比较,您还可以查看多项回归(mnlogit,nnet,maxent),它也可以预测分类结果;不幸的是,多项回归可能会因大量结果和/或大数据集而变得难以处理。

如果您想预测物种中单个树木的个体价值,首先在测量的树木上运行所有测量变量(包括物种类型)的回归。然后获取您预测的分类标签,并预测未测量树的样本外,其中您使用分类标签作为未测量的感兴趣变量(例如树高)的预测变量。这样,回归将预测该物种/虚拟变量的平均高度,加上一些错误,并将您在该样本外树上的任何其他信息合并。

如果要使用贝叶斯方法,可以考虑使用分层回归来对这些样本外预测进行建模。有时层次模型在预测方面做得更好,因为它们往往相当保守。考虑一下Rarcarm软件包的一些例子。

答案 1 :(得分:0)

我建议你通过随机变量查看表CPD的贝叶斯网络。这是一个生成模型,可以处理缺失的数据,并对变量之间的偶然关系进行推理。贝叶斯网络结构可以手工指定,也可以通过算法从数据中学习。

R有几个贝叶斯网络的实现,其中bnlearn就是其中之一:http://www.bnlearn.com/

请在此处查看有关如何使用它的教程:https://www.r-bloggers.com/bayesian-network-in-r-introduction/

答案 2 :(得分:0)

对于每个物种,其他变量(高度,宽度,条件)的分布可能是一个相当简单的碰撞。您可以将高度和宽度建模为联合高斯分布;关于状况的dunno。无论如何,对物种以外的变量进行联合分布,您可以构建所有那些物种间碰撞的混合分布,混合权重等于可用数据中每个物种的比例。给定高度,您可以找到以高度为条件的其他变量的条件分布(并且它也将是混合分布)。给定条件混合,您可以照常采样:选择频率等于其混合重量的凸起,然后从选定的凸起进行采样。

听起来像个问题。祝你好运,玩得开心。