DOE,平衡定制设计你好社区,
我正在尝试根据 2 个因素进行平衡的 DOE 设计:A 为 3 个级别,B 为 31 个级别。 我希望我的因素 B 被复制约 1.41 次(因素 B 的 31 个水平在因素 A 的每个水平上进行测试,其中 13 个水平在因素 A 的每个水平上测试两次)。
我希望 DOE 平台为我设计一个实验,让我的因子 A 的每个水平都有相同的运行次数(并且我的因子 B 也或多或少平衡)。 因此,我要求自定义运行次数为 132(因子 A 的每个级别 44 次运行)。 但不幸的是,我无法获得平衡:对于因子 A 的每个级别,我都有 43 /44 /45 次运行。 可能不太清楚,希望代码能有所帮助。
lstA = {"L1","L2" , "L3"};
lstB= {"V1_0", "V1_1", "V1_2", "V1_3", "V1_4", "V1_5", "V1_6", "V1_7", "V1_8", "V1_9",
"V1_10", "V1_11", "V1_12", "V1_13", "V1_14", "V1_15", "V1_16", "V1_17", "V1_18",
"V1_19", "V1_20", "V1_21", "V1_22", "V1_23", "V1_24", "V1_25", "V1_26", "V1_27",
"V1_28", "V1_29", "V1_30"};
eval(parse("DOE1 =
DOE(
Custom Design,
{ Add Factor( Categorical, "||char(lstA )||", \!"A\!", 0 ),
Add Factor( Categorical,"|| char(lstB)||", \!"B\!", 0 ),
//Set Random Seed( seed1 ),
Set Sample Size( "||char( 132)||" )}
);"));
DOE1<< Make Design;
DT_DOE= DOE1<< Make Table();
DOE1<<CLOSE window=""></CLOSE>当我的因子 A 水平更高时,这一切运行得非常顺利。我猜3级有点低,但似乎仍然可以做点什么。 可能有一个选项我忘记了。
欢迎任何帮助!
预先非常感谢
(适用于 JMP 14.1.0 64 位)
消费者和市场研究实验设计回复:DOE,平衡定制设计你好大卫
我知道我对平衡的要求可能不是统计上最好的,但这是我无法逃避的技术限制:\此外,我检查了性能(最优性/功率...)看起来真的很接近。 也感谢您的阅读推荐,我会看看。
回复:DOE,平衡定制设计我来这个帖子有点晚了,有一些有趣的解决方案。 但是,我想知道您是否只是将最优标准更改为别名最优。 该优化标准通常会尽可能地平衡事物。 这是我采用这种方法时的一个脚本,它似乎有效。
DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ),
Add Factor( Categorical, {"L1", "L2", "L3"}, "A", 0 ),
Add Factor(
Categorical,
{"V1_0", "V1_1", "V1_2", "V1_3", "V1_4", "V1_5", "V1_6", "V1_7", "V1_8",
"V1_9", "V1_10", "V1_11", "V1_12", "V1_13", "V1_14", "V1_15", "V1_16",
"V1_17", "V1_18", "V1_19", "V1_20", "V1_21", "V1_22", "V1_23", "V1_24",
"V1_25", "V1_26", "V1_27", "V1_28", "V1_29", "V1_30"},
"B",
0
), Set Random Seed( 1127601240 ), Number of Starts( 3796 ), Add Term( {1, 0} ),
Add Term( {1, 1} ), Add Term( {2, 1} ), Add Term( {1, 1}, {2, 1} ),
Set Sample Size( 132 ), Optimality Criterion( Make Alias Optimal Design ),
Simulate Responses( 0 ), Save X Matrix( 0 ), Make Design}
)回复:DOE,平衡定制设计我选择了 for 循环,以免陷入无限循环,因为可能存在 DOE 定义,我们无法找到解决方案。 然后我们就有了一个端点。
回复:DOE,平衡定制设计那是个很好的观点 !
我可能使用“while”循环而不是经典的“if”,但我喜欢你的解决方案,谢谢!
回复:DOE,平衡定制设计你好@johanna_younous ,“并非总是”意味着 JMP 的解决方案可以满足您的要求。 那么为什么不让 JMP 尝试直到设计达到平衡。
请参阅下面脚本中的循环。 这比手动更改因素要好。 尝试了几百次,我发现设计在超过一半的尝试中是平衡的。 所以下面的循环应该总能为您提供解决方案。
Names Default To Here( 1 );
dt_sum = New Table( "DOE designs",
New Column( "Balanced", "Character", formula( If( :L1 == L2 == L3, "y", "n" ) ) ),
New Column( "L1", "Continuous" ),
New Column( "L2", "Continuous" ),
New Column( "L3", "Continuous" )
);
done = 0;
For( i = 1, (i <= 100) & !done, i++,
doe_obj = DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ), Add Factor( Categorical, {"L1", "L2", "L3"}, "X1", 0 ), Add Factor(
Categorical,
{"V1_0", "V1_1", "V1_2", "V1_3", "V1_4", "V1_5", "V1_6", "V1_7", "V1_8", "V1_9", "V1_10", "V1_11", "V1_12", "V1_13", "V1_14", "V1_15",
"V1_16", "V1_17", "V1_18", "V1_19", "V1_20", "V1_21", "V1_22", "V1_23", "V1_24", "V1_25", "V1_26", "V1_27", "V1_28", "V1_29", "V1_30"},
"X2",
0
), Number of Starts( 1 ), Add Term( {1, 0} ), Add Term( {1, 1} ), Add Term( {2, 1} ), Add Alias Term( {1, 1}, {2, 1} ),
Set Sample Size( 132 ), Simulate Responses( 0 ), Save X Matrix( 0 ), Make Design}
);
doe_dt = doe_obj << make table();
doe_obj << close window();
Summarize( doe_dt, by_grp = by( :X1 ), by_cnt = Count() );
dt_sum << add row( 1 );
dt_sum:L1[N Rows( dt_sum )] = by_cnt[1];
dt_sum:L2[N Rows( dt_sum )] = by_cnt[2];
dt_sum:L3[N Rows( dt_sum )] = by_cnt[3];
// finish, when design is balanced, otherwise continue with new try
If( by_cnt[1] == by_cnt[2] == by_cnt[3],
done = 1,
Close( doe_dt, NoSave )
);
);
dt_sum << Distribution( Nominal Distribution( Column( :Balanced ) ) );回复:DOE,平衡定制设计“平衡”是古典设计的一个特点。虽然我们可以说平衡给了我们很好的统计特性,但主要动机可能是能够在访问计算机之前几天进行分析(例如 Yates 算法)。定制设计不会强制平衡,事实上,轻微的不平衡可以提高统计性能(我认为这在 Jones & Goos 的“实验的优化设计:案例研究方法”中进行了讨论。如果您真的感兴趣,我可能可以找出一些示例,在这些示例中我手动平衡了设计,并表明统计性能因此而下降。
回复:DOE,平衡定制设计你好格奥尔格,
非常感谢这个答案。
不幸的是,我刚刚测试了这个解决方案,但将开始次数固定为“1”不足以始终获得 A 级的 44 结果。 事实上,当种子数量改变时,它也会改变。
到目前为止,我通过循环将 A 级与 B 级之一的循环相互转换,“手动”解决了我的问题,直到获得这种平衡,但这是事后完成的,它可能不是最好的解决方案,也不是最优雅的解决方案,也不是最好的统计解决方案。我希望我可以直接在 DOE 模块中执行此操作。
回复:DOE,平衡定制设计你好@johanna_younous ,
在我看来,不平衡设计似乎是由 JMP 在根据最优性标准创建设计时所做的优化引起的。
如果将开始次数限制为 1,那么 A 的每个级别都会获得 44 次运行。
看:启动次数 (jmp.com)
您可以将优化后的设计与未优化的设计进行比较。 在你的情况下,乍一看似乎没有真正的区别(功率分析等)。
也许其他成员或 JMP 工作人员也有更好的答案。
Names Default To Here( 1 );
doe_obj = DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ), Add Factor( Categorical, {"L1", "L2", "L3"}, "X1", 0 ), Add Factor(
Categorical,
{"V1_0", "V1_1", "V1_2", "V1_3", "V1_4", "V1_5", "V1_6", "V1_7", "V1_8", "V1_9", "V1_10", "V1_11", "V1_12", "V1_13", "V1_14", "V1_15",
"V1_16", "V1_17", "V1_18", "V1_19", "V1_20", "V1_21", "V1_22", "V1_23", "V1_24", "V1_25", "V1_26", "V1_27", "V1_28", "V1_29", "V1_30"},
"X2",
0
), Set Random Seed( 1348397327 )
, Number of Starts( 1 /* 1000 */ )
, Add Term( {1, 0} ), Add Term( {1, 1} ), Add Term( {2, 1} ), Add Alias Term( {1, 1}, {2, 1} ), Set Sample Size( 132 ), Simulate Responses( 0 ),
Save X Matrix( 0 ), Make Design}
);
doe_dt = doe_obj << make table();
doe_obj << close window();
doe_dt << Summary( Group( :X1 ), Freq( "None" ), Weight( "None" ) );