태그 보관물: fitting

fitting

적합 곡선의 신뢰성? \ hat {E}

적합 곡선의 불확실성 또는 신뢰성을 추정하고 싶습니다. 나는 그것이 무엇인지 모르기 때문에 내가 찾고있는 정확한 수학적 양을 의도적으로 언급하지 않습니다.

여기서 (에너지)는 종속 변수 (응답)이고 (볼륨)는 독립 변수입니다. 일부 재료 의 에너지-볼륨 곡선 를 찾고 싶습니다 . 그래서 나는 양자 화학 컴퓨터 프로그램을 사용하여 일부 샘플 볼륨 (플롯의 녹색 원)의 에너지를 얻기 위해 계산을했습니다.V E ( V )

이자형

V

E(V)

그런 다음 I은 이러한 데이터 샘플 끼워 자작 Murnaghan 기능 :

에 따라 다릅니다. 네 개의 매개 변수 : . 또한 이것이 올바른 피팅 함수라고 가정하므로 모든 오류는 샘플의 노이즈에서 발생합니다. 다음에, 적합 함수 는 V 의 함수로 작성됩니다 .E 0 , V 0 , B 0 , B 0 ( E ) V

E(E|V)=E0+9V0B016{[(V0V)231]3B0+[(V0V)231]2[64(V0V)2]},

E0,V0,0,0

(이자형^)

V

여기에서 결과를 볼 수 있습니다 (최소 제곱 알고리즘에 적합). y 축 변수는

이자형

이고 x 축 변수는

V

입니다. 파란색 선이 적합하고 녹색 원이 샘플 점입니다.

시료의 자작 나무 -Murnaghan (파란색)

이제 전이 압력이나 엔탈피와 같은 추가 수량을 계산해야하기 때문에이 적합 곡선 \ hat {E} (V) 의 신뢰성에 대한 측정 값이

이자형^(V)

필요합니다.

내 직감에 따르면 적합 곡선이 중간에서 가장 신뢰할 수 있다고 알려주 므로이 스케치에서와 같이 불확실성 (예 : 불확실성 범위)이 샘플 데이터의 끝 부분에서 증가해야한다고 생각합니다.
여기에 이미지 설명을 입력하십시오

그러나 내가 찾고있는이 종류의 측정은 무엇이며 어떻게 계산할 수 있습니까?

정확히 말하자면 여기에는 실제로 하나의 오류 소스 만 있습니다. 계산 된 샘플은 계산 한계로 인해 노이즈가 발생합니다. 따라서 밀도가 높은 데이터 샘플 세트를 계산하면 울퉁불퉁 한 곡선을 형성합니다.

원하는 불확실성 추정치를 찾는 나의 생각은 학교에서 배울 때 매개 변수를 기반으로 다음과 같은“오류 ”를 계산하는 것입니다 ( 불확실성의 전파 ).

Δ이자형(V)=(이자형(V)이자형0Δ이자형0)2+(이자형(V)V0ΔV0)2+(이자형(V)0Δ0)2+(이자형(V)0Δ0)2

및 , 피팅 소프트웨어에 의해 주어진다.

Δ이자형0,ΔV0,Δ0

Δ0

그것이 수용 가능한 접근입니까, 아니면 잘못하고 있습니까?

추신 : 나는 데이터 샘플과 곡선 사이의 잔차 제곱을 합산하여 일종의“표준 오류 ”를 얻을 수는 있지만 볼륨에 의존하지는 않습니다.



답변

이것은 일반적인 최소 제곱 문제입니다!

정의

엑스=V2/, =V01/,

모델을 다시 쓸 수 있습니다

이자형(이자형|V)=β0+β1엑스+β2엑스2+β엑스

계수 는 다음을 통해 원래 계수와 대수적으로 관련됩니다.

β=(β나는)

16β=(16이자형0+54090014405+2700512607270073609+9009).

이것은 대수적으로나 수치 적으로 풀기 쉽습니다 : , w 가 양수인 해를 선택하십시오. 이를 수행하는 유일한 이유는 B 0 , B 0 , wE 0의 추정값을 획득 하고 물리적으로 의미가 있는지 확인하기위한 것입니다. 적합도에 대한 모든 분석은 β 로 수행 할 수 있습니다 .

0,0

0,0,

이자형0

β

위한 분산 공분산 행렬이 접근법은 또한보다 정확한 만 훨씬 간단한 비선형 피팅 이하이다 비선형 맞춤에 의해 반환이에만 로컬 차 근사 이러한 파라미터의 분포를 샘플링하는 반면 ( E 측정에서 정상적으로 분포 된 오차의 경우) OLS 결과는 근사치가 아닙니다.

(이자형0,0,0,V0)

이자형

β^

R

그림

#
# The data.
#
X <- data.frame(V=c(41, 43, 46, 48, 51, 53, 55.5, 58, 60, 62.5),
                E=c(-48.05, -48.5, -48.8, -49.03, -49.2, -49.3, -49.35,
                    -49.34, -49.31, -49.27))
#
# OLS regression.
#
fit <- lm(E ~ I(V^(-2/3)) + I(V^(-4/3)) + I(V^(-6/3)), data=X)
summary(fit)
beta <- coef(fit)
#
# Prediction, including standard errors of prediction.
#
V0 <- seq(40, 65)
y <- predict(fit, se.fit=TRUE, newdata=data.frame(V=V0))
#
# Plot the data, the fit, and a three-SEP band.
#
plot(X$V, X$E, xlab="Volume", ylab="Energy", bty="n", xlim=c(40, 60))
polygon(c(V0, rev(V0)), c(y$fit + 3*y$se.fit, rev(y$fit - 3*y$se.fit)),
        border=NA, col="#f0f0f0")
curve(outer(x^(-2/3), 0:3, `^`) %*% beta, add=TRUE, col="Red", lwd=2)
points(X$V, X$E)

β

그림 2


답변

나는

나는


그러면 해당 종속 변수에 대한 추정 분산이 제공됩니다. 추정 된 표준 편차를 얻으려면 제곱근을 취하십시오. 신뢰 한계는 예측 된 값 +-2 표준 편차입니다. 이것은 표준 가능성입니다. 비선형 회귀의 특수한 경우 자유도를 교정 할 수 있습니다. 10 개의 관측치와 4 개의 매개 변수가 있으므로 10/6을 곱하여 모형의 분산 추정치를 증가시킬 수 있습니다. 여러 소프트웨어 패키지가이를 수행합니다. AD Model Builder의 AD Model로 모델을 작성하고 적합하게하고 수정되지 않은 분산을 계산했습니다. 값을 조금 추측해야하기 때문에 그들은 당신과 약간 다를 것입니다.

                    estimate   std dev
10   pred_E      -4.8495e+01 7.5100e-03
11   pred_E      -4.8810e+01 7.9983e-03
12   pred_E      -4.9028e+01 7.5675e-03
13   pred_E      -4.9224e+01 6.4801e-03
14   pred_E      -4.9303e+01 6.8034e-03
15   pred_E      -4.9328e+01 7.1726e-03
16   pred_E      -4.9329e+01 7.0249e-03
17   pred_E      -4.9297e+01 7.1977e-03
18   pred_E      -4.9252e+01 1.1615e-02

이는 AD Model Builder의 모든 종속 변수에 대해 수행 할 수 있습니다. 다음과 같이 코드에서 적절한 지점에 변수를 선언합니다.

   sdreport_number dep

다음과 같이 종속 변수를 평가하는 코드를 작성합니다.

dep=sqrt(V0-cube(Bp0)/(1+2*max(V)));

이는 모형 피팅에서 관찰 된 최대 변수의 2 배인 독립 변수 값에 대해 평가됩니다. 모형을 적합하면이 종속 변수에 대한 표준 편차를 얻습니다.

19   dep          7.2535e+00 1.0980e-01

엔탈피-볼륨 함수의 신뢰 한계를 계산하기위한 코드를 포함하도록 프로그램을 수정했습니다. 코드 (TPL) 파일은 다음과 같습니다.

DATA_SECTION
 init_int nobs
 init_matrix data(1,nobs,1,2)
 vector E
 vector V
 number Vmean
LOC_CALCS
 E=column(data,2);
 V=column(data,1);
 Vmean=mean(V);

PARAMETER_SECTION
 init_number E0
 init_number log_V0_coff(2)
 init_number log_B0(3)
 init_number log_Bp0(3)
 init_bounded_number a(.9,1.1)
 sdreport_number V0
 sdreport_number B0
 sdreport_number Bp0
 sdreport_vector pred_E(1,nobs)
 sdreport_vector P(1,nobs)
 sdreport_vector H(1,nobs)
 sdreport_number dep
 objective_function_value f
PROCEDURE_SECTION
  V0=exp(log_V0_coff)*Vmean;
  B0=exp(log_B0);
  Bp0=exp(log_Bp0);
  if (current_phase()<4)
  f+=square(log_V0_coff) +square(log_B0);

  dvar_vector sv=pow(V0/V,0.66666667);
  pred_E=E0 + 9*V0*B0*(cube(sv-1.0)*Bp0
    + elem_prod(square(sv-1.0),(6-4*sv)));

  dvar_vector r2=square(E-pred_E);
  dvariable vhat=sum(r2)/nobs;
  dvariable v=a*vhat;
  f=0.5*nobs*log(v)+sum(r2)/(2.0*v);

  // code to calculate the  enthalpy-volume function
  double delta=1.e-4;
  dvar_vector svp=pow(V0/(V+delta),0.66666667);
  dvar_vector svm=pow(V0/(V-delta),0.66666667);
  P = -((9*V0*B0*(cube(svp-1.0)*Bp0
      + elem_prod(square(svp-1.0),(6-4*svp))))
      -(9*V0*B0*(cube(svm-1.0)*Bp0
      + elem_prod(square(svm-1.0),(6-4*svm)))))/(2.0*delta);
  H=E+elem_prod(P,V);

dep=sqrt(V0-cube(Bp0)/(1+2*max(V)));

그런 다음 H의 추정치에 대한 표준 개발자를 얻기 위해 모델을 개조했습니다.

29   H           -3.9550e+01 5.9163e-01
30   H           -4.1554e+01 2.8707e-01
31   H           -4.3844e+01 1.2333e-01
32   H           -4.5212e+01 1.5011e-01
33   H           -4.6859e+01 1.5434e-01
34   H           -4.7813e+01 1.2679e-01
35   H           -4.8808e+01 1.1036e-01
36   H           -4.9626e+01 1.8374e-01
37   H           -5.0186e+01 2.8421e-01
38   H           -5.0806e+01 4.3179e-01

이 값은 관측 된 V 값에 대해 계산되지만 모든 V 값에 대해 쉽게 계산할 수 있습니다.

이것은 실제로 OLS를 통해 파라미터 추정을 수행하는 간단한 R 코드가있는 선형 모델이라는 것이 지적되었습니다. 이것은 특히 순진한 사용자에게 매우 매력적입니다. 그러나 30 년 전에 Huber의 작업을 통해 OLS를 거의 항상 대체 할만한 대안으로 대체해야한다는 것을 알고 있거나 알아야합니다. 이것이 일상적으로 이루어지지 않는 이유는 강력한 방법이 본질적으로 비선형이기 때문입니다. 이 관점에서 R의 간단한 매력적인 OLS 방법은 기능이 아니라 함정에 가깝습니다. AD Model Builder 접근법의 advabtage는 비선형 모델링에 대한 지원을 기본적으로 제공합니다. 최소 제곱 코드를 강력한 일반 혼합으로 변경하려면 한 줄의 코드 만 변경하면됩니다. 라인

    f=0.5*nobs*log(v)+sum(r2)/(2.0*v);

로 변경되었습니다

f=0.5*nobs*log(v)
  -sum(log(0.95*exp(-0.5*r2/v) + 0.05/3.0*exp(-0.5*r2/(9.0*v))));

모델에서의 과분 산량은 파라미터 a에 의해 측정된다. 1.0과 같으면 분산은 일반 모형과 동일합니다. 특이 치에 의한 분산의 인플레이션이있는 경우 a가 1.0보다 작을 것으로 예상합니다. 이 데이터에서 a의 추정치는 약 0.23이므로 분산은 정규 모형의 분산의 약 1/4입니다. 해석은 특이 치가 분산 추정치를 약 4 배 증가 시켰다는 것입니다. 이것의 결과는 OLS 모델의 모수에 대한 신뢰 한계의 크기를 증가시키는 것입니다. 이것은 효율성의 손실을 나타냅니다. 정규 혼합 모형의 경우 엔탈피-볼륨 함수의 추정 표준 편차는 다음과 같습니다.

 29   H           -3.9777e+01 3.3845e-01
 30   H           -4.1566e+01 1.6179e-01
 31   H           -4.3688e+01 7.6799e-02
 32   H           -4.5018e+01 9.4855e-02
 33   H           -4.6684e+01 9.5829e-02
 34   H           -4.7688e+01 7.7409e-02
 35   H           -4.8772e+01 6.2781e-02
 36   H           -4.9702e+01 1.0411e-01
 37   H           -5.0362e+01 1.6380e-01
 38   H           -5.1114e+01 2.5164e-01

포인트 추정치에는 약간의 변화가 있지만, 신뢰 한계는 OLS에서 생성 된 것의 약 60 %로 줄었습니다.

내가 만들고 싶은 요점은 TPL 파일에서 한 줄의 코드를 변경하면 수정 된 모든 계산이 자동으로 수행된다는 것입니다.


답변

교차 유효성 검사는 곡선의 안정성 을 평가 하는 간단한 방법입니다 .
https://en.wikipedia.org/wiki/Cross-validation_(statistics)

Δ이자형0,ΔV0,Δ0

Δ

포인트 중 하나를 피팅에서 멀리두고 피팅 곡선을 사용하여 누락 된 포인트의 값을 예측하여 1 배 유효성 검사 오류를 계산할 수 있습니다. 모든 포인트에 대해이 작업을 반복하여 각 포인트가 한 번만 사라지도록하십시오. 그런 다음 최종 곡선의 유효성 검사 오류 (모든 점에 맞는 커브)를 평균 예측 오류로 계산하십시오.

이것은 새로운 데이터 포인트에 대한 모델의 민감도를 알려줍니다. 예를 들어, 에너지 모델이 얼마나 부 정확한지 알려주지 않습니다. 그러나 이것은 단순한 피팅 오차보다 훨씬 현실적인 오차 추정치입니다.

또한 원하는 경우 예측 오류를 부피의 함수로 플로팅 할 수 있습니다.


답변