만 켄달<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕하세요. 일시적 추세가 중요한지 테스트하기 위해 Mann-Kendall을 실행하려고 합니다. JMP 매뉴얼이나 온라인에서 찾을 수 없습니다. 누구나 아이디어가 있습니까?
감사해요!
만 켄달MS와 Dave에게 감사합니다! Kendall's Tau와 Mann-Kendall 테스트가 동일한지(및/또는 관련되어 있는지) 확신할 수 없었습니다. 다변량 테스트에 대한 정보와 스크립트에 대한 정보에 감사드립니다!
만 켄달Mann-Kendall 검정 통계량과 Kendall Tau b의 정의가 종종 서로 다른 용어(각각 시계열 및 상관 관계 관점에서)로 설명되더라도 내가 말할 수 있는 한 본질적으로 동일합니다.
아래는 꽤 오래 전에 작성한 스크립트입니다. Theil의 기울기를 계산하고 표시하며 Mann-Kendall 테스트를 수행합니다. 파라메트릭 선형 회귀선은 비교를 위해 플롯에 표시됩니다. "By" 함수와 계절 패턴을 설명할 수 있는 가능성을 포함하여 스크립트를 일반화할 계획이었습니다. 하지만 아직 그 계획을 실현할 시간이 없었습니다. 이것이 당신에게 몇 가지 아이디어를 줄 수 있기를 바랍니다.
dt = 현재 데이터 테이블 () ;
dlg = 열 대화상자 (
"데이터 테이블에서 Theil 기울기와 Kendall Tau 추정" ||
숯 ( dt << 이름을 얻다 ) ,
예 = 콜리스트 ( "Y를 선택하세요" ,
맥스콜 ( 1 ) ,
민콜 ( 1 ) ,
데이터 형식 ( 숫자 )
) ,
Xs = 콜리스트 ( "X 선택" ,
맥스콜 ( 1 ) ,
민콜 ( 1 ) ,
데이터 형식 ( 숫자 )
) ,
그룹 = 콜리스트 ( "(작동하지 않음)" , 맥스콜 ( 1 ) )
) ;
콜리 = 열 ( dt , dlg [ "예" ] ) ;
colX = 열 ( dt , dlg [ "X" ] ) ;
콜그룹 = 열 ( dt , dlg [ "그룹" ] ) ;
//타일 기울기 계산
N = N 행 ( dt ) ;
슬로프 = 제이 ( N , N , . ) ;
을 위한 ( 나 = 1 , 나 < N , 나 ++,
을 위한 ( 제이 = 나 + 1 , 제이 <= N , 제이 ++,
슬로프 [ 나 , 제이 ] = ( 콜리 [ 제이 ] - 콜리 [ 나 ]) / ( colX [ 제이 ] - colX [ 나 ])
)
) ;
더일 = 분위수 ( 0.5 , 슬로프 ) ;
// 기울기가 0이 아닌지 테스트하기 위한 Kendall의 Tau b
mv = 다변량 (
와이 ( 콜리 , colX ) ,
산점도 행렬 ( 0 ) ,
다변량 상관 관계 ( 0 ) ,
켄달의 타우 ( 1 )
) ;
//데이터를 플로팅하고 선형 회귀 및 Theil의 기울기를 추가합니다.
비브 = 이변량 (
와이 ( 콜리 ) ,
엑스 ( colX ) ,
핏 라인 ( { 선 색상 ( "빨간색" )} ) ,
핏 스페셜 ( 경사 ( 더일 ) , { 선 색상 ( "녹색" )} ) ,
보이지 않는
) ;
르비브 = 비브 << 보고서 ;
르비브 [ "선형 맞춤" ] << 이렇게 모두 닫아 ;
르비브 [ 개요 상자 ( 7 )] << 제목 설정 ( "테일의 슬로프" ) ;
DB = 보고서 ( mv )[ "다변량" ] << 부모의 ;
DB << 앞에 붙이다 ( 르비브 ) ;
DB [ 텍스트 상자 ( 4 )] << 텍스트 설정 ( "테일의 슬로프" ) ;
르비브 << 창 닫기 ;
Re: 만 켄달Mann-Kendall 테스트가 비모수적 상관관계에 대한 Kendall Tau 통계와 어느 정도 관련이 있는지(만약 있다면) 확실하지 않습니다.후자는 다변량 플랫폼에서 액세스할 수 있습니다: 분석>다변량 방법 그런 다음 다변량 보고서에서 핫스팟의 비모수 상관관계를 선택합니다.
테스트가 완전히 다른 경우 이 방법에 대한 참조에 관심이 있습니다.수문학 분야를 위해 개발된 여러 가지 방법(예: Hurst Index)을 구현하는 추가 기능을 구축하는 것을 고려하고 있습니다.
문안 인사
데이브
제목: Mann Kendall안녕하세요. 다음은 Big Class 예제를 사용하여 By Role(2개 수준)에서 열이 지정된 상황을 다루는 스크립트에 대한 업데이트입니다.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dlg = Column Dialog(
"Estimate Theil slope and Kendall Tau from Data Table " ||
Char( dt << get name ),
Ys = ColList( "Select Y",
maxcol( 1 ),
mincol( 1 ),
Datatype( numeric )
),
Xs = ColList( "Select X",
maxcol( 1 ),
mincol( 1 ),
Datatype( numeric )
),
Group = ColList( "By", maxcol( 1 ) )
);
colY = Column( dt, dlg["Ys"] );
colX = Column( dt, dlg["Xs"] );
colGroup = Column( dt, dlg["Group"] );
//create subset data tables when By Role is used
subdt = dt << Subset(
By( :sex ),
All rows,
Selected columns only( 0 ),
);
//hide subset data tables, for 2 levels of the Group column in the By Role
subdt[1] << Show Window(0);
subdt[2] << Show Window(0);
//Calculation of Theil-Sen slope: A robust non-parametric estimate of trend magnitude.
theil = {}; //create empty list call 'theil'to store Theil-Sen slopes
for (k = 1, k <= Nitems(subdt), k++,
curY = Column( subdt[k], dlg["Ys"] );
curX = Column( subdt[k], dlg["Xs"] );
n = N Rows( subdt[k] );
slopes = J( n, n, . ); //this is initialized not as an empty matrix but it's full of missing values
For( i = 1, i < n, i++,
For( j = i+1, j <= n, j++,
slopes[i, j] = (curY[j] - curY[i]) / (curX[j] - curX[i])
)
);
insert into(theil, Quantile( 0.5, slopes )); //calculate the median of all the slopes
);
new window("windowname",
/*Kendall's Tau b to test if slope differs from zero. Analogous to the Mann-Kendall significance test, which Outputs the S statistic and p-value.*/
mv = dt << Multivariate(
Y( colY, colX ),
Scatterplot Matrix( 0 ),
Correlations multivariate( 0 ),
Kendall's Tau( 1 ), /*see above*/
By(colGroup)
);
//Plot data and add linear regression and Theil's slope
biv = dt << Bivariate(
Y( colY ),
X( colX ),
By(colGroup),
Fit Line( {Line Color( "Red" )} ),
//invisible
);
);
//Plot Theil's Slopes using Fit special in Bivariate report
biv[1] << Fit Special( Slope( theil[1] ), {Line Color( "Green" )});
biv[2] << Fit Special( Slope( theil[2] ), {Line Color( "Green" )});
rbiv = biv << Report;
rbiv[1]["Linear Fit"] << close all like this;
//all of the second linear fit outline boxes under an outline box that contains the word "sex" in the title is what I want
tsb = rbiv << Xpath("(//OutlineBox[text()='Linear Fit'])[2]"); //this returns the list of display boxes titled "Linear Fit" that I want to change to "Thiel's slope" and then I am capturing this reference with the variable name tsb
tsb << set title( "Theil's Slope" );