วิธีการลดผลรวมที่เหลือของกำลังสองของการยกกำลังสองได้อย่างไร?


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
ในกรณีนี้หากคุณพิจารณารูปแบบการถดถอยการโดยที่ϵ ฉัน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

A (ลบ) กฎหมายชี้แจงใช้รูปแบบ ) เมื่อคุณอนุญาตให้มีการเปลี่ยนแปลงหน่วยในค่าxและyแม้ว่าพูดกับy = α y + βและx = γ x + δแล้วกฎหมายจะแสดงเป็นY=-ประสบการณ์(-x)xYY=αY'+βx=γx'+δ

αY'+β=Y=-ประสบการณ์(-x)=-ประสบการณ์(-γx'-δ),

ซึ่งพีชคณิตนั้นเทียบเท่ากับ

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

ใช้สามพารามิเตอร์= - β / α , U = 1 / ( β ประสบการณ์( δ ) )และ= γ เราสามารถรับรู้เป็นพารามิเตอร์ขนาดสำหรับY , Bเป็นพารามิเตอร์ขนาดสำหรับxและยูเป็นสืบมาจากสถานที่ตั้งพารามิเตอร์สำหรับxa=β/αu=1/(βexp(δ))b=γaybxux

ตามกฎของหัวแม่มือพารามิเตอร์เหล่านี้สามารถระบุได้อย่างรวดเร็วจากพล็อต :

  • พารามิเตอร์คือค่าของเส้นกำกับแนวนอนน้อยกว่า2000เล็กน้อยa2000

  • พารามิเตอร์ คือปริมาณสัมพัทธ์ที่เส้นโค้งเพิ่มขึ้นจากจุดกำเนิดไปเป็นเส้นกำกับแนวนอน ที่นี่ที่เพิ่มขึ้นจึงเป็นน้อยกว่า2000 - 937 ; ค่อนข้างนั่นคือประมาณ0.55ของเส้นกำกับu20009370.55

  • เนื่องจากเมื่อxเท่ากับสามเท่าของค่า1 / bส่วนโค้งควรเพิ่มขึ้นเป็น1 - 0.05หรือ95 %ของค่าทั้งหมด 95 %ของการเพิ่มขึ้นจาก937เป็นเกือบ2,000ทำให้เราอยู่ราว ๆปี 1950 ; การสแกนข้ามจุดบ่งชี้ว่าสิ่งนี้ใช้เวลา20ถึง25วัน ขอเรียกว่า24สำหรับความเรียบง่ายดังนั้น3 / 24exp(3)0.05x1/b10.0595%95%93720001950202524 0.125 (วิธีการ 95 % ในการปรับลูกตาแบบเอ็กซ์โปเนนเชียลเป็นมาตรฐานในบางสาขาที่ใช้พล็อตแบบเอ็กซ์โปเนนเชียลมาก)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))

a

พล็อตโปรไฟล์

219451995


res <- residuals(fit); res %*% resu2724147073

ทุกคนเก่งและดี แต่บางที OP มีเหตุผลบางอย่างที่จะเลือกรูปแบบเลขชี้กำลัง (หรืออาจเป็นเพราะมันเป็นที่รู้จักกันดี) ฉันคิดว่าสิ่งแรกที่เหลือควรถูกมองว่าเป็นรูปแบบเลขชี้กำลัง พล็อตพวกมันเทียบกับ covariates ที่มีศักยภาพเพื่อดูว่ามีโครงสร้างอยู่หรือไม่และไม่ใช่แค่เสียงสุ่มขนาดใหญ่ ก่อนที่จะกระโดดลงไปในแบบจำลองที่มีความซับซ้อนมากขึ้นพยายามที่จะดูว่าแบบจำลองที่ดีกว่านั้นสามารถช่วยได้หรือไม่
Michael R. Chernick

3
x

2
ฉันไม่ได้วิจารณ์คำตอบของคุณ! ฉันไม่เห็นแผนการที่เหลืออยู่ ทั้งหมดที่ฉันแนะนำก็คือแปลงของส่วนที่เหลือเทียบกับ covariates ที่มีศักยภาพควรเป็นขั้นตอนแรกในการหาแบบจำลองที่ดีกว่า ถ้าฉันคิดว่าฉันมีคำตอบที่จะวางที่นั่นฉันจะได้รับคำตอบมากกว่ายกประเด็นของฉันเป็นค่าคงที่ ฉันคิดว่าคุณให้การตอบรับที่ดีและฉันก็เป็นคนที่ให้ +1
Michael R. Chernick
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.