지수 적합의 잔차 제곱합을 최소화하는 방법은 무엇입니까?


14

나는 다음과 같은 데이터를 가지고 있으며 음의 지수 성장 모델에 맞추고 싶다.

Days <- c( 1,5,12,16,22,27,36,43)
Emissions <- c( 936.76, 1458.68, 1787.23, 1840.04, 1928.97, 1963.63, 1965.37, 1985.71)
plot(Days, Emissions)
fit <- nls(Emissions ~ a* (1-exp(-b*Days)), start = list(a = 2000, b = 0.55))
curve((y = 1882 * (1 - exp(-0.5108*x))), from = 0, to =45, add = T, col = "green", lwd = 4)

코드가 작동하고 피팅 선이 그려집니다. 그러나 적합도는 시각적으로 이상적이지 않으며 잔차 제곱합은 상당히 큰 것 같습니다 (147073).

우리는 어떻게 우리의 적합성을 향상시킬 수 있습니까? 데이터가 더 잘 맞습니까?

우리는이 문제에 대한 해결책을 찾을 수 없었습니다. 다른 웹 사이트 / 게시물에 대한 직접적인 도움이나 링크는 대단히 감사합니다.


1
이 경우 회귀 모델 하면ε I ~ N ( 0 , σ )Emissionsi=f(Daysi,a,b)+ϵiϵiN(0,σ) . 유사한 견적 자. 신뢰 영역을 플로팅하여 이러한 값이 신뢰 영역에 어떻게 포함되어 있는지 관찰 할 수 있습니다. 점을 보간하거나보다 유연한 비선형 모델을 사용하지 않으면 완벽하게 맞을 수 없습니다.

"음의 지수 모델"이 질문에 설명 된 것과 다른 것을 의미하기 때문에 제목을 변경했습니다.
whuber

질문을 더 명확하게하고 (@whuber) 답변 해 주셔서 감사합니다 (@Procrastinator). 신뢰 영역을 계산하고 플로팅하는 방법 그리고 더 유연한 비선형 모델은 무엇입니까?
Strohmi

4
추가 매개 변수가 필요합니다. 의 결과를 확인하십시오 fit <- nls(Emissions ~ a* (1- u*exp(-b*Days)), start = list(a = 2000, b = 0.1, u=.5)); beta <- coefficients(fit); curve((y = beta["a"] * (1 - beta["u"] * exp(-beta["b"]*x))), add = T).
whuber

1
@ whuber-아마도 대답으로 게시해야합니까?
jbowman

답변:


16

(음수) 지수법 은 형식을 취합니다 . 및 값 의 단위 변경을 허용하면 및 말하면 법칙은 다음과 같이 표현됩니다., X , Y , Y = α Y ' + β X = γ X ' + δy=exp(x)xyy=αy+βx=γx+δ

αy+β=y=exp(x)=exp(γxδ),

대수적으로

y=1αexp(γxδ)β=a(1uexp(bx))

세 개의 매개 변수 , 및 합니다. 우리가 알 수 스케일에 대한 파라미터로서 , 에 대한 스케일 인자로= 1 / ( β EXP ( δ ) ) B = γ Y의 B는 X U를 Xa=β/αu=1/(βexp(δ))b=γaybx 및 A로부터 유도로 위치 에 대한 파라미터 .ux

경험적으로 이러한 매개 변수는 플롯에서 한 눈에 확인할 수 있습니다 .

  • 매개 변수 2000a 는 보다 약간 작은 수평 점근선의 값입니다 .2000

  • 매개 변수 는 곡선이 원점에서 수평 점근선까지 상승 하는 상대적인 양입니다. 여기서 상승은 보다 약간 적다 . 상대적으로 이는 점근선 의 약 입니다.2000 -937 0.55u20009370.55

  • 때문에 때 3 배 값과 일치 한 곡선에 대한 상승한다 또는 의 총. 에서 거의 증가한 는 년경에 우리를 둔다 . 음모를 스캔 한 결과 ~ 일 이 걸렸습니다 . 라고합시다exp(3)0.05x1/b10.0595%95%93720001950202524단순화를 위해 입니다. ( 지수 척도를 안구하는 이 방법은 지수 그림을 많이 사용하는 일부 필드에서 표준입니다.)b3/24=0.12595%

이것이 어떻게 보이는지 봅시다 :

plot(Days, Emissions)
curve((y = 2000 * (1 - 0.56 * exp(-0.125*x))), add = T)

안구 맞춤

시작하기에는 나쁘지 않습니다! ( 어쨌든 조잡한 근사치 인 0.56대신에 입력해도 불구하고 0.55)nls :

fit <- nls(Emissions ~ a * (1- u * exp(-b*Days)), start=list(a=2000, b=1/8, u=0.55))
beta <- coefficients(fit)
plot(Days, Emissions)
curve((y = beta["a"] * (1 - beta["u"] * exp(-beta["b"]*x))), add = T, col="Green", lwd=2)

NLS 적합

의 결과 nls에는 모수 불확실성에 대한 광범위한 정보 가 포함됩니다. 예를 들어 , 단순 summary은 추정의 표준 오차를 제공합니다.

> summary(fit)

Parameters:
   Estimate Std. Error t value Pr(>|t|)    
a 1.969e+03  1.317e+01  149.51 2.54e-10 ***
b 1.603e-01  1.022e-02   15.69 1.91e-05 ***
u 6.091e-01  1.613e-02   37.75 2.46e-07 ***

추정치의 전체 공분산 행렬을 읽고 사용할 수 있으며, 이는 동시 신뢰 구간 (적어도 큰 데이터 집합의 경우)을 추정하는 데 유용합니다.

> vcov(fit)
             a             b             u
a 173.38613624 -8.720531e-02 -2.602935e-02
b  -0.08720531  1.044004e-04  9.442374e-05
u  -0.02602935  9.442374e-05  2.603217e-04

nls 매개 변수에 대한 프로파일 도표를 지원하여 불확실성에 대한 자세한 정보를 제공합니다.

> plot(profile(fit))

여기서의 변동을 나타내는 3 개의 출력의 플롯이다 :a

프로파일 플롯

예를 들어 , t- 값 는 대략 95 % 양측 신뢰 구간에 해당하고; 이 그림은 과 끝점을 배치합니다 .219451995


오, 나는 거의 잊었다 : res <- residuals(fit); res %*% res세 번째 매개 변수 를 도입하면 제곱의 합이 감소 한다는 것을 알 수 있습니다 ( 질문에 명시된 과 비교 ). u2724147073
whuber

잘하고 좋은 whuber. 그러나 OP는 지수 모델을 선택해야 할 이유가있을 수 있습니다 (또는 아마도 잘 알려져 있기 때문일 수 있습니다). 먼저 잔차가 지수 모델에 대해 조사되어야한다고 생각합니다. 잠재적 공변량에 대해 플로팅하여 큰 랜덤 노이즈뿐만 아니라 구조가 있는지 확인합니다. 보다 정교한 모델로 넘어 가기 전에 더 멋진 모델이 도움이 될 수 있는지 확인하십시오.
Michael R. Chernick

3
마이클, 원래 음모를 보지 그래? 적어도 하나의 추가 매개 변수가 필요한 이유를 분명히 알 수 있습니다. 또한 OP가 질문 한 질문에 대한 의견에서 "보다 유연한 비선형 모델은 무엇입니까?" 이 답변에서 제공되는 초기 분석의 한 가지 의미는 세 가지보다 적은 수의 매개 변수로 지수에 적합하도록 평범하지 않은 것으로 간주해야한다는 것입니다. 의 고유 위치 ). 엑스
whuber

2
나는 당신의 대답을 비판하지 않았습니다! 잔차 줄거리는 보지 못했습니다. 내가 제안한 것은 잔차 대 잠재적 공변량의 도표가 더 나은 모델을 찾는 첫 번째 단계 여야한다는 것입니다. 내가 거기에 대답 할 줄 알았다고 생각한다면 나는 내 입장을 일정하게 제기하기보다는 대답을했을 것이다. 나는 당신이 큰 반응을했다고 생각했고 나는 당신에게 +1을 주었다.
Michael R. Chernick
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.