【问题标题】:Maximum and minimum densities of rnorm given means and standard deviations给定均值和标准差的 rnorm 的最大和最小密度
【发布时间】:2012-04-30 22:32:43
【问题描述】:

我有这样的数据。 我想找到最大和最小密度 给定标准差列表 (SD) 和平均值 (MEAN) 如下:

info0 info1 info2 SD Mean
10x     0       e0      0.38    1.14
10x     0       e2      0.74    1.48
10x     0       e4      1       1.85
10x     0       e6      1.24    2.27
10x     0.1     e0      0.35    1.13
10x     0.1     e2      0.69    1.44
10x     0.1     e4      0.96    1.82
10x     0.1     e6      1.21    2.23
10x     0.5     e0      0.34    1.12
10x     0.5     e2      0.67    1.4
10x     0.5     e4      0.95    1.75
10x     0.5     e6      1.19    2.17
10x     1       e0      0.29    1.09
10x     1       e2      0.59    1.32
10x     1       e4      0.87    1.66
10x     1       e6      1.11    2.06
10x     2       e0      0.23    1.06
10x     2       e2      0.5     1.24
10x     2       e4      0.79    1.54
10x     2       e6      1.04    1.9
10x     4       e0      0.22    1.0.5
10x     4       e2      0.41    1.15
10x     4       e4      0.65    1.37
10x     4       e6      0.91    1.7

我试过了,但失败了。

dat <- read.table("test.dat", header = TRUE)
densities <- apply(dat[, 4:5], 1, function(x) rnorm(n = 1000000, mean = x[2], sd = x[1]))

maxden <- max(densities)
minden  <- min(densities)

正确的做法是什么?

【问题讨论】:

  • 什么的最小和最大密度?你能提供更多的上下文吗?给定具有指定均值和 sd 的正态分布,最大 probability 密度为 1/sqrt(2*pisigma^2) ,但我认为这不是您正在寻找的为了。最大和最小 *possible 值是 +/- 无穷大。可以计算 N 个随机正态偏差样本中的最大值和最小值,但在很大程度上取决于 N ...极值理论将帮助您获得样本中的最大值和最小值 预期大小 N ...您要解决什么问题?
  • 我猜问题是手段是一个因素是你拥有的 1.0.5。
  • 现在想想,我不应该这么仓促回答。它在哪里失败,错误信息是什么?

标签: r plot


【解决方案1】:

我先建议大家不要对rnorm中这么庞大的数据集和这么多的n进行操作。这使得在代码中抛出browser 并弄清楚发生了什么变得很容易。首先,数据中的平均值是一个因素,因为您对格式做了一些事情。

 str(dat)
'data.frame':   24 obs. of  5 variables:
 $ info0: Factor w/ 1 level "10x": 1 1 1 1 1 1 1 1 1 1 ...
 $ info1: num  0 0 0 0 0.1 0.1 0.1 0.1 0.5 0.5 ...
 $ info2: Factor w/ 4 levels "e0","e2","e4",..: 1 2 3 4 1 2 3 4 1 2 ...
 $ SD   : num  0.38 0.74 1 1.24 0.35 0.69 0.96 1.21 0.34 0.67 ...
 $ Mean : Factor w/ 24 levels "1.0.5","1.06",..: 6 13 19 24 5 12 18 23 4 11 ...

这必须在代码中解决。

现在我们可以看到使用代码来获得我们想要的东西(您必须在实际使用时调整 rnorm 中的 n 并为代码提供更多行,但出于测试目的,这是理想的):

densities <- apply(dat[1:10, 4:5], 1, function(x) {
        rnorm(n = 10, mean = as.numeric(x[2]), sd = as.numeric(x[1]))
    }
)

【讨论】:

  • 我认为 OP 然后要求 apply(densities,2,range),但我不确定答案的含义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-11
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 2020-08-30
  • 2020-02-11
  • 2012-08-16
相关资源
最近更新 更多