DOE, 균형 잡힌 맞춤형 디자인안녕하세요 커뮤니티 ,
저는 2가지 요소에 대해 균형 잡힌 DOE 설계를 만들려고 노력하고 있습니다. A는 3개 수준이고 B는 31개 수준입니다. 내 팩토 B가 ~ 1.41번 복제되기를 원합니다(내 팩터 B의 31개 수준은 팩터 A의 각 수준에서 테스트되고 그 중 13개는 팩터 A의 각 수준에 대해 두 번 테스트됨).
내 요인 A의 각 수준에 대해 동일한 수의 실행이 있고 내 요인 B에 대해서도 어느 정도 균형이 잡혔다면 DOE 플랫폼에서 실험을 설계해 주기를 바랍니다. 그래서 저는 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비트에서 작업)
암사슴스크립팅Re: 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" ) );Re: DOE, 균형 잡힌 맞춤형 디자인안녕하세요 게오르그
이 답변에 대해 많이 감사합니다.
불행히도 방금 이 솔루션을 테스트했지만 시작 횟수를 "1"로 고정하는 것은 레벨 A에 대해 항상 44의 결과를 얻는 데 충분하지 않습니다. 실제로 시드 번호가 변경되는 동안 변경될 수 있습니다.
지금까지 이 균형을 얻을 때까지 레벨 B 중 하나에 대해 레벨 A를 전환하는 루프로 "수동으로" 내 문제를 해결했지만 이것은 나중에 수행되며 통계적으로 최상의 솔루션도 아니고 가장 우아하지도 않고 최고가 아닐 수도 있습니다.DOE 모듈에서 직접 할 수 있기를 바랍니다.
Re: DOE, 균형 잡힌 맞춤형 디자인"균형"은 고전적인 디자인의 특징입니다.균형이 우리에게 좋은 통계적 속성을 제공한다고 주장할 수 있지만, 주된 동기는 아마도 컴퓨터에 액세스하기 며칠 전에 분석을 수행할 수 있는 능력(예: Yates 알고리즘)이었을 것입니다.맞춤 설계는 균형을 강제하지 않으며 실제로 약간의 불균형이 통계적 성능을 향상시킬 수 있습니다(나는 이것이 Jones & Goos의 '최적의 실험 설계: 사례 연구 접근'에서 논의되었다고 생각합니다.정말 관심이 있다면 수동으로 디자인 균형을 조정하고 결과적으로 통계적 성능이 저하되었음을 보여주는 몇 가지 예를 찾아볼 수 있습니다.
Re: 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 ) ) );Re: DOE, 균형 잡힌 맞춤형 디자인그건 좋은 지적이야 !
나는 고전적인 "if" 대신 "while" 루프를 사용할 수 있지만 나는 당신의 솔루션을 좋아합니다 thx!
Re: DOE, 균형 잡힌 맞춤형 디자인나는 무한 루프로 끝나지 않도록 for 루프를 선택했습니다. 왜냐하면 솔루션을 찾을 수 없는 DOE 정의가 있을 수 있기 때문입니다. 그리고 끝점이 있습니다.
Re: DOE, 균형 잡힌 맞춤형 디자인이 스레드에 약간 늦었고 몇 가지 흥미로운 솔루션이 있습니다. 다만, Optimality Criterion을 Alias Optimal로 변경만 하면 되는 것인지 궁금합니다. 그 최적화 기준은 일반적으로 가능한 한 균형을 유지합니다. 다음은 내가 그 접근 방식을 취했을 때의 스크립트이며 작동하는 것처럼 보였습니다.
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}
)Re: DOE, 균형 잡힌 맞춤형 디자인안녕하세요 데이비드
나는 균형에 대한 나의 요청이 통계적으로 가장 좋지 않을 수도 있다는 것을 이해하지만 그것은 내가 벗어날 수 없는 기술적인 제약입니다
또한 성능을 확인했습니다(최적도/파워...)그리고 정말 가까운 것 같습니다. 독서 추천도 감사합니다 한번 읽어보겠습니다.