定量风险评估模型
Posted
技术标签:
【中文标题】定量风险评估模型【英文标题】:Quantitative risk assessment model 【发布时间】:2013-01-08 06:53:50 【问题描述】:N=1000
alpha=0.1
zerosandones = rbinom(N, 1,alpha)
vector1=sample(c("raw","cooked"),1000,T,prob=c(0.12,.88))
vector1
densf=NULL
densft=NULL
for (i in (1:N))
if (zerosandones[i]==1 && vector1[i]=="raw") densf[i] = 1
else if(zerosandones[i]==1 && vector1[i]=="cooked") densft[i] <- rbinom(1, 1,alpha*0.2)
else if (zerosandones[i]==0 && vector1[i]=="raw") densf[i]=0
else if (zerosandones[i]==0 && vector1[i]=="cooked") densft[i]=0
densft
densf
大家好,
我是 R 新手,正在构建。简单地说,这里的想法是我们生成一个 1000 个 0 和 1 的样本,每个 0,1 都有一个生/熟相关联。所有 0 都被丢弃,我们进一步分析 1。因此,例如,如果有一个 1 并且它的 raw 那么新的 densf 应该等于 1 否则 0。类似地,如果有一个 1 并且它的熟的那么新的 densft 应该等于 1(基于二项式 rv 与在上述情况下 alpha 为 0.02,否则为 0。
也就是说,我需要一些帮助,因为“densf”和“densft”会产生一堆 NaN
值,将 0 和 1 放在错误的位置。请帮忙!
【问题讨论】:
【参考方案1】:这是一个有效的矢量化解决方案:
N=1000
alpha=0.1
zerosandones = rbinom(N, 1,alpha)
vector1=sample(c("raw","cooked"),1000,T,prob=c(0.12,.88))
# new code:
densf <- as.integer(zerosandones & vector1 == "raw")
densft <- (zerosandones & vector1 == "cooked") * rbinom(N, 1, alpha*0.2)
【讨论】:
【参考方案2】:学习 R 编程时最重要的事情之一是考虑向量运算而不是循环。您在两个向量中得到NA
s(与R 中的NaN
不同),因为您没有填充所有位置:您只是在densf
中填充有"raw"
的位置,和densft
中的位置,您拥有"cooked"
。你想让 R 用什么来填充其余的空间? NA
是默认值,但如果需要,您可以用其他内容(例如零)填充它们。这就是我在下面所做的。
# your code
N=1000
alpha=0.1
zerosandones = rbinom(N, 1,alpha)
vector1=sample(c("raw","cooked"),1000,T,prob=c(0.12,.88))
# my code
densf <- ifelse(zerosandones == 1 & vector1 == "raw", 1, 0)
densft <- ifelse(zerosandones == 0 & vector1 == "raw", rbinom(N, 1,alpha*0.2), 0)
注意事项:
ifelse
的使用,它是if
的矢量化形式。
&
的使用,它是&&
的矢量化形式。
没有循环! R中的循环很慢。考虑向量需要一些调整,但几乎总是更好。
当我运行这个时,我在densf
中得到了 12 个,在 densft
中得到了 3 个,这与我的预期差不多。如果这不是您所期望的,那么您需要更好地解释您在这里尝试做什么以及为什么您期望有所不同。
【讨论】:
非常感谢。如果我可以问。我实际上必须为从 0.2 到 0.9 的一串值生成 densft。你有关于我应该如何去做的提示吗?还是我每次都必须将 0.2 更改为 0.25、0.3 等...? R 中的循环通常并不慢。在它们中完成的操作可能会很慢,尤其是如果您犯了增长对象或子集 data.frames 的错误。当然,矢量化解决方案仍然更好。 @user2007598 您可以编写一个计算 densft 的函数,然后多次调用该函数。densft
中条目的分布很容易通过分析找到 - 用笔和纸做这可能比通过模拟更容易。以上是关于定量风险评估模型的主要内容,如果未能解决你的问题,请参考以下文章
SPECT/CT诊疗一体化定量技术前沿进展复旦大学附属肿瘤医院开展转移性去势抵抗性前列腺癌(mCRPC)新型激素治疗疗效评估