【问题标题】:Stata: "Weighted" uniform distribution (loaded dice)Stata:“加权”均匀分布(加载骰子)
【发布时间】:2017-08-28 10:30:21
【问题描述】:

我正在 Stata 中进行一些模拟,以解决缺少出生日期数据的问题。

目前我正在 [1, 365] 区间内生成随机出生日期:

gen BD = ceil(runiform()*365)

我希望 11 月和 12 月的生日频率(区间 [305, 365])比其余月份低 95%。

知道如何在 Stata 中实现这一点吗?

【问题讨论】:

    标签: stata distribution


    【解决方案1】:

    好像

    tempname magic 
    scalar `magic' = (61 * 0.05) / (304 + 61 * 0.05) 
    gen BD = cond(runiform() <= `magic', ceil(304 + 61 * runiform()), ceil(304 * runiform())) 
    

    这是一个最小的测试脚本:

    clear 
    set obs 100000
    tempname magic 
    scalar `magic' = (61 * 0.05) / (304 + 61 * 0.05) 
    gen BD = cond(runiform() <= `magic', ceil(304 + 61 * runiform()), ceil(304 * runiform())) 
    spikeplot BD 
    

    【讨论】:

    • 一个我找不到的非常优雅的解决方案。从结果来看,我认为当“低于 5%”(相当于“95%”)是预期的结果时,OP 将要求错误地表述为“低于 95%”。我只是认为 2 月和 3 月的受孕机会不会下降那么多。
    • @WilliamLisowski 确实如此。我做了三倍的降低了 95%,但我相信他们的话。应该很容易看到原理并更改常数。
    • 没错,我实际上错误地陈述了要求。我需要的是剩下几个月的“95%”。无论如何,这个解决方案就像一个魅力。
    猜你喜欢
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多