안녕 JMP 커뮤니티,
현재 "X1"열과 "Y1"열에 10 개의 행이 포함 된 기존 데이터 테이블을 여는 스크립트를 작성하려고합니다. 그런 다음 스크립트는 Y1을 새 열에서 예측하고 나머지 열 (예상 Y1 - Y1)을 만든 다음 예측 된 잔여 열을 만듭니다. 거기에서 스크립트를 자동화하여 프로세스를 얻으려는 의도로 기존 데이터 테이블에 "만들어진"X1 / Y1 값을 일정량 추가하려고합니다. 다음 코드는 데이터 포인트를 데이터 테이블에 추가한다고 생각합니다. 문제는 다음 스크립트가 정확한 X1 값 목록을 추가하지 않는다는 것입니다 (X1 값은 1-10 사이의 모든 정수이며, 다음 코드를 실행할 때 대개 정수 1과 10 만 가져옵니다).
d = DOE (증강 설계, X (: X1), Y (: Y1) / *, {디자인 만들기, 표 만들기} * /);
d << 디자인하기;
dt3 = d << 테이블 만들기;
dt2 << concatenate (dt3, 첫 번째 테이블 (1)에 추가);
그것이 도움이된다면 내 전체 스크립트는 다음과 같습니다 :
// 1. X1 열 및 해당 Y1을 만듭니다.
모두 닫기 (데이터 테이블, 저장 안함);
sourceDT = Open ( "SH2.jmp");
dt2 = sourceDT << 부분 집합 (열 (), 행 (), 출력 테이블 이름 ( "Fixed.jmp"));
// 2. 예측 된 Ystat 열을 만들고 동일한 데이터 테이블에 수식을 저장합니다 (첫 번째 반복).
예측 된 Y1 = dt2 << 신경 (
Y (: Y1),
X (: X1),
정보 누락 (0),
유효성 검사 방법 ( "Holdback", 0.3333),
맞춤 (NTanH (3))
);
예상 Y1 << 프로필 수식 저장;
// 삼. 잔여 칼럼을 추가합니다.
dt2 << 새 열 ( "잔여 1", 수식 (Abs (: 예측 Y1 - : Y1)));
// 4. 잔여 컬럼을 생성하고 예측합니다.
PredictedResidual1 = dt2 << 신경 (
Y (: 잔여 1),
X (: X1),
정보 누락 (0),
유효성 검사 방법 ( "Holdback", 0.3333),
맞춤 (NTanH (3))
);
PredictedResidual1 << 프로필 수식 저장;
// 반복 2
d = DOE (증강 설계, X (: X1), Y (: Y1) / *, {디자인 만들기, 표 만들기} * /);
d << 디자인하기;
dt3 = d << 테이블 만들기;
dt2 << concatenate (dt3, 첫 번째 테이블 (1)에 추가);
예측 된 Y2 = dt2 << 신경 (
Y (: Y1),
X (: X1),
정보 누락 (0),
유효성 검사 방법 ( "Holdback", 0.3333),
맞춤 (NTanH (3))
);
예측 된 Y2 << 프로필 수식 저장;
// 삼. 잔여 칼럼을 추가합니다.
dt2 << 새 열 ( "잔여 2", 수식 (Abs (: 예측 Y1 2 - : Y1)));
// 4. 잔여 컬럼을 생성하고 예측합니다.
PredictedResidual2 = dt2 << 신경 (
Y (: 잔여 2),
X (: X1),
정보 누락 (0),
유효성 검사 방법 ( "Holdback", 0.3333),
맞춤 (NTanH (3))
);
PredictedResidual2 << 프로필 수식 저장;
열 (dt2, "X1") << 수식 Eval ();
열 (dt2, "Y1") << 수식 Eval ();
dt2 << 위치 선택 (: 잔여 1 <= 3);
dt2 << 행 삭제;
감사,
카일
나는 네가 원하는 것을 확실히 모른다. 제 해석은 이전 행에 새 행을 추가하려는 것입니다. Augment Design은 새로운 치료법을 만들고 Make Table 메시지는 새로운 결합 된 테이블을 출력합니다. 지정된 모델 및 주어진 행에 대해 최적 인 새 행을 작성합니다.
난 당신이 결정하고 기존 행에 그들을 연결하는 수준으로 두 번째 데이터 테이블을 만들고 싶어 생각합니다. 또는 첫 번째 데이터 테이블에 행 추가 () 메시지를 반복적으로 보내 새 레벨을 추가 할 수 있습니다.
혼란에 대해 사과드립니다. 너 내가 원하는대로 맞다. 내가 결정하고 기존 행에 연결하는 레벨이있는 두 번째 데이터 테이블을 작성하십시오. 문제는 두 번째 데이터 테이블이 명시 적으로 값이 1 또는 10 인 테이블을 만드는 것입니다. 두 번째 데이터 테이블에 1에서 10 사이의 임의의 값 (원래 데이터 테이블에있는 값의 범위)을 임의로 분산 시키길 원합니다. 디자인을 개선하는 것이 최선의 방법은 아닐지 모르지만 진행 방법에 대해서는 잘 모르겠다.
감사
두 번째 데이터 테이블을 만들고 연결하거나 원본 데이터 테이블에 행을 직접 추가하는 방법을 사용할 수 있습니다.
아이디어 스케치 :
dt2 = New Table( "Augmentation Runs",<BR />Add Rows( 10 ),<BR />New Column( "X1", Numeric, Continuous, Values( J( 10, 1, Random Uniform() ) )<BR />);<BR /><BR />dt << Concatenate( dt2 );
대안 :
For( I = 1, I < 11, I++,
dt << Add Rows( { X1 = Random Uniform() } );
);