首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从模拟变量中求出均值和间隔

从模拟变量中求出均值和间隔
EN

Stack Overflow用户
提问于 2020-09-02 18:58:20
回答 1查看 60关注 0票数 0

我有这样的数据集:

代码语言:javascript
复制
library(data.table)
library(EnvStats)
library(bayestestR)

DT <- data.table(MEAN = c(0.5,0.7,0.9),MIN = c(0.4,0.6,0.8),MAX = c(0.6,0.8,1),REF = rnorm(3,1000,200))

我使用vars MEANMINMAX的模拟值计算变量。

代码语言:javascript
复制
DT[,Sim_rtri := list(REF*(1+rtri(n = 1000,min = MIN,max = MAX,mode = MEAN)))]

但是,对于每一行,我都得到相同的值​​,尽管我需要模拟来获取每一行的值​​。我该怎么做?

而且,我想让两个var使用,一个是var Sim_rtri的平均值,另一个是这个var的间隔,我尝试了如下:

代码语言:javascript
复制
DT[,Mean_Sim_rtri := mean(Sim_rtri)]
DT[,Int_Sim_rtri := ci(Sim_rtri, method = "ETI",ci = .95)]

但我从中得到了错误。我还能做什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-02 20:48:30

当您没有分配第一行代码时,情况会变得更清楚:

代码语言:javascript
复制
set.seed(42)
DT <- data.table(MEAN = c(0.5,0.7,0.9),MIN = c(0.4,0.6,0.8),MAX = c(0.6,0.8,1),REF = rnorm(3,1000,200))
DT[,list(REF*(1+rtri(n = 1000,min = MIN,max = MAX,mode = MEAN)))]
            V1
   1: 1946.223
   2: 1465.333
   3: 2056.410
   4: 1940.845
   5: 1504.171
  ---         
 996: 1968.724
 997: 1962.222
 998: 1511.566
 999: 2037.884
1000: 1810.734
Warning message:
In REF * (1 + rtri(n = 1000, min = MIN, max = MAX, mode = MEAN)) :
  longer object length is not a multiple of shorter object length

它创建一个长度为1000的列表,而不是3个列表列(每个1000),因为它正在回收来自data.table的值(注意V1的一般模式是~1900...1500...2000 )。无论如何,可能有一种更惯用的/data.table方法来解决这个问题,但是使用Map()是否更符合您预期的结果呢?

代码语言:javascript
复制
set.seed(42)
DT <- data.table(MEAN = c(0.5,0.7,0.9),MIN = c(0.4,0.6,0.8),MAX = c(0.6,0.8,1),REF = rnorm(3,1000,200))
DT[, Sim_rtri := Map(function(w, x, y, z) w*(1+rtri(n = 1000,min = x,max = y,mode = z)), REF, MIN, MAX, MEAN)]
DT[, Mean_Sim_rtri := sapply(Sim_rtri, mean)]
DT[, Int_Sim_rtri := lapply(Sim_rtri, ci, method = "ETI",ci = .95)]

DT
   MEAN MIN MAX       REF                                                  Sim_rtri Mean_Sim_rtri     Int_Sim_rtri
1:  0.5 0.4 0.6 1274.1917 1946.223,1849.996,1933.170,1940.845,1905.784,1943.204,...      1908.901 <bayestestR_eti>
2:  0.7 0.6 0.8  887.0604 1512.938,1530.315,1480.203,1542.298,1500.740,1513.961,...      1507.717 <bayestestR_eti>
3:  0.9 0.8 1.0 1072.6257 2055.113,2085.123,1991.335,2022.209,2010.288,1984.313,...      2038.466 <bayestestR_eti>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63711978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档