중앙 절대 편차 -> 추가 tSNE 테이블로 내보내기친애하는 모든,
현재 57 개의 샘플과 800,000 개 이상의 변수를 사용하는 프로젝트를 진행 중입니다 (첨부 된 이미지 참조). 이제 가장 높은 중앙 절대 편차 (MAD)가있는 변수 만 사용하여 변수를 줄이고 싶습니다. 목표는 PC 분석과 t-SNE (좋은 JMP 추가 기능 사용)을 통해 데이터를 처리하는 것입니다.
지금까지 나는 가장 높은 MAD를 가진 변수의 식별에 어려움을 겪고 있으며 이러한 변수를 데이터 테이블에 직접 내 보냅니다.
미리 감사드립니다, 잘 부탁드립니다.
가볍게 두드리기
제목 : Re : 중간 절대 편차 -> 추가 tSNE 테이블로 내보내기다음은 MAD를 생성하는 간단한 예입니다. 함수로 변환 한 다음 한 행과> 800000 열을 가진 새로운 데이터 테이블을 만드는 것이 좋습니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
theMatrix = Column( dt, "height" ) << get as matrix;
MAD = Quantile( .5, Abs( theMatrix - Quantile( .5, theMatrix ) ) );
제목 : Re : 중간 절대 편차 -> 추가 tSNE 테이블로 내보내기"dt"데이터 테이블에 대한 참조를 변경하고 출력 테이블의 열을 삭제하여 직접 사용할 수있는보다 완벽한 예가 있습니다 (예 : 샘플 ID)
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
dt << select where(row()==1);
dtMAD = dt << Subset(
Selected Rows( 0 ),
Rows( [1] ),
Selected columns only( 0 )
);
dtMAD << delete columns({"Lot_id","wafer","Wafer id in lot ID","site"});
For( i = 1, i <= N Cols( dtMAD ), i++,
theMatrix = Column( dt, Column( dtMAD, i ) << get name ) << get as matrix;
Column( dtMAD, i )[1] = Quantile( .5, Abs( theMatrix - Quantile( .5, theMatrix ) ) );
);제목 : Re : 중간 절대 편차 -> 추가 tSNE 테이블로 내보내기처음에 '중간 값'을 '평균'으로 잘못 읽고 다음을 썼습니다. Mac에서는 몇 초가 걸렸지 만 거의 모든 것이 예제 테이블을 만드는 데 있습니다.
NamesDefaultToHere(1);
// Make a table with 'nc' columns and 'nr' rows to use . . .
nc = 1000;
nr = 57;
dt = NewTable("MAD Example");
for(c=1, c<=nc, c++,
dt << NewColumn("Col "||Char(c), Numeric, Continuous, Formula(RandomNormal(0, 1)));
);
dt << addRows(nr);
dt << runFormulas;
// Start Here: Calculate MAD for each column . . .
dt = CurrentDataTable();
mat = dt << getAsMatrix;
// (1): Get the mean of each column in a row vector
mean = VMean(mat);
// (2): 'Explode' this to make a matrix congruant with 'mat'
meanMat = Repeat(mean, nr);
// (3): Get the Absolute deviations
AD = Abs(mat - meanMat);
// (4): Get the MAD
MAD = VMean(AD);
// Find the column numbers of the 'nc2' columns that have the biggest MAD values
nc2 = Round(nc/10, 0);
rankMAD = Rank(MAD);
topRandMAD = rankMAD[(nc-nc2)+1::nc];
// Make a second table
dt2 = NewTable("Top "||Char(nc2)||" Largest MAD Values from "||(dt << getName),
NewColumn("Column Number", Numeric, Nominal, Values(topRandMAD)),
NewColumn("MAD", Numeric, Continuous, Values(MAD[topRandMAD]))
);
이외에 @txnelson 접근 방식에서, 유통 플랫폼은 중간 절대 편차를 줄 것이라고 언급합니다. 800,000 개의 열을 사용하면 그의 접근 방식이 더 빠를 것으로 기대할 수 있습니다.
제목 : Re : 중간 절대 편차 -> 추가 tSNE 테이블로 내보내기고마워. @txnelson 과 @ian_jmp 원칙적으로 당신의 제안이 효과가있었습니다. 불행히도 테스트를 위해 느린 워크 스테이션을 사용했기 때문에 모든 변수를 처리 할 수없고 더 빠른 시스템에서 검사해야했습니다. 모든 것, Pat