고급 JSL에 대한 도움이 필요합니다 - 저널에서 데이터 읽기안녕하세요
GPT4.0을 사용하여 만든 JSL 스크립트에 대한 도움이 필요하지만 작동하지 않습니다.
스크립트 목적: 단일 분석 저널을 가져와서 데이터를 CSV로 추출합니다.
첫 번째 라운드에서는 범주별 분석만 포함하는 저널에 초점을 맞춥니다.
저널에는 범주형 변수에 대한 1개 이상의 범주형 표가 포함될 수 있으며, 그 뒤에 공유 차트와 빈도 차트가 있습니다. 저는 표에서 데이터를 추출하는 데만 관심이 있습니다. 제 실제 구현은 5개 클래스의 다항 클래스를 다루지만 샘플 저널과 스크립트에서는 단순성을 위해 2개 클래스(바이너리)로 줄였습니다.
범주형 표에는 주어진 매개변수 값에 대한 3개 행이 있습니다: count, percent 및 pvalue. 저는 pvalue<= 0.05인 경우에만 percent 값을 추출하는 데 관심이 있습니다.
출력을 다음 형식의 csv로 저장해야 합니다.
저널 이름, 매개변수 이름, 매개변수 값1, 퍼센트 클래스0, 퍼센트 클래스1
저널 이름, 매개변수 이름, 매개변수 값2, 퍼센트 클래스0, 퍼센트 클래스1
스크립트는 해당 저널에 존재하는 범주형 테이블의 수를 이해한 다음 모든 테이블 정보를 추출해야 합니다(pvalues<= 0.05인 경우에만 해당).
이것을 살펴볼 시간이 부족한 분들을 위해;
스크립트는 오류 없이 실행되지만 예상대로 데이터를 추출하지 않습니다.
주요 문제는 스크립트 끝(행 155-175)에 있습니다. .Type(journal)을 기반으로 처리하도록 두 개의 함수가 빌드되었습니다. Type을 올바르게 가져오지만 함수에 올바르게 연결할 수 없는 것 같습니다.
참고: 제 2단계는 유사한 의도로 구성되지만 로지스틱 회귀 결과가 포함된 저널이 포함됩니다.
아직 게시하지 않았어요. 이 문제가 먼저 해결되는 걸 보고 싶어요.
JMP 샘플 데이터 라이브러리의 항공기 사고 일지와 2개 학급 수준에 맞게 조정된 샘플 스크립트를 첨부했습니다.
감사합니다
알투그 바이람
자동화 및 스크립팅결과 공유 및 전달윈도우Re: 고급 JSL에 대한 도움이 필요합니다 - 저널에서 데이터 읽기저널을 만드는 데 사용된 JMP 보고서 대신 저널에서 이것을 추출하는 특별한 이유가 있습니까?
Re: 고급 JSL에 대한 도움이 필요합니다 - 저널에서 데이터 읽기네, 저널 크기가 고객과 소통하기에 상당히 작습니다. 저의 저널 형식은 두 가지 유형으로, 범주형 또는 연속형 매개변수 분석을 포함합니다. 저널에서 데이터를 추출하는 것이 보고서에 비해 그렇게 어렵지 않기를 바랍니다.
Re: 고급 JSL에 대한 도움이 필요합니다 - 저널에서 데이터 읽기보고서에서 기본적으로 테이블을 저장하면 거의 완료됩니다(최종 결과에 따라 약간의 정리가 필요할 수 있음)

Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Aircraft Incidents.jmp");
fg = dt << Fit Group(
cg1 = Categorical(
ChiSquare Test Choices("Pearson Only"),
X(:Broad Phase of Flight),
Responses(:Fatal),
Cell Chisq(1),
Share Chart(1),
Frequency Chart(1),
Legend(0)
),
Categorical(
ChiSquare Test Choices("Pearson Only"),
X(:Weather Condition),
Responses(:Fatal),
Cell Chisq(1),
Share Chart(1),
Frequency Chart(1),
Legend(0)
),
<<{Arrange in Rows(2)}
);
dt_cont = cg1 << Save Contingency Table();Re: 고급 JSL에 대한 도움이 필요합니다 - 저널에서 데이터 읽기저는 대규모 분석을 수행하고 있으며 스크립트 프로세스를 여러 단계로 나눕니다. 이미 생성된 많은 과거 분석 결과가 있지만, 분석한 다음 요약 보고서를 만들려고 시도하는(가능하다면) 솔루션(현재 문제에 대한)을 찾고 있지 않습니다. 단순히 다시 실행하는 것이 실용적이지 않기 때문입니다. 오히려 이 요약 스크립트(저널에서 데이터 추출)가 분리되어 설명된 이유로 작동하는 것을 좋아합니다.
제 저널에는 여러 보고서가 들어 있고 저는 여러 저널을 가지고 있습니다. 전반적으로 많은 데이터입니다. 저널 경로가 제 작업에 가장 적합합니다. 스크립트를 통해 이 작업을 수행해야 하지 않으면 실용적이지 않습니다. 현재로서는 범주형 표의 단일 저널만 찾고 있습니다. 현재 오류를 이해하고 단일 저널에 대한 작동하는 스크립트가 있으면 범주형 유형의 모든 저널을 다루도록 확장할 수 있을 것입니다. 저의 다른 미래 단계는 저널당 여러 개의 다항 로지스틱 회귀를 포함하는 두 번째 저널 유형에 대한 유사한 필요성입니다.
스크립트에 뭔가 잘못된 게 있는데, 저널을 하위 함수에 전달하지 않거든요. 이 오류는 여전히 쉬운 오류일 거라고 생각하고 바랐어요. 스크립팅 인덱스도 살펴보았는데, 다른 도움이 될 만한 게 있는지 확인했지만 소용없어요.
Re: 고급 JSL에 대한 도움이 필요합니다 - 저널에서 데이터 읽기테이블 상자를 다루지 않기 때문에 스크립트가 무엇을 하는지 잘 모르겠습니다(매우 쉬울 것입니다). 함수도 잘못 정의되어 있어서 함수가 예상대로 실행되지 않는 것 같습니다.
나는 아마도 비상표가 사용하는 표시 상자를 건드리지 않고 텍스트에서 구문 분석할 것입니다.
Names Default To Here(1);
j = Current Journal();
agb = j["Fatal By Broad Phase of Flight",AlignmentGridBox(1)];
txt = agb << get text;
lines = Words(txt, "\!N");
Remove From(lines, 1, 3);
res = {{}};
For Each({line}, lines,
res_line = {};
vals = Words(line, "}\!t");
Insert Into(res_line, Remove From(vals, 1)); // param name?
Insert Into(res_line, Remove From(vals, 1)); // param value?
Insert Into(res_line, Words(Remove From(vals, 1)[1], ",")); // class1
Insert Into(res_line, Words(Remove From(vals, 1)[1], ",")); // class2
Insert Into(res, Concat items(res_line, "\!t"));
);
dt = Open(Char To Blob(Concat Items(res, "\!N")), "text");Re: 고급 JSL에 대한 도움이 필요합니다 - 저널에서 데이터 읽기안녕, Jarmo
먼저 지원/도움에 감사드립니다. 저는 여기 제 스크립트에 귀하의 접근 방식을 구현하는 데 시간을 들이고 싶었습니다. 저는 그것을 조정할 수 있었지만 몇 가지 질문이 더 있습니다.. 하지만 위의 것을 해결책으로 선택하겠습니다.
내 후속 질문:
제 1단계가 순수한 범주형 표로 구성된 저널이라는 점을 상기해 보면, 저널당 표의 개수는 가변적입니다.
1. 주어진 저널에 대한 범주형 테이블의 수를 얻는 방법(위의 경우 예를 들어 2개)
2. 이러한 범주형 표의 이름을 얻는 방법(예: "비행의 광범위한 단계에 따른 치명적" 및 "날씨 조건에 따른 치명적")
3. 제 2단계는 다항 로지스틱 회귀의 순수한 컬렉션이 될 것입니다. 여러분의 지원으로 제가 얻은 스크립트는 직접 실행되지 않았지만 가져오기 전에 시간을 좀 들여야 합니다. 샘플 데이터도 준비할 수 있습니다. 그래서 여기에 플레이스홀더를 두겠습니다.
4. 고급 스크립팅을 시작하는 가장 빠른 방법은 무엇입니까? 예를 들어, 내 예에서 속성 상자는 관련이 있을 수 있는 잠재적인 JMP 함수 이름에 대한 약간의 빛을 비춥니다. 저는 스크립팅 인덱스를 꽤 많이 사용해 왔지만 제 경우에는 그다지 효과적이지 않았습니다. 또한 이전 버전에는 스크립팅 설명서가 있었던 것으로 기억하는데, 그 마지막 버전이 어디에 있는지 잘 모르겠습니다.
다시 한번 감사드립니다.
Re: 고급 JSL에 대한 도움이 필요합니다 - 저널에서 데이터 읽기1. XPath를 활용하는 것은 하나의 옵션입니다
obs = (j << XPath("//OutlineBox[contains(text(), 'Fatal By')]"));
2. 개요 상자 참조가 있는 경우 << 제목 가져오기를 사용할 수 있습니다.
obs << get title;
4. JMP 도움말의 스크립팅 인덱스, 스크립팅 가이드 활용(JMP 도움말에는 JSL 구문 참조도 있음). 또한 현재로서는 JSL에 LLM을 의존해서는 안 됩니다. LLM은 매우 신뢰할 수 없기 때문입니다(스크립트에서 볼 수 있듯이).
Re: 고급 JSL에 대한 도움이 필요합니다 - 저널에서 데이터 읽기샘플 데이터에 있는 obj 구문을 그대로 시도했지만 작동하지 않았습니다.
이름 미해결: 'obj'에 대한 액세스 또는 평가에서 obj가 있음, obj/*###*/
모든 테이블의 테이블 이름에는 공통된 문자열이 있으므로 해당 공통 문자열(위의 예에서는 "Fatal by")을 검색할 수 있습니다.
작동할 때 obj가 목록이 될 것이므로 그 경우 저널에 있는 테이블의 수를 알 필요가 없을 것이라고 가정합니다.
LLM의 경우, 저는 당신에게 동의합니다. 처음에 스크립트 구조가 매우 빠르게 주어지지만 많은 영역이 작동하지 않는다는 것을 알게 됩니다. 더 짜증나는 것은 때때로 문자 그대로 멍청해질 수 있다는 것입니다... 그것은 제가 피드백을 제공하고 어떤 경우에는 특정 수정을 하라고 말할 수 있는 코드를 제공합니다... 다음 라운드에서 LLM은 동일한 잘못된 솔루션을 제공합니다. 저는 이것을 두 번 이상 연속으로 본 것 같습니다.
하지만 많은 경우, 더 간단한 일에서는 갑자기 작동할 수 있으므로 물론 주의해서 사용합니다.
Re: 고급 JSL에 대한 도움이 필요합니다 - 저널에서 데이터 읽기JSL을 사용하면 JMP에서 대화형으로 시작하고 JMP에서 스크립트를 생성하도록 해야 합니다. 그런 다음 충분하지 않고 스크립팅을 조금 더 하고 싶다면 Scripting Guide를 간단히 살펴보세요. 그런 다음 Scripting Index를 주요 리소스로 활용하세요(Scripting Guide/JSL 구문 참조에 대한 링크도 있음). 그리고 때때로 LLM을 참조하지만 LLM은 일반적으로 JSL에 대해 매우 잘못 알고 있다는 것을 이해하세요.