기울기 및 절편 기능JMP에는 기울기나 절편 기능이 없다는 사실을 알고 매우 놀랐습니다. 정말 그럴 수 있을까?
Slope(xMatrix, yMatrix), Intercept 등의 함수가 있으면 좋을 것 같습니다. (xMatrix, yMatrix), Col Slope(xCol, yCol, By Vraiables) 및 Col Intercept(xCol, yCol, By Vraiables)가 추가되어(및 R2, SE 등과 같은 진단 기능) 간단한 RMS 선형 회귀 계수를 생성합니다.
나는 이변량에서 회귀를 수행하고 경사도 등의 데이터 테이블을 생성하고 이를 사용하여 원래 테이블을 업데이트할 수 있다는 것을 알고 있지만 이는 동적이지 않으며 많은 수의 회귀 분석에 실용적이지 않습니다.
앞으로도 이런 기능을 추가해주셨으면 좋겠습니다.
Re: 기울기 및 절편 함수** 편집하다:
이 게시물을 기반으로 JMP 14에 Linear Regression() JSL 함수를 추가했습니다. 이제 기울기와 절편을 추출하는 JSL이 훨씬 간단해졌습니다.
coefs = Linear Regression( y, X )[1]; <BR />coefs[1]; // intercept
coefs[2]; // slope
t-검정 통계, p-값 및 R-제곱과 같은 다양한 진단도 반환되고 (선택적으로) 로그 창에 깔끔하게 인쇄됩니다.선형 회귀() 할 수 있다 단순한 선형 회귀 그 이상입니다. 모든 선택적 기능과 함께 함수를 사용하는 세 가지 다른 예는 스크립팅 색인을 참조하세요.
***
제스퍼,
추천해주셔서 감사합니다. 이는 좋은 제안입니다. 향후 JMP 버전에 더 나은 솔루션을 추가할 수 있도록 노력하겠습니다.그동안 JMP 13에 Least Squares Solve라는 JSL 함수를 추가했는데, 이는 여러분에게 유용할 것입니다.
두 줄의 코드에서 절편, 기울기 및 표준 오류에 대한 추정치를 얻을 수 있습니다(결과를 추출하기 위한 코드는 계산하지 않음).요청한 것보다 더 일반적이며 선형 대수학에 대한 지식이 있으면 가장 쉽게 이해할 수 있습니다. 또한 Fit Y by X와 같은 플랫폼에서 사용할 수 있는 R^2 값이나 모델 피팅 진단도 보고하지 않습니다.
Least Squares Solve를 사용하여 간단한 선형 회귀를 맞추는 방법을 보여주기 위해 x에 대해 임의의 벡터를 생성한 다음 x에 선형적으로 의존하는 y를 생성했습니다.
// Generating some data
intercept = 2; slope = 4;
x = J(100,1,Random Normal());
y = intercept + x * slope +J (100,1,Random Normal(0,.3));
JMP 13에서 최소 제곱법 풀이에는 설계 행렬이 필요하며 절편 항이 추가되지 않습니다. 절편을 추가하려면 관찰된 x에 1의 열을 추가해야 합니다. 이를 수행하는 JSL은 다음과 같습니다.
// add an intercept term by adding a column of 1s to the design matrix, X
X.design = J(nrow(x),1) || x;
선형 대수학에 익숙하다면 Least Squares Solve는 모델과 관련된 정규 방정식을 풀 것입니다.
y = X.design * 베타 + 오류
그러나 X.design에는 2개의 열이 있고 첫 번째 열은 1의 열이므로 이 모델은 개별 i에 대해 단순 선형 회귀로 단순화됩니다.
y_i = 절편 + 기울기 * x_i + error_i.
// Solve for intercept, slope, and variance terms for each
{beta, var} = Least Squares Solve(X.design, y);
Least Squares Solve()는 추정된 베타 계수(이 경우 절편 및 기울기)와 관련 분산 및 공분산을 반환합니다. 표준 오차는 추정 분산의 제곱근입니다. 절편, 기울기 및 해당 표준 오류를 추출하기 위한 코드는 다음과 같습니다.
// To retrieve the intercept, slope, and their associated standard errors:
beta[1]; //the intercept
beta[2]; //the slope
sqrt(var[1,1]); // the standard error for the intercept
sqrt(var[2,2]); // the standard error for the slope
이게 도움이 되길 바란다,
마일로
Re: 기울기 및 절편 함수내가 원하는 계산을 수행하지만 내가 선호하는 방식은 아닙니다. 다시 말하지만, 나는 계산을 할 수 있으므로 그것은 문제가 되지 않습니다. 나는 더 쉬운 방법이 있을 수 있다고 생각합니다.
Re: 기울기 및 절편 함수안녕하세요, 제스퍼 님,
당신은 본 적이 있나요? 경사와 절편을 수집하기 위한 추가 기능 ?
나는 이것이 당신이 원하는 것을 할 것이라고 믿습니다.
건배,
스탠
Re: 기울기 및 절편 함수감사합니다
해결책을 찾을 때도 후자의 예를 본 것 같습니다. 나는 아직도 그것이 내 문제를 해결한다고 생각하지 않습니다. 내 문제는 기울기와 절편을 계산할 수 없다는 것이 아니라 그렇게 하는 것이 불필요하게 번거롭다는 것입니다.
귀하의 예에서는 함수를 스크립팅하고 테이블에서 관련 By-변수 각각에 대해 x 및 y 행렬을 추출하는 코드도 생성해야 합니다.
제 질문은 계산을 도와달라는 것이 아닙니다. 나는 단지 내장된 기능에 대한 나의 소망을 말하고 싶습니다. 만약 거기에 있었다면 나는 그것을 정기적으로 사용할 것입니다. 그리고 이제는 같은 빈도로 그리워집니다.
제스퍼
Re: 기울기 및 절편 함수그만큼 JMP 스크립팅 가이드 에 섹션이 있습니다 통계적 예 에서 데이터 구조 섹션 행렬 이는 행렬 연산을 사용하여 선형 회귀를 계산하는 방법을 보여줍니다.
나는 이 예제를 사용하여 여러분이 찾고 있던 기울기() 및 Intercept() 함수를 만들었습니다.
slope = Function( {x, y},
{beta},
If( !(Is Matrix( x ) & Is Matrix( y ) & N Col( x ) == 1 & N Col( y ) == 1),
Show( "x or y arguments are not matrices or they have more than one column" );
Throw();
,
x = J( N Row( x ), 1 ) || x; // put in an intercept column of 1s
beta = Inv( X` * X ) * X` * Y; // the least square estimates
beta[2];
)
);
intercept = Function( {x, y},
{beta},
If( !(Is Matrix( x ) & Is Matrix( y ) & N Col( x ) == 1 & N Col( y ) == 1),
Show( "x or y arguments are not matrices or they have more than one column" );
Throw();
,
x = J( N Row( x ), 1 ) || x; // put in an intercept column of 1s
beta = Inv( X` * X ) * X` * Y; // the least square estimates
beta[1];
)
);
Y = [98, 112.5, 84, 102.5, 102.5, 50.5, 90, 77, 112, 150, 128, 133, 85, 112];
X = [65.3, 69, 56.5, 62.8, 63.5, 51.3, 64.3, 56.3, 66.5, 72, 64.8, 67, 57.5, 66.5];
s = slope( x, y );
i = intercept( x, y );
Show( s, i );
그만큼 통계적 예 섹션에서는 예제를 확장하여 다중 회귀에 대한 잔차 및 기타 진단 결과를 계산하는 방법도 보여줍니다.
아래에서 그 예를 반복하겠습니다.
// open the data table
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// get data into matrices
x = (Column( "Age" ) << Get Values) || (Column( "Height" ) << Get Values);
x = J( N Row( x ), 1, 1 ) || x;
y = Column( "Weight" ) << Get Values;
// regression calculations
xpxi = Inv( x` * x );
beta = xpxi * x` * y; // parameter estimates
resid = y - x * beta; // residuals
sse = resid` * resid; // sum of squared errors
dfe = N Row( x ) - N Col( x ); // degrees of freedom
mse = sse / dfe; // mean square error, error variance estimate
// additional calculations on estimates
stdb = Sqrt( Vec Diag( xpxi ) * mse ); // standard errors of estimates
alpha = .05;
qt = Students t Quantile( 1 - alpha / 2, dfe );
betau95 = beta + qt * stdb; // upper 95% confidence limits
betal95 = beta - qt * stdb; // lower 95% confidence limits
tratio = beta :\</img> stdb; // Student's T ratios
probt = (1 - t Distribution( Abs( tratio ), dfe )) * 2; // p-values
// present results
New Window( "Big Class Regression",
Table Box(
String Col Box( "Term", {"Intercept", "Age", "Height"} ),
Number Col Box( "Estimate", beta ),
Number Col Box( "Std Error", stdb ),
Number Col Box( "TRatio", tratio ),
Number Col Box( "Prob>|t|", probt ),
Number Col Box( "Lower95%", betal95 ),
Number Col Box( "Upper95%", betau95 )
)
);
Re: 기울기 및 절편 함수해결 방법을 제공하는 것으로 보입니다. 이미 계산을 할 수 있었지만 쉬운 방법은 아니었습니다. 내 게시물은 기능 요청에 가깝습니다. 해당 기능이 없다는 것은 이상한 누락처럼 보입니다.
Re: 기울기 및 절편 함수아마도 이미 보셨겠지만, 그렇지 않다면 관련 스레드가 있습니다. 여기 .