열이 아닌 데이터 행에 대한 기울기 찾기<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />데이터는 시간 경과에 따라 주제에 따라 연속적으로 표시됩니다. 다음 예를 참조하십시오.
<SPAN class="number token" style="color: #008080; font-weight: bold;">subject(001) data -0.069965723</SPAN> <SPAN class="number token" style="color: #008080; font-weight: bold;">0.492749371</SPAN> <SPAN class="number token" style="color: #008080; font-weight: bold;">0.955245597</SPAN> <SPAN class="number token" style="color: #008080; font-weight: bold;">1.346963522</SPAN> <SPAN class="number token" style="color: #008080; font-weight: bold;">1.701118239</SPAN> <SPAN class="number token" style="color: #008080; font-weight: bold;">2.523141195</SPAN> columns _1 _2 _3 _4 _5 _8
경사면이 필요한 수천 개의 행이 있습니다.
필자가 필요로하는 것은 행에있는 일련의 숫자 각각에 대한 기울기입니다.
각 계열 다음에 오는 새 추가 열에는 해당 계열에 대한 경사 값이 포함되어야합니다.
SAS가 이것을 처리 할 수 있는지 SAS 포럼에 요청했습니다. JMP 할 수 있다면 궁금해 ?? 어떤 도움이라도 대단히 감사하겠습니다.
니콜라스
다시 : 행이 아닌 데이터 행에 대한 기울기 찾기다른 방법이 있습니다. 스크립트는 단지 JMP를 대화식으로 실행할 수있는 것과 중복됩니다. 나는이 스크립트를 개발 한 샘플 데이터 테이블을 첨부했다.
// 샘플 데이터에 대한 포인터를 설정한다.
이름은 기본적으로 여기에있다. ( 1 ) ;
dt = 현재 데이터 테이블 () ;
// 각 행에서 6 개의 데이터 열을 쌓습니다.
쌓인 = dt << 스택 (
열 ( : _삼 , : _4 , : _5 , : _6 , : _7 , : _8) ,
소스 레이블 열 ( "상표" ) ,
누적 데이터 열 ( "데이터" )
) ;
// 시간 요소를 나타내는 새 열을 만듭니다.
쌓인 << 새 열 ( "시각" , 공식( 숫자 ( Substr ( : 상표 , 2 , 1 )) - 2 )) ;
// 각 행 (학생)별로 데이터에 대한 분석을 실행합니다.
멍청이 = 쌓인 << 이변 (보이지 않는 ,
와이( : 데이터) ,
엑스( : 시각 ) ,
맞춤 선 ({선 색 ({ 213 , 72 , 87 }}}) ,
by (_1)
) ;
// 추정 결과로부터 데이터 테이블을 생성한다.
dtslope = 보고서 (biv [ 1 ])) [ "매개 변수 추정치" ] [ 1 ] << 결합 된 데이터 테이블 만들기;
// 요격 데이터를 제거하십시오.
dtslope << 어디에서 선택 하시겠습니까? ( : 기간 == "가로 채기" ) ;
dtslope << 행 삭제;
// 원하지 않는 열을 선택하고 삭제합니다.
dtslope : 엑스 << 세트 선택됨 ( 1 ) ;
dtslope : 와이 << 세트 선택됨 ( 1 ) ;
dtslope : 기간 << 세트 선택됨 ( 1 ) ;
dtslope : 이름 ( "~ 바이어스" ) << 세트 선택됨 ( 1 ) ;
dtslope : 표준 오류 << 세트 선택됨 ( 1 ) ;
dtslope : 비율 << 세트 선택됨 ( 1 ) ;
dtslope : 이름 ( "prob> | t |" ) << 세트 선택됨 ( 1 ) ;
dtslope << 열 삭제;
// 예상 열의 이름을 Slope로 바꿉니다.
dtslope : 견적 << 세트 이름 ( "경사" ) ;
// 원래 데이터 테이블에 기울기 추가
dt << 최신 정보 (
With (dtslope) ,
열 일치 ( : _1 = : _1 )
) ;
다시 : 행이 아닌 데이터 행에 대한 기울기 찾기다음은 열 사이의 기울기를 계산하는 열 수식의 예입니다. X 값이 무엇인지는 명확하지 않지만 예제에서와 같이 열 이름으로 정의 된 것으로 가정합니다. 보시다시피 X 행렬은 이제 하드 코딩됩니다. X 값이 예를 들어 첫 번째 행 (또는 테이블 변수)에 있으면 수식을 더 일반적으로 만들 수 있습니다.
// 예제 테이블
dt = 새 테이블 ( "Slope_Across_Columns.jmp" ,
행 추가 ( 2 ) ,
새 열 ( "제목" , 캐릭터 , 가치 ({ "001" , "002" }))) ,
새 열 ( "_1" , 가치 ([ - 0.069965723 , 2 ]))) ,
새 열 ( "_2" , 가치 ([ 0.492749371 , 4 ]))) ,
새 열 ( "_삼" , 가치 ([ 0.955245597 , 6 ]))) ,
새 열 ( "_4" , 가치 ([ 1.346963522 , 8 ]))) ,
새 열 ( "_5" , 가치 ([ 1.701118239 , 10 ]))) ,
새 열 ( "_8" , 가치 ([ 2.523141195 , 16 ])))
) ;
// 수식
에프 = Eval Expr (
노동 조합 지부 ({ 나는 = 1 , 엔 = Expr ( N Col ( 현재 데이터 표 ()) - 1 ) , 엑스 = 일본 ( 엔 , 1 , 1 ) || [ 1 , 2 , 삼 , 4 , 5 , 8 ] , 와이 } ,
와이 = 매트릭스 ( 반복 ({ 나는 ++ ; 기둥 ( 나는 ) []} , 엔 )) ;
( 역 ( 엑스 ` * 엑스 ) * 엑스 ` * 와이 ) [ 2 ] ;
)
) ;
// 수식 열 추가
dt << 새 열 ( "경사" , 숫자 , 공식 ( 이름 설명 ( 에프 )))) ;
다시 : 행이 아닌 데이터 행에 대한 기울기 찾기안녕하세요 노 코마 닉 ,
대답은 '예'입니다.
일반적으로 데이터를 조 변경하고 계산해야합니다. 데이터 테이블이 너무 크다고 가정하면 행렬을 조 변경하는 것이 더 쉽다고 생각합니다. 따라서 일반적으로이 프로세스는 데이터를 행렬로 추출하여이를 전치시키고 기울기를 계산합니다. 이것 좀 봐. 그것은 설명을위한 모든 단계를 수행합니다. 그것은 매우 견고하지 않다 (당신이 가치가 없다면) 또는 우스운 것.
베스트,
론
// 데이터 테이블을 만듭니다.
dt = 새 테이블 ( "행의 데이터" ,
행 추가 ( 100 ) ,
새 열 ( "제목" , 공식 ( 열 ())) ,
새 열 ( "경사" ) ,
새 열 ( "R2" ) ,
여러 열 추가 ( "기둥" , 20 , 숫자 )
) ;
// 데이터 열에 값 설정
...에 대한 ( 나는 = 4 , 나는 <= 23 , 나는 ++,
: 기둥 ( 나는 ) << 공식 (( 나는 / 2 ) + 임의 정상 ()) << eval 공식 << 수식 삭제 ;
) ;
// 일을 시작하다
// 행렬로서 테이블을 얻는다.
데이터 매트릭스 = dt << GetAllColumnsAsMatrix ;
// 회귀 계산에 사용되지 않는 열을 제거합니다 (1 ~ 4 열).
데이터 매트릭스 [ 0 , 1 :: 삼 ] = [] ;
// 행렬 조인
데이터 = 데이터 매트릭스 `;
// 시간에 대해 x 변수를 만듭니다.
엑스 = ( 1 :: ncol ( 데이터 매트릭스 )) `;
// 요격 항에 대해 1의 열을 추가합니다.
엑스 = 일본 ( Nrow ( 엑스 ) , 1 ) || 엑스 ;
// 이제 우리는 계산에 필요한 모든 데이터를 행렬 형식으로 갖습니다.
...에 대한 ( 나에게 = 1 , 나에게 <= 안주 ( dt ) , 나에게 ++, // 각 행에 대해
// 개별 데이터를 하나씩 추출합니다.
와이 = 데이터 [ 0 , 나에게 ] ;
// 최소 자승 추정을 계산합니다.
β = Inv ( 엑스 `* 엑스 ) * 엑스 `* 와이 ;
dt : 경사 [ 나에게 ] = β [ 2 ] ;
// R2를 계산한다.
엔 = NRows ( 와이 ) ;
Ybar = 평균 ( 와이 ) ;
R2 = ( β `* 엑스 `* 와이 - 엔 * Ybar ^ 2 ) / ( 와이 `* 와이 - 엔 * Ybar ^ 2 ) ;
dt : R2 [ 나에게 ] = R2 ;
) ;