【问题标题】:R code iteration bluesR 代码迭代蓝调
【发布时间】:2014-03-25 03:48:58
【问题描述】:

我对 R 很陌生,试图用它来可视化事物。简而言之,我正在探索我对公共产品经济理论的一个猜想。 (我已经 50 多岁了,请多多包涵。)

就 R 而言,我需要创建一个包含两个向量的矩阵,一个包含 E(W)/max(W),第二个向量包含 stdev(W)/E(W)。诀窍是 W 的样本空间,我的 r.v.,不断扩大 1。为了更清楚,这里是 W 的概率分布,前 4 次迭代:

Wp 0 2/3 1 1/3

Wp 0 3/6 1 2/6 2 1/6

Wp 0 4/10 1 3/10 2 2/10 3 1/10

Wp 0 5/15 1 4/15 2 3/15 3 2/15 4 1/15

...

我需要重复这个 20 次左右。当然,我可以手动完成,通过复制、粘贴,然后手动调整简单的代码,但是它太笨重而且看起来太丑了,而且我有点担心——你知道——优雅。

在这个社区的大力帮助下,我学会了如何编写 R 来生成概率的分母:

R code iteration

我(愚蠢地)以为我可以从那里拿走它,但是在挠了我的光头几个小时后,我仍然不知道如何得到我想要的东西。这是关于我不太了解如何编写不那么简单的迭代程序。 :/

我会很感激任何帮助,尤其是让我走上正轨的线索。

提前致谢!

【问题讨论】:

    标签: r iteration


    【解决方案1】:

    你只是从总和中跳出来; 1 到 k 的和为 k*(k+1)/2。所以...

    R>k <- 3
    R>k:1 / (k^2 + k)*2
    

    【讨论】:

      【解决方案2】:

      我假设您的意思是您想要一个包含 20 行左右的矩阵,每行是您的两个请求数量的值,因为分布具有 max(W) = N 值。

      t(vapply(seq_len(20) + 1, function(N) {
        W <- seq(N, 1) / (N * (N + 1) / 2) # create your distribution w/ 20 values
        E <- function(pdf) sum((seq_along(pdf) - 1) * pdf)
        c(E(W) / max(W), sqrt(E((W - E(W))^2)) / E(W))
      }, numeric(2)))
      

      【讨论】:

      • 感谢您的回复。使用您的代码,罗伯特,我没有得到我手动获得的结果(我相信)。所以我将不得不做一些工作来破译代码。我不应该说“谢谢”,但谢谢!
      • 我认为他的方差计算中可能存在错误。
      猜你喜欢
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-22
      • 2014-05-22
      相关资源
      最近更新 更多