JMP는 AICc를 어떻게 계산합니까?안녕. JMP가 분포 플랫폼 또는 Fit Censored 함수에서 AICc를 어떻게 계산하는지 알고 싶습니다. 대한 연구 위키 다음 형식이어야 함을 제안합니다.
AICc = 2k - 2*Ln(최대 가능성) + (2k^2 + 2k)/(n - k - 1)
여기서 n = # 데이터 포인트, k = # 맞춤 매개변수입니다.
그러나, 이에 주제 또 다른 2개의 다른 수식이 제공됩니다.
AICc2 = n* Ln (sse/n) + 2 *k + ( 2 *ㅋ^ 2 + 2 *k)/(n - k - 1 );
여기서 sse는 데이터와 적합 분포 사이의 잔차 제곱의 합입니다.
그리고 같은 주제의 다른 공식:
AICc3 = n* Ln (sse/n) + (n*(n+k))/(nk- 2 );
서로 일치하는 이러한 공식을 찾지 못했습니다. 일관성을 확인하기 위해 다음 스크립트를 구현했습니다.
Names Default to Here(1);
dt = New Table("Test",
Add Rows(100),
New Column("Random Normal Data", Numeric,
Formula(Random Normal(0, 1))
)
);
dt << Run Formulas;
Wait(0.001);
:Random Normal Data << Suppress Eval; //So data doesn't change between computations.
//Compute AICc from Distribution platform
dist = dt << Distribution(Column("Random Normal Data"));
dist << Fit Distribution(Normal(Density Curve(1))); //AICc = +285
//Independently compute AICc using method described here: https://en.wikipedia.org/wiki/Akaike_information_criterion
x_vec = :Random Normal Data << Get Values;
mu = Mean(x_vec);
sig = Stddev(x_vec);
maxlikelihood = Normal Distribution(mu, mu, sig); //e.g. 0.5
k=2;
n=100;
aicc1 = 2*k - 2*Ln(maxlikelihood) + (2*k^2 + 2*k)/(n - k - 1); //AICc = +5.51
Show(aicc1);
//Independently compute AICc using method described in JMP Forum: https://community.jmp.com/t5/Discussions/how-do-you-get-an-r2-and-AICc-value-for-a-custom-nonlinear/m-p/187375/highlight/true#M40622
ord = Rank(x_vec);
xsort = x_vec[ord];
p_vec = (1::n)`/n;
sse = SSQ(p_vec - Normal Distribution(xsort, mu, sig));
aicc2 = n*Ln(sse/n) + 2*k + (2*k^2 + 2*k)/(n - k - 1); //AICc = -763
Show(aicc2);
//Independently compute AICc using Other method described in JMP Forum: https://community.jmp.com/t5/Discussions/how-do-you-get-an-r2-and-AICc-value-for-a-custom-nonlinear/m-p/9715
aicc3 = n*Ln(sse/n) + (n*(n+k))/(n-k-2); //AICc = -661
Show(aicc3);내 결과:
배포 플랫폼 AICc = +285
위키의 공식 AICc = +5.51
사후 AICc의 공식1 = -763
사후 AICc의 Formula2 = -661
초기 데이터는 랜덤 함수에서 생성되므로 결과가 다소 다를 수 있습니다. 그럼에도 불구하고 이러한 공식 중 어느 것도 다른 공식과 일치하지 않는다는 것이 명백해야 합니다. 가장 중요한 것은 유통 플랫폼에서 주어진 가치에 동의하지 않는다는 것입니다.
그렇다면 배포 플랫폼이 AICc를 계산하는 방법을 아는 사람이 있습니까? 자체 배포판 중 일부를 개발했고 이를 JMP에 있는 기존 배포판과 비교하고 싶기 때문에 이것이 필요합니다.
Catalina OS가 설치된 Mac에서 JMP Pro 15.2.1을 사용하는 FTR.
감사해요.
데이터 접근데이터 탐색 및 시각화품질 및 프로세스 엔지니어링결과 공유 및 소통Re: JMP는 AICc를 어떻게 계산합니까?우도 및 SSE 계산이 올바르지 않으므로 두 번째, 세 번째 및 네 번째 AICc도 올바르지 않습니다. 세 번째와 네 번째 공식은 페널티에 대한 서로 다른 근사치를 사용하므로 일치하지 않습니다.
Wikipedia의 기사와 일치하는 이 현재 공식을 참조하십시오.
Names Default To Here( 1 );
n = 100;
Random Reset( 27513 );
y = J( n, 1, Random Normal() );
dt = New Table( "Test AICc Formula", New Column( "Random Normal Data", Numeric, Continuous, Values( y ) ) );
// Compute AICc with Distribution platform
dist = dt << Distribution( Y( :Random Normal Data ) );
dist << Fit Distribution( Normal( Density Curve( 1 ) ) );
distr = dist << Report;
aiccFromDistribution = distr["Parameter Estimates"][Number Col Box( 4 )] << Get( 2 );
Show( aiccFromDistribution );
dist << Close Window;
// Compute AICc with Fit Least Squares platform
fit = dt << Fit Model(
Y( :Random Normal Data ),
Effects,
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run(
:Random Normal Data << {Summary of Fit( 1 ), Analysis of Variance( 1 ),
Parameter Estimates( 1 ), Lack of Fit( 0 ), Scaled Estimates( 0 ),
Plot Actual by Predicted( 0 ), Plot Regression( 0 ),
Plot Residual by Predicted( 0 ), Plot Studentized Residuals( 0 ),
Plot Effect Leverage( 0 ), Plot Residual by Normal Quantiles( 0 ),
Box Cox Y Transformation( 0 ), AICc( 1 )}
)
);
fitr = fit << Report;
aiccFromOLS = fitr["Summary of Fit"][NumberColBox(2)] << Get( 1 );
sse = fitr["Analysis of Variance"][NumberColBox(2)] << Get( 2 );
Show( aiccFromOLS );
fit << Close Window;
// Compute AICc using method described in JMP Help (https://www.jmp.com/support/help/en/16.0/#page/jmp/likelihood-aicc-and-bic.shtml#ww293087)
loglikelihood = Summation( i = 1, n, Log( Normal Density( y[i] ) ) );
k = 2;
aiccFromHelp = -2*loglikelihood + 2*k + (2*k*(k+1)/(n-(k+1)));
Show( aiccFromHelp );
//Independently compute AICc using method described in JMP Forum: https://community.jmp.com/t5/Discussions/how-do-you-get-an-r2-and-AICc-value-for-a-custom-nonlinear/m-p/187375/highlight/true#M40622
sse = Sum( (y - Mean( y )) ^ 2 );
aiccFromForum = n*Log( sse/n ) + 2*k + (2*k*(k+1)/(n-(k+1))) + n*Log( 2*Pi() ) + n;
Show( aiccFromForum );Re: JMP는 AICc를 어떻게 계산합니까?다음은 ? 도구를 클릭한 다음 AIC 테이블을 클릭합니다.
AIC 도움말