이상값 필터링의 Winsor 프로세스를 자동화/스크립팅하는 방법이 있습니까?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />| 이상값 필터링의 Winsor 프로세스를 자동화/스크립팅하는 방법이 있습니까? Brady에서 두 개의 추가 기능을 찾았지만 이상치 행을 제외하지 않고 요약 기능 향상에만 관련됩니다. |
대치 애드인
확장된 요약 추가 기능
Re: 이상값 필터링의 Winsor 프로세스를 자동화/스크립팅하는 방법이 있습니까?감사합니다. 많은 의미가 있습니다. Huber를 언급하는 AMC 브리핑의 일부를 오해한 것 같습니다... 나는 그들이 Huber M-estimation을 의미한다고 생각했지만 그것이 반복적으로 windsorizing이라는 데 동의합니다.
링크 주셔서 감사합니다. 도움이 됩니다.
Re: 이상값 필터링의 Winsor 프로세스를 자동화/스크립팅하는 방법이 있습니까?일부 위키 기사를 읽는 데 시간을 할애할 가치가 있을 것입니다.Winsorization은 트리밍과 유사한 프로세스일 뿐입니다.
위키백과:
Winsorising 또는 Winsorisation은 통계 데이터의 극단값을 제한하여 가짜 이상치의 영향을 줄이는 통계 변환입니다.
백분위수만 필요하며 여기서는 1.5시그마를 사용했습니다.
참조된 기사에서 그들은 중앙값을 사용하여 윈저화한 다음 윈저화된 데이터를 사용하여 중심과 산포를 더 잘 예측했습니다.그런 다음 중앙과 스프레드를 더 잘 예측하기 위해 다시 winorize합니다.여기서 우리는 강력한 정확한 평균/표준편차를 얻기 위해 윈저화합니다.
튜닝 상수는 Huber의 M 추정에 사용됩니다.이 프로세스는 그 반대입니다. 대신 M 추정치를 사용하여 강력하고 정확한 평균/표준편차를 도출한 다음 데이터를 윈저화합니다.K가 무한대에 접근하면 M-추정 평균 = 평균입니다.K가 0에 접근하면 M-추정 평균 = 중앙값입니다.
이 프레젠테이션의 16페이지를 볼 수 있습니다. http://www.bauer.uh.edu/rsusmel/phd/ec1-25.pdf
따라서 귀하의 질문에 답하기 위해 튜닝 상수 K는 사용되지 않습니다. b/c는 Huber의 M-추정을 사용하지 않았습니다.
Re: 이상값 필터링의 Winsor 프로세스를 자동화/스크립팅하는 방법이 있습니까?이 스레드의 코드가 기반으로 하는 AMC 기술 개요의 예에서 튜닝 상수 k는 무엇입니까?튜닝 상수와 관련된 이론적 방정식은 보았지만 windsorizing +/- n*sigma 및 sigma_new = x * stddev(data)를 설명하는 것은 본 적이 없습니다. x는 튜닝 상수와 관련이 있습니다.
감사해요,
마이크
Re: 이상값 필터링의 Winsor 프로세스를 자동화/스크립팅하는 방법이 있습니까?본질적으로 우리가 하는 일은 중앙값/MAD의 과대 평가를 설명하는 것입니다.예제 데이터 세트에서 winzorization 프로세스에서 중앙값/MAD를 사용하면 이상점을 너무 많이 조정합니다.
x_orig = [ 4.5 , 4.9 , 5.6 , 4.2 , 6.2 , 5.2 , 9.9 ] ;
중앙값 및 미친 추정치:
평균 = 5.2; 및 시그마 = 1.05;
이러한 추정치를 사용하면 데이터가 다음과 같이 변경됩니다.
x_firstpass = [ 4.5 , 4.9 , 5.6 , 4.2 , 6.2 , 5.2 , 6.775 ] ;
이 데이터는 평균과 시그마에 대한 더 나은 근사치를 제공합니다.
조정 평균 = 5.34; 시그마 = 1.04;
더 나은 추정치를 사용하여 데이터 세트를 winzorize하면 다음과 같이 됩니다.
x_secondpass = [ 4.5 , 4.9 , 5.6 , 4.2 , 6.2 , 5.2 , 6.905 ] ;
그러나 x_orig 대신 x를 사용하는 경우 코드는 이상점 9.9를 찾아 그에 따라 조정하지 않습니다. b/c 6.775는 평균 = 5.34 및 시그마 = 1.04일 때 이상치가 아닙니다.
따라서:
x_secondpass = [ 4.5 , 4.9 , 5.6 , 4.2 , 6.2 , 5.2 , 6.775 ] ;
평균과 시그마는 동일합니다.
조정 평균 = 5.34; 시그마 = 1.04;
시그마 - sigma_old = 0
우리의 컨버전스가 완료되었다고 믿을 것입니다.
tl:dr - 최적의 영점을 찾으려면 코드가 양방향으로 실행될 수 있을 만큼 강력해야 합니다.
Re: 이상값 필터링의 Winsor 프로세스를 자동화/스크립팅하는 방법이 있습니까?정확히 x=x_orig를 얻지 못합니다.
이것이 무한 루프를 생성하는 것처럼 보입니다. 그러나 그것은 작동하므로 그것에 대해 논쟁 할 수 없습니다.
감사해요!
Re: 이상값 필터링의 Winsor 프로세스를 자동화/스크립팅하는 방법이 있습니까?이 코드는 나를 위해 그것을했다!!감사해요!!!
Re: 이상값 필터링의 Winsor 프로세스를 자동화/스크립팅하는 방법이 있습니까?감사해요!
Re: 이상값 필터링의 Winsor 프로세스를 자동화/스크립팅하는 방법이 있습니까?예, 예.조정된 평균과 시그마가 변경된 원래 데이터 세트에서 윈저화 프로세스를 실행하려고 합니다.x=xorig를 추가하는 것이 맞습니다.내가 말했듯이 나는 그것을 빨리 코딩했습니다.
용지 일치:
데이터 세트는 자유도가 1(이상치를 근사화할 값)만 가지므로 시그마와 평균은 모두 윈저화를 기반으로 고정됩니다.이 사실을 감안할 때 평균 5.36과 시그마 1.15를 얻을 방법이 없습니다. 5.386과 1.145를 두 번째 숫자로 반올림하면 5.39와 1.15가 됩니다. 따라서 m y 최선의 추측은 이것이 단순한 오타라는 것입니다. 매우 정확한 오류.그 시점까지의 논문의 정확성과 왕립 화학 협회의 분석 방법 위원회에서 온 것을 감안할 때 나는 그들에게 의심의 여지를 줄 것입니다.
Re: 이상값 필터링의 Winsor 프로세스를 자동화/스크립팅하는 방법이 있습니까?각 반복에 대한 데이터를 검사할 수 있도록 모든 것이 배열 형식으로 있었지만 본질적으로 내가 가진 것입니다. 너의 것이 더 깨끗하니, 내가 그것을 조금 수정했음을 네가 신경쓰지 않았으면 좋겠어. 다른 사람이 대용량 데이터 세트에 이 루프를 사용하는 경우 더 효율적일 수 있으므로 for() 루프를 Loc 함수로 교체했습니다. (Disclaimer, 저는 이 기능을 한두 번밖에 사용하지 않았습니다. 올바른 선택이기를 바랍니다.)
귀하의 기능과 내 기능을 실행했을 때 평균 5.339와 시그마 1.044로 1회 반복으로 수렴하는 것을 발견했습니다. 이 논문은 몇 번의 반복이 필요함을 나타내는 것 같습니다. 나는 그들이 이 데이터 세트에 대해서도 의미한다고 생각했지만 어쩌면 일반화했을 수도 있습니다. 그들은 계속해서 Huber 추정 평균이 5.36이고 시그마가 1.15라고 말합니다. 나는 그 추정 평균을 재현할 수 없었지만 각 반복에서 'x' 데이터를 x_orig(원본 데이터)로 대체했을 때 평균 5.386과 시그마 1.1459를 얻었습니다. 아래 코드에서 이를 활성화/비활성화하는 줄을 볼 수 있습니다. 이것은 실제로 무언가를 반복하는 올바른 방법처럼 느껴지지 않지만 이것을 계산할 수 있는 데 내가 어디에서 잘못되었는지 잘 모르겠습니다. Sig 숫자 오류를 용서하지만 여기에서 변수 내용에 대해 더 많이 보여주고 싶었습니다.
논문에서:

여기에 기본 이름 ( 1 ) ;
로그 지우기 () ;
//종이에 데이터 세트
x_orig = [ 4.5 , 4.9 , 5.6 , 4.2 , 6.2 , 5.2 , 9.9 ] ;
엑스 = [ 4.5 , 4.9 , 5.6 , 4.2 , 6.2 , 5.2 , 9.9 ] ;
//중앙값 및 강력한 시그마 결정(MAD)
평균 = 분위수 ( .5 , 엑스 ) ;
와이 = 복근 ( 엑스 - 평균 ) ;
미친 = 분위수 ( .5 , 와이 ) ;
시그마 = 미친 * 1.5 ;
시그마드 = 0 ;
//모이다
하는 동안 ( 복근 ( 시그마 - 시그마드 ) > 2e-16 ,
//x = x_orig; // 이것을 켜거나 끕니다.
엑스 [ 위치 ( 엑스 > ( 평균 + 1.5 * 시그마 ))] = 평균 + 1.5 * 시그마 ;
엑스 [ 위치 ( 엑스 < ( 평균 - 1.5 * 시그마 ))] = 평균 - 1.5 * 시그마 ;
비열한 = 평균 ;
시그마드 = 시그마 ;
평균 = 평균 ( 엑스 ) ;
시그마 = 1.134 * 표준 편차 ( 엑스 ) ;
보여주다 ( 평균 , 시그마 ) ;
) ;
감사해요,
마이크
Re: 이상값 필터링의 Winsor 프로세스를 자동화/스크립팅하는 방법이 있습니까?C필드 : 원래 질문에 답하려면: 예, 이상값 필터링을 자동화하는 방법이 있습니다.사실, 매우 많은(무한하지는 않더라도) 방법이 있습니다.
그만큼 엠샤프 스크립트(JMP Robust Mean/Huber Center가 5.735인 원본 데이터 평균 5.785)은 Winsorized 평균 5.339를 생성합니다. 당신이 정말로 토끼 굴을 내려가고 싶다면, 12A One-Step Hampel W-Estimator(Andrews,DF, et. al(1972)가 권장하는 강력한 평균); 강력한 위치 추정: 조사 및 발전 ; Princeton University Press)는 동일한 데이터에서 5.256을 산출했습니다.
이 모든 위치 측정이 동일한 데이터에서 너무 다르다는 것이 우려됩니까?설마.성 그레고리처럼 기적의 일꾼은 "다른 것은 같은 것이 아니다"라고 말했습니다.사려 깊은 연구자는 적어도 어떤 형태의 합리적인 거부 절차 없이는 평균을 사용하지 않을 것입니다.그 합리적인 절차가 스크립트에서 호출될 수 있는 JMP 함수에서 쉽게 구현된다면 좋을 것입니다. 엠샤프 사용된 방법을 식별하고 이전의 "나쁜 취향과 나쁜 습관" 경고에도 주의를 기울이는 한 훌륭한 대안이 될 것입니다.
힘찬 하루 되세요!
Re: 이상값 필터링의 Winsor 프로세스를 자동화/스크립팅하는 방법이 있습니까?정확한 종이를 따르는 빠른 코드는 다음과 같습니다.
//종이에 데이터 세트
x = [4.5,4.9,5.6,4.2,6.2,5.2,9.9];
//중앙값 및 강력한 시그마 결정(MAD)
평균 = 분위수(.5,x);
y = abs(x - 평균);
MAD = 분위수(.5,y);
시그마 = MAD*1.5;
시그마올드 = 0;
//모이다
동안(abs(sigma - sigmaold) > 2e-16,
for(i=1,i<=nrows(x),i++,
if(엑스 <평균-1.5*시그마,
엑스 = 평균-1.5*시그마
);
if(엑스 >평균+1.5*시그마,
엑스 = 평균+1.5*시그마
);
);
평균 = 평균;
sigmaold = 시그마;
평균 = 평균(x);
시그마 = 1.134*std dev(x);
);
//평가하다
프린트(엑스);
Re: 이상값 필터링의 Winsor 프로세스를 자동화/스크립팅하는 방법이 있습니까?msharp가 링크하는 AMC 논문에 설명된 Huber 방법을 따랐습니다.스크립팅은 나쁘지 않았습니다. 어려운 부분은 알고리즘을 올바르게 해석했는지 확인하는 것입니다.내가 (예를 들어 N 번) 반복하고 데이터 배열을 새로운 평균 모자 +/- 1.5 x 시그마 모자 값으로 업데이트할 때 i번째 반복의 경우 i-1의 데이터 배열을 사용하는 것처럼 보이지만 이것은 나를 위해 작동하지 않습니다. 업데이트된 mean-hat 및 sigma-hat을 사용하면서 항상 원래 데이터(i=0)를 업데이트하여 더 나은 결과를 얻습니다.더 나은 결과이지만 잘못된 것 같습니다. 이 알고리즘을 구현한 경험이 있는 사람이 있습니까?
덧붙여서, 이 페이지에 따르면( 분포 보고서 ), 분포 플랫폼에서 JMP의 강력한 평균/표준편차는 Huber M-추정을 사용하고 있지만 그들이 어떻게 바람을 가르고 있는지 잘 모르겠습니다. 내 스크립트는 경우에 따라 유사한 결과를 생성하고 다른 경우에는 유사하지 않습니다. 하지만 위에서 말했듯이 내가 제대로하고 있는지 확실하지 않습니다.
감사해요,
마이크
Re: 이상값 필터링의 Winsor 프로세스를 자동화/스크립팅하는 방법이 있습니까?로버스트 평균 및 로버스트 표준 편차를 계산하는 방법에는 여러 가지가 있습니다.내가 참조하는 기사는 중앙값(정의상 강력한 평균)과 MAD(강력한 표준 편차)를 계산하는 방법을 보여줍니다.이것들은 가장 기본적인 것입니다.그러나 중심과 산포를 계산하고 이상치 데이터로 인한 변화에 저항하는 모든 메트릭은 강력한 평균 또는 강력한 표준 편차로 간주될 수 있으며 중앙값/MAD 접근 방식보다 확실히 더 복잡한 알고리즘이 있습니다.
이 기사를 공유하기로 선택한 이유는 이해하기 쉬운 중앙값/MAD를 사용하여 Winsorizing 프로세스의 기본 사항을 보여주기 때문입니다.프로세스를 처음부터 프로그래밍하려면 여기에서 시작하겠습니다.
저는 JMP 프로그래머가 아니므로 그들이 사용하는 실제 방법을 모릅니다. 그러나 나는 그들이 그 논문에 기술된 방법을 사용하는지 의심스럽다.그 논문은 정말 기본을 이해하는 데 도움이 됩니다.논문 자체에는 대부분의 결함이 명시되어 있으며 프로그래머에게 가장 눈에 띄는 것은 느린 수렴입니다.
Re: 이상값 필터링의 Winsor 프로세스를 자동화/스크립팅하는 방법이 있습니까?에게 C필드 : 이제 더 잘 이해합니다.쉽게 스크립팅할 수 없는 유일한 강력한 절차는 아닙니다!배포 플랫폼의 Robust Means 및 Robust Standard Deviation은 JSL에서도 사용할 수 있는 기능이 아닙니다.작년 크리스마스 산타 목록을 참조하십시오...
에게 엠샤프 : JMP에 Robust Mean 및 Robust Standard Deviation에 대한 참조를 요청했을 때 개발자는 Huber, PJ(1973)로 안내했습니다. "강력한 회귀: 점근법, 추측 및 몬테카를로"; Annals of Statistics, Vol 1, No. 5, pp799-821, 귀하가 인용한 참고 문헌과 실질적으로 다른 절차를 자세히 설명합니다.Peter Huber는 Robust Statistics의 거물이며, 이 주제에 관한 그의 최신 저서(Robust Statistics 2004)는 M 추정치(Annals 논문에서도 자세히 설명됨)를 칭찬하므로 JMP가 실제로 Winsorizing을 수행하고 있는지 모르겠습니다. 당신은 참조.진짜야?
Huber M 추정치는 처음부터 스크립팅하기에 너무 재미있을 것 같지 않습니다.따라서 크리스마스 목록 요청입니다.
Re: 이상값 필터링의 Winsor 프로세스를 자동화/스크립팅하는 방법이 있습니까?일반적으로 원인을 모른 채 이상값을 필터링하는 것은 좋지 않은 취향과 나쁜 습관으로 간주됩니다.원인이 알려진 경우에도 데이터 세트에 적용되지 않는 필터링 기준을 사용하면 데이터 세트에 이상값을 그대로 두는 것보다 더 많은 오류가 발생합니다.중요한 질문을 해야 합니다. 데이터가 대칭입니까? 비뚤어진? 정상? 마스킹이 있습니까?데이터 세트가 실제로 두 가지 다른 분포입니까?나누는 것이 더 좋을까요?데이터를 실제로 보지 않고는 실제로 데이터를 아는 것은 불가능합니다.이상값 필터링을 자동화하면 잘못된 결론이 도출됩니다."p-hacking"만큼 나쁜 관행입니다.
물론 이것이 프로세스를 자동화할 이유가 없다는 의미는 아닙니다.예를 들어 이상값 필터링 기준을 사용하여 시간 경과에 따라 데이터를 보거나 모니터링하는 컨트롤 차트에서 컨트롤 제한 업데이트를 자동화합니다.
자동화하려면 스크립트를 작성해야 합니다.너는 볼 수있어 http://www.rsc.org/images/robust-statistics-technical-brief-6_tcm18-214850.pdf Huber Method가 실제로 수행하는 작업에 대한 자세한 내용은 다음을 참조하십시오.도움이 되었기를 바랍니다.
Re: 이상값 필터링의 Winsor 프로세스를 자동화/스크립팅하는 방법이 있습니까?JMP의 대부분의 모든 작업은 빨간색 삼각형으로 이동하고 script > COPY SCRIPT로 이동하여 스크립팅할 수 있습니다.
이렇게 하면 이러한 스크립트 조각을 더 큰 자동화 프로그램에 함께 붙일 수 있습니다.
이는 모든 JMP 작업/함수 등에 적용됩니다. 단, 아래의 Robust Outlier Filter 함수는 예외입니다.
COL > 모델링 유틸리티 > 이상값 탐색
주어진 매개변수 세트에서 K=3으로 Huber 필터를 자동화하고 싶습니다.나는 이것을 계속해서 할 것입니다.
작업량을 줄이기 위해 자동화하고 싶습니다.
Re: 이상값 필터링의 Winsor 프로세스를 자동화/스크립팅하는 방법이 있습니까?귀하의 질문이 저를 혼란스럽게 합니다.Winsorising outliers는 일반적으로 극단 값을 제외하지 않고 지정된 백분위 수로 설정하는 것으로 정의됩니다.신호 처리의 클리핑과 유사합니다.이상값 행을 제외하는 것은 일반적으로 Winsorising이 아닙니다.
즉, 마음이 원하는 모든 알고리즘 접근 방식을 스크립팅할 수 있습니다.이를 수행하기 위해 스크립트를 작성하는 경우 행렬을 사용하십시오.특히 대규모 데이터 세트에서 훨씬 빠르게 실행됩니다.