두 열의 UniqueVals 콤보로 선택 및 제외하는 방법은 무엇입니까?그래서 나는 여기에서 난처합니다. Chart_ID 및 Recipe_ID의 두 열을 기반으로 통계적으로 유의미한 데이터 만 선별 된 dt를 출력하려고합니다. 단일 열로 작동하도록 할 수 있지만 두 열을 알아낼 수 없습니다.
- Oneway (y = mean, x = chamber, BY : Chart_ID, Recipe_ID)를 사용하여 원시 데이터를 플로팅하고 All-pairs Tukey tTest를 실행합니다.
- 그런 다음 결합 된 pVal 데이터 테이블을 가져옵니다.
- 그런 다음 pVal> 0.05 인 모든 행을 선택하고 제외
- 그런 다음 Chart_ID별로 UniqueVals의 요약 목록을 만듭니다 (이는 중요한 pV가있는 모든 Chart_ID입니다).
- 그런 다음 UniqueVals와 일치하는 소스 dt의 모든 행 선택
- 그런 다음 선택 반전 및 제외
- -> 이렇게하면 소스 dt에 Chart_ID에 의해 중요한 tTest 인 데이터 만 남습니다.
요약 UniqueVals에 Recipe_ID를 추가하는 방법을 알 수 없습니다.
중요하지 않은 모든 차트 / 레시피를 제외한 소스 dt로 끝내는 더 좋은 방법이 있습니까?
//dtSPC --> my source data, raw SPC data. Need to exclude rows from Charts, Recipes with high pVals
/*plotting a basic Fit YbyX just to get pValues. Formatting and style done on final plot*/
ow1 = Oneway(
Y( :MEAN ),
X( :CHAMBER ),
By(:CHART_ID, :RECIPE),
//All pairs Tukey HSD test
All Pairs(
1,
Confidence Quantile( 0 ),
Difference Matrix( 0 ),
LSD Threshold Matrix( 0 ),
Connecting Letters Report( 0 ),
Ordered Differences Report( 1 )
),
);
/***********************************/
/***********************************/
// Create the combined data table, using xPath (return a list of the OutlineBoxes from the report that have the title Ordered Differences Report. Then, use the first of those to make the combined data table.)
outlines = (Report( ow1[1] ) << Top Parent) << XPath( "//OutlineBox[text()='Ordered Differences Report']" );
dt1 = outlines[1][Table Box( 1 )] << Make Combined Data Table;
dt1 = current data table();
dt1 << set name( "pValue PairWise by Channel Tukey");
dt1:CHART_ID << Data type( Numeric ) << Set Modeling Type( Nominal );
/***********************************/
/**********************************/
//Screen and show only the CHART_ID's w/ a Tukey pair pVal<0.05
//exclude all high pVal rows, leaving only low pVal Channels. Does not work in reverse.
dt1 << select where(:name("p-Value") > 0.05);
dt1 << exclude;
dt1 << clear select;
//create a list of remaining Unique CHART_ID's
summarize(dt1, uniqueVals=by(:CHART_ID));
//Convert to numeric
For( i = 1, i <= N Items(uniqueVals ), i++,
uniqueVals[i] = Num(uniqueVals[i] )
);
//extra, just to look at the data
//dtUnique = New Table( "uniqueVals less 0.05");
//dtUnique << New Column( "CHART_ID", Values(uniqueVals));
//select on SPC source data just the channels w/ low pVals
//need to choose SPC data table
dtSPC << clear select;
dtSPC << select where( contains( uniqueVals, :CHART_ID));
//invert and exclude, leaving only low pVal CHART_ID's
dtSPC << invert row selection << exclude;
dtSPC << clear select;해석학데이터 테이블스크립팅Re : 두 열의 UniqueVals 콤보로 선택 및 제외하는 방법은 무엇입니까?안녕하세요, aliegner1!
이해가 안되지만 중요한 p- 값을 선택하고 새 테이블을 부분 집합 한 다음 Chart_ID 및 Recipe_ID로 요약 해 볼 수 있습니다.
다시 말하지만 이해가 안되지만 당신이하고있는 일은 " p 해킹 ".최소한 p- 값에 대한 ASA 문을 읽은 다음 JMP 도움말의 통계 색인에서 거짓 발견 비율을 찾아 보는 것이 좋습니다.
행운을 빕니다!
Re : 두 열의 UniqueVals 콤보로 선택 및 제외하는 방법은 무엇입니까?정보 감사합니다. 나는 ASA 성명을 읽었고 대부분 의미가 있습니다. 그러나 내 상황 (그리고 다른 많은 ppl)이 수천 개의 차트를 다루고 있으며 가장 중요한 항목을보기 위해 목록을 빠르게 선별하고 정리할 방법이 필요합니다. 예를 들어 스크린 샷이 있습니다. 선별해야 할 차트가 5000 개 있고 시간을 들여 조사 할 가장 중요한 차트를 식별하는 좋은 방법이 필요합니다. 어딘가에 선을 그려야합니다.
나는 또한 FDR을 찾았지만 단일 X 특성 만 사용하고 있기 때문에 이것이 적용되지 않는다고 생각합니다. X 하나만으로 FDR이 발생하지 않습니다.

선택 및 요약에 관하여 :
그게 문제입니다. 요약을 가져 와서 소스 데이터를 선택할 수 있도록 변환하는 방법을 알 수 없습니다.
이전에는 단일 열 (Chart_ID)을 선택한 다음 Summarize가 문자를 출력하기 때문에 다시 숫자로 변환했습니다. 거기에서 UniqueVals 목록 (Chart_ID)으로 소스 dt Chart_ID Col을 선택할 수있었습니다.
숫자와 문자 인 두 개의 서로 다른 열을 사용하는 방법은 무엇입니까?
Re : 두 열의 UniqueVals 콤보로 선택 및 제외하는 방법은 무엇입니까?숫자 열을 문자로 변환 한 다음 두 열을 연결하여 비교 문자열 목록을 가져올 수 있습니다. 그런 다음 해당 목록을 사용하여 원하는 행을 선택하십시오 (또는 연관 배열 사용). 예제 데이터 세트가 없으므로 여기에 몇 가지 예가 있습니다.
Names Default To Here(1);
dt = New Table("Untitled 22",
Add Rows(5),
Compress File When Saved(1),
New Column("CHART_ID",
Character,
"Nominal",
Set Values({"123", "1", "12", "0", "135"})
),
New Column("RECIPE",
Character,
"Nominal",
Set Values({"A", "A", "B", "B", "C"})
),
New Column("pval",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([0.1, 0.001, 0.051, 0.002, 0.1])
)
);
pVals = Loc(dt:pval << get as matrix > 0.05); //get rows over 0.05
comparisonStrings = {};
For(i = 1, i <= N Items(pVals), i++,
Insert Into(comparisonStrings, char(dt:CHART_ID[pVals[i]]) || dt:RECIPE[pVals[i]]);
);
wait(1);
dt << Select Where(Contains(comparisonStrings, char(:CHART_ID)||:RECIPE));
wait(1);
dt << clear select;
wait(1);
aa = Associative Array(Eval List(dt:CHART_ID[pVals]), EvalList(dt:RECIPE[pVals]));
dt << Select Where(Contains(aa, :CHART_ID) & aa[:CHART_ID] == :RECIPE);스크립팅 인덱스를 사용하여 진행 상황에 대해 더 잘 이해하고 필요한 경우 디버깅합니다.
Re : 두 열의 UniqueVals 콤보로 선택 및 제외하는 방법은 무엇입니까?@jthi
팁을 주셔서 감사하지만 스크립트에 대해 약간 혼란 스럽습니다. 몇 번만 선택하는 것처럼 보이지만 소스 dt로 돌아 가기 위해 아무것도하지 않습니다.
결합 된 데이터 테이블에서 pVal을 잘 선택할 수 있습니다. 내가 겪고있는 문제는 결합 된 데이터 테이블의 두 열로 요약 한 다음 주 소스 데이터로 돌아가서 요약을 사용하여 선택하는 것입니다.
이 문제에 대해 이야기하는 데 사용할 수있는 샘플 세트를 찾았습니다.
두 개의 BY 열을 사용하여 소스 dt로 다시 요약하는 방법을 알 수 없습니다.
By (: trial, : oil amt),
dtPopCorn = Open( "$SAMPLE_DATA/Popcorn.jmp" );
/*plotting a basic Fit YbyX just to get pValues. Formatting and style done on final plot*/
ow1 = Oneway(
Y( :yield ),
X( :popcorn ),
By(:trial, :oil amt),
//All pairs Tukey HSD test
All Pairs(
1,
Confidence Quantile( 0 ),
Difference Matrix( 0 ),
LSD Threshold Matrix( 0 ),
Connecting Letters Report( 0 ),
Ordered Differences Report( 1 )
),
);
/***********************************/
/***********************************/
// Create the combined data table, using xPath (return a list of the OutlineBoxes from the report that have the title Ordered Differences Report. Then, use the first of those to make the combined data table.)
outlines = (Report( ow1[1] ) << Top Parent) << XPath( "//OutlineBox[text()='Ordered Differences Report']" );
dt1 = outlines[1][Table Box( 1 )] << Make Combined Data Table;
dt1 = current data table();
dt1 << set name( "pValue PairWise by Channel Tukey");
dt1:trial << Data type( Numeric ) << Set Modeling Type( Nominal );
/***********************************/
/**********************************/
//Screen and show only the trial's w/ a Tukey pair pVal<0.05
//exclude all high pVal rows, leaving only low pVal Channels. Does not work in reverse.
dt1 << select where(:name("p-Value") > 0.5); //I know...just setting 0.5 so that one row stands out.
dt1 << exclude;
dt1 << clear select;
//create a list of remaining Unique trial's
summarize(dt1, uniqueVals=by(:trial));
//Convert to numeric
For( i = 1, i <= N Items(uniqueVals ), i++,
uniqueVals[i] = Num(uniqueVals[i] )
);
//extra, just to look at the data
//dtUnique = New Table( "uniqueVals less 0.5");
//dtUnique << New Column( "trial", Values(uniqueVals));
//select on SPC source data just the channels w/ low pVals
//need to choose SPC data table
dtPopCorn << clear select;
dtPopCorn << select where( contains( uniqueVals, :trial));
//invert and exclude, leaving only low pVal trial's
dtPopCorn << invert row selection << exclude;
dtPopCorn << clear select;