Надійність приталеної кривої?


11

Я хотів би оцінити невизначеність або надійність встановленої кривої. Я навмисно не називаю точну математичну величину, яку шукаю, оскільки не знаю, що це.

Тут (енергія) - залежна змінна (відповідь), а V (об'єм) - незалежна змінна. Я хотів би знайти криву енергії-об’єму ( E ( V )) деякого матеріалу. Тому я зробив декілька обчислень за допомогою комп’ютерної програми з квантової хімії, щоб отримати енергію для деяких обсягів вибірки (зелені кола на графіку).EVE(V)

Тоді я встановив ці зразки даних функцією Береза-Мурнаган : що залежить від чотирьох параметрів: E 0 , V 0 , B 0 , B 0 . Я також припускаю, що це правильна функція підгонки, тому всі помилки просто виникають від шуму зразків. Надалі, насаджена функція ( Е ) буде записана як функція V .

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

Тут ви можете побачити результат (з алгоритмом найменших квадратів). Змінної у-осі , а змінна х-осі V . Синя лінія - це відповідність, а зелені кола - вибіркові точки.EV

Береза-Мурнаган прилягають (синій) зразка (зелений)

Тепер потрібна якась - то ступінь надійності (в кращому випадку, в залежності від обсягу) цього кривого , тому що це потрібно для розрахунку додаткових кількостей як перехідні тиску або ентальпії.E^(V)

У моїй інструкції йдеться про те, що встановлена ​​крива найнадійніша в середині, тому я здогадуюсь, що невизначеність (скажімо, діапазон невизначеності) повинна зростати наприкінці вибіркових даних, як у цьому ескізі: введіть тут опис зображення

Однак, що це за міра, яку я шукаю, і як я можу її обчислити?

Якщо бути точним, насправді тут є лише одне джерело помилок: Обчислені вибірки шумно обумовлені обчислювальними обмеженнями. Тож якби я обчислив щільний набір зразків даних, вони формували б кричущу криву.

Моя ідея знайти бажану оцінку невизначеності - це обчислити наступну "помилку" на основі параметрів, коли ви її вивчаєте в школі ( поширення невизначеності ):

ΔЕ0,ΔV0,ΔB0іΔB'0, визначаються програмним забезпеченням фитинга.

ΔE(V)=(E(V)E0ΔE0)2+(E(V)V0ΔV0)2+(E(V)B0ΔB0)2+(E(V)B0ΔB0)2
ΔE0,ΔV0,ΔB0ΔB0

Це прийнятний підхід чи я роблю це неправильно?

PS: Я знаю, що я міг би також просто підсумувати квадрати залишків між моїми зразками даних та кривою, щоб отримати якусь "стандартну помилку", але це не залежить від обсягу.


жоден з ваших параметрів не є показником, що добре. Яке програмне забезпечення NLS ви використовували? Більшість поверне оцінку параметричної невизначеності (що може бути абсолютно нереально, якщо ваші параметри є показниками, але це не ваш випадок).
DeltaIV

У правій частині рівняння немає А, але це відображається у вашому сюжеті. Коли ви говорите "чотири параметри", ви маєте на увазі параметри в статистичному сенсі (в такому випадку, де ваші IV) або ви маєте на увазі змінні (у такому випадку, де ваші параметри)? Поясніть, будь ласка, роль символів - що вимірюється, а що - невідомо?
Glen_b -Встановити Моніку

1
Я думаю, що V - A ^ 3. ось що я використав, і мій сюжет виглядав ідентичним його.
Дейв Фурньє

@Glen_b Я щойно припустив, що вісь Y є E у функції Береза-Мурнаган, тоді як вісь x дорівнює V. Чотири параметри - це чотири параметри функції Береза ​​– Мурнаган. Якщо ви припускаєте, що ви отримуєте щось, схоже на те, що він має.
Дейв Фурньє

Ах, чекай, я нарешті дістаю. не є оператором очікування (як я очікував би побачити на LHS рівняння без терміну помилки на RHS), E - змінна відповіді, записана як функція у вигляді y ( x ) . ВЕЛИКИЙ ПІДКЛАД для всіх: Не показуйте рівняння з E ( ) зліва від рівняння регресії статистику, не ретельно визначаючи, що ви маєте на увазі, тому що вони, ймовірно, припускають, що це очікування. E()Ey(x)E()
Glen_b -Встановіть Моніку

Відповіді:


8

Це звичайна проблема найменших квадратів!

Визначення

x=V2/3, w=V01/3,

модель може бути переписана

E(E|V)=β0+β1x+β2x2+β3x3

β=(βi)

16β=(16E0+54B0w39B0B0w3144B0w5+27B0B0w5126B0w727B0B0w736B0w9+9B0B0w9).

B0,B0wB0,B0,wE0β

(E0,B0,B0,V0)E

β^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


1
Хоча це правда, що алгоритми пристосування лінійних моделей набагато більш чисельно стійкі, ніж алгоритми для нелінійних моделей, невірно, що існує різниця в точності діагностики до тих пір, поки нелінійний алгоритм підгонки сходиться. Я перевірив, і ми маємо однакову залишкову суму квадратів принаймні до 4 сиг фіг. Також обрана вами лінійна параметризація сильно збита з пантелику, так що жоден з параметрів не є суттєвим згідно t тесту. Всі мої є. Насправді не велика справа, але забавна і може бентежити молодого гравця.
Дейв Фурньє

Крім того, я думаю, ви не відповіли на питання ОП, оскільки вона заявила, що хоче щось подібне до меж довіри для функції ентальпії-гучності
Дейв Фурньєр

1
β(E0,)(E^0)

Ваша модель і моя ідентичні незалежно від параметризації. (Я говорю про модель OLS.) Це правда, що якщо певний параметр входить в модель лінійно, то стандартні відхилення створюють кращі межі довіри для цього параметра. стандартні відхилення, отримані методом delta, будуть однаковими, незалежно від того, використовується він для параметризації моделі або вирішується як залежна змінна. У цьому випадку залежна змінна величина, що цікавить, - функція ентальпія-об'єм, і її метод delta std dev буде однаковим, використовуючи чи вашу параметризацію чи мою.
Дейв Фурньє

1
β^

3

Ig

gtIg
Це дає вам оцінену дисперсію для цієї залежної змінної. Візьміть квадратний корінь, щоб отримати оцінене стандартне відхилення. то довірчі межі - це передбачуване значення + - два стандартних відхилення. Це стандартні ймовірні речі. для особливого випадку нелінійної регресії ви можете виправити ступеня свободи. У вас є 10 спостережень і 4 параметри, тому ви можете збільшити оцінку дисперсії в моделі, помноживши на 10/6. Кілька програмних пакетів зроблять це за вас. Я записав вашу модель в AD Model в AD Model Builder і підходив до неї і розраховував (немодифіковані) відхилення. Вони трохи відрізнятимуться від ваших, бо мені довелося трохи здогадатися про значення.
                    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, але їх можна легко обчислити для будь-якого значення В.

Було зазначено, що це фактично лінійна модель, для якої існує простий R код для оцінки параметрів через OLS. Це особливо привабливо для наївних користувачів. Однак, оскільки працю Хубера понад тридцять років тому ми знаємо або повинні знати, що, мабуть, майже завжди слід замінити OLS на помірно надійну альтернативу. Причина цього не робиться звичайно. Я вважаю, що надійні методи за своєю суттю нелінійні. З цієї точки зору прості привабливі методи OLS в R - це скоріше пастка, а не особливість. Недоліком підходу AD Model Builder є його підтримка нелінійного моделювання. Для зміни коду найменших квадратів на надійну звичайну суміш потрібно змінити лише один рядок коду. Лінія

    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

Видно, що в точкових оцінках є невеликі зміни, тоді як межі довіри були зменшені до приблизно 60% від тих, які виробляються OLS.

Головне, що я хочу зробити, - це те, що всі змінені обчислення відбуваються автоматично, як тільки змінюється один рядок коду у файлі TPL.


2
I

1
E(EV)E(EV)E(HV)

1
@jwimberley, ви в основному говорите, що Дейв Фур'є дав формулу довірчого інтервалу (умовного) значення, тоді як чебрець може зацікавити інтервал прогнозування для нового спостереження. Обчислити останнє для OLS легко. Як ви обчислите це в цьому випадку?
DeltaIV

1
E=f(V)+ϵEE^ϵVϵϵ
jwimberley

1
@jwimberley Я показав лише довірчі межі для прогнозованих значень, що відповідають спостережуваним значенням V, просто тому, що вони були доступні. Я відредагував свою відповідь, щоб показати, як отримати межі довіри для будь-якої залежної змінної.
Дейв Фурньє

0

Перехресне підтвердження - це простий спосіб оцінити надійність кривої: https://en.wikipedia.org/wiki/Cross-validation_(statistics)

ΔE0,ΔV0,ΔB0ΔB

Ви можете обчислити похибку одноразової перевірки, залишивши одну з ваших точок подалі від підгонки та використовуючи пристосовану криву для прогнозування значення точки, що залишилась. Повторіть це для всіх пунктів, щоб кожен залишився один раз. Потім обчисліть похибку перевірки остаточної кривої (кривої з усіма точками) як середню помилку прогнозування.

Це лише покаже вам, наскільки чутлива ваша модель для будь-якої нової точки даних. Наприклад, це не скаже вам, наскільки неточна ваша енергетична модель. Однак це буде набагато реалістичнішою оцінкою помилки просто помилкою пристосування.

Крім того, ви можете побудувати помилки прогнозування як функції гучності, якщо хочете.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.