如何自动生成不同分布类型的随机样本?假设我有一个 5 行 2 列的表格。 第一列用于分布类型(例如正态、对数正态、威布尔等),第二列用于相应参数。 我想创建一个 for 循环,为 5 行中的每一行创建一个新的数据表,其中在该新数据表中,将添加一个新列,并根据行的参数使用随机采样函数。
例如第 1 行 --> 正常,(0.1,0.02);创建一个新数据表,其中一列的公式为
randomnormal(0.1,0.02)
我当前的挑战是不同的分布类型需要不同数量的参数。 感谢一些关于我应该如何处理这个问题的见解。
质量和工艺工程回复:如何自动从不同分布类型生成随机样本?吉姆,它有效! 谢谢
回复:如何自动从不同分布类型生成随机样本?你好,
对于区分大小写的问题,解决方法如下:
Match( Uppercase( :Distribution ),
"NORMAL", Random Normal( :Parameter 1, :Parameter 2 ),
"LOGNORMAL", Random Lognormal( :Parameter 1, :Parameter 2 ),
.
)
关于限制列数,我会回复您,因为它有点棘手。
最好的,
TS
回复:如何自动从不同分布类型生成随机样本?谢谢蒂埃里,如果我想限制参数的列数,有什么建议吗?
我的另一个担忧是,我相信 Match() 公式区分大小写。 我可以尝试通过在列上放置列表检查来控制这一点。 还有其他方法可以控制/管理吗?
回复:如何自动从不同分布类型生成随机样本?这是一个简单的示例,说明如何执行您的请求
Names Default To Here( 1 );
dt = New Table( "Sample",
Add Rows( 5 ),
New Column( "Types",
Character,
Set Values(
{"Normal", "Lognormal", "Weibull", "Uniform", "Johnson Su"}
),
Set Display Width( 79 )
),
New Column( "Parameters",
Character,
Set Values(
{"(0.1,0.02)", "(0.2,.005)", "(0.3,0.005)", "(0.1,0.5)",
"(0.5, 1, 1, 1)"}
),
Set Display Width( 101 )
)
);
For( i = 1, i <= N Rows( dt ), i++,
Eval(
Substitute(
Expr(
New Table( dt:Types[i],
add rows( 20 ),
New Column( "Random " || dt:Types[i],
set each value( __formula__ )
)
)
),
Expr( __formula__ ),
Parse( "Random " || dt:Types[i] || dt:Parameters[i] )
)
)
);
请花时间完全理解该脚本的工作原理,如果您不理解,请回复,以便社区为您提供可能需要的其他信息。
回复:如何自动从不同分布类型生成随机样本?你好,
一些想法:
1)如果可能的话,我会将参数拆分为各列,以使公式的脚本编写更容易
2)我会使用MATCH公式来查找分布的名称,并专门为相应的分布调用Random函数
Match( :Distribution,
"Normal", Random Normal( :Parameter 1, :Parameter 2 ),
"LogNormal", Random Lognormal( :Parameter 1, :Parameter 2 ),
.
)