【问题标题】:Is it possible to calculate or find out what the original distribution was of a dataset? [duplicate]是否可以计算或找出数据集的原始分布? [复制]
【发布时间】:2022-01-02 14:45:55
【问题描述】:

是否可以计算或找出数据集的原始分布?

例如:我有(部分)具有 800 个权重的数据集,并且我知道原始数据集包含 1000 个权重,并且从我拥有的数据集中排除了 20% 的最重权重。

我想知道在数学上是否可以找到原始分布 完整的数据集?如果这是可能的,可以使用哪个数学或统计公式?或者是否有可以在 R 中执行此操作的包或函数?

【问题讨论】:

  • 一般不会,除非您愿意对丢失的数据做出一些假设,否则会很危险。
  • 感谢您的回答。我将假设我的数据是正态分布的(基于其他作者的理论)。
  • 这听起来很像截断。如果知道截止值(例如最重的非排除单元的权重),则非截断分布的矩具有封闭形式的解。看看en.wikipedia.org/wiki/Truncated_normal_distribution
  • 请在我们的网站上搜索关键字maximum likelihood truncation normal。副本是第一个命中,但我相信许多其他命中都有有用的信息。可以说,这些是 censored 数据——这取决于如何确定数据集截止值——在这种情况下,stats.stackexchange.com/questions/354671/… 提供了解决方案。

标签: r distributions truncation truncated-normal-distribution


【解决方案1】:

如果您可以安全地假设您的基础数据是normally distributed,那么as Otto Kässi writes,您就有一个truncated normal distribution。如果您知道它在哪里被截断,这很好(并且在截断点以下有 800 个数据点,简单地使用最大观测值可能是一个足够好的估计,这里的任何不确定性都会可能受正态假设中的不确定性支配)。

有一些 R 包可以处理截断的法线(例如,truncnormTruncatedNormal),但它们只提供密度、随机生成等。原则上您可以尝试 fitdistrplus::fitdist()distr="truncnorm",但以下代码会导致我的 R (see also here) 崩溃:

library(truncnorm)
library(fitdistrplus)
data <- c(35,12,10.5,9,8.8,8.5,7.8,7.2,6.8,6.5,6.2,6,5.8,5.5,5.2,5.1)
fitdist(data, "truncnorm", fix.arg=list(a=5),
    start = list(mean = mean(data), sd = sd(data)))

另一种选择是Crain (1979),根据摘要听起来很有希望,但不幸的是我无法访问。

Estimating mean and st dev of a truncated gaussian curve without spike 提供了更多可能性。

【讨论】:

    【解决方案2】:

    你可以试试蒙特卡洛模拟:

    • 使用您知道的属性生成大量数据集(最初是正常的,截断 20%,您知道或可以合理假设的任何其他内容?)
    • 使用一些拟合优度度量将这些数据集与给定的数据集进行比较(您可以从简单的绘图和观察开始)

    在截断之前关注您对原始数据集的了解。被测量的潜在现象是什么? (例如,如果它是大量随机事件的总和,无论它们的分布如何,根据中心极限定理,总和总是正态的。)

    【讨论】:

      猜你喜欢
      • 2016-08-10
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 2017-01-15
      • 2021-12-10
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多