ตัวแบบเชิงเส้นตรงที่ข้อมูลมีความไม่แน่นอนโดยใช้ R


9

สมมติว่าฉันมีข้อมูลที่มีความไม่แน่นอน ตัวอย่างเช่น:

X  Y
1  10±4
2  50±3
3  80±7
4  105±1
5  120±9

ธรรมชาติของความไม่แน่นอนอาจเป็นการวัดซ้ำหรือการทดลองหรือความไม่แน่นอนของเครื่องมือวัด

ผมอยากจะพอดีกับเส้นโค้งไปโดยใช้ R, lmบางสิ่งบางอย่างที่ปกติผมจะทำอย่างไรกับ อย่างไรก็ตามสิ่งนี้ไม่ได้คำนึงถึงความไม่แน่นอนในข้อมูลเมื่อมันทำให้ฉันมีความไม่แน่นอนในค่าสัมประสิทธิ์แบบพอดีและดังนั้นจึงมีการคาดการณ์ช่วงเวลา ดูที่เอกสารlmหน้านี้มี:

... น้ำหนักสามารถใช้เพื่อระบุว่าการสังเกตที่ต่างกันมีความแตกต่างกัน ...

ดังนั้นฉันคิดว่าบางทีนี่อาจจะเกี่ยวข้องกับเรื่องนี้ ฉันรู้ทฤษฎีการทำด้วยตนเอง แต่ฉันสงสัยว่ามันเป็นไปได้ที่จะทำเช่นนั้นกับlmฟังก์ชั่น ถ้าไม่มีมีฟังก์ชั่นอื่น ๆ (หรือแพ็คเกจ) ที่สามารถทำสิ่งนี้ได้หรือไม่?

แก้ไข

เห็นความคิดเห็นบางส่วนนี่คือคำชี้แจงบางอย่าง ใช้ตัวอย่างนี้:

x <- 1:10
y <- c(131.4,227.1,245,331.2,386.9,464.9,476.3,512.2,510.8,532.9)
mod <- lm(y ~ x + I(x^2))
summary(mod)

ให้ฉัน:

Residuals:
    Min      1Q  Median      3Q     Max 
-32.536  -8.022   0.087   7.666  26.358 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  39.8050    22.3210   1.783  0.11773    
x            92.0311     9.3222   9.872 2.33e-05 ***
I(x^2)       -4.2625     0.8259  -5.161  0.00131 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Residual standard error: 18.98 on 7 degrees of freedom
Multiple R-squared:  0.986, Adjusted R-squared:  0.982 
F-statistic: 246.7 on 2 and 7 DF,  p-value: 3.237e-07

สัมประสิทธิ์ของฉันคือ a = 39.8 ± 22.3, b = 92.0 ± 9.3, c = -4.3 ± 0.8 ตอนนี้สมมติว่าสำหรับแต่ละจุดข้อมูลข้อผิดพลาดคือ 20 ฉันจะใช้weights = rep(20,10)ในการlmโทรและฉันได้รับสิ่งนี้แทน:

Residual standard error: 84.87 on 7 degrees of freedom

แต่ข้อผิดพลาด std บนสัมประสิทธิ์จะไม่เปลี่ยนแปลง

ฉันรู้ด้วยตนเองว่าต้องทำอย่างไรกับการคำนวณเมทริกซ์ความแปรปรวนร่วมโดยใช้พีชคณิตเมทริกซ์และวางน้ำหนัก / ข้อผิดพลาดไว้ที่นั่นและหาช่วงความมั่นใจด้วยการใช้ มีวิธีทำในฟังก์ชั่น lm เองหรือฟังก์ชั่นอื่น ๆ ?


หากคุณรู้ว่าการกระจายของข้อมูลคุณสามารถบูตโดยใช้bootแพคเกจใน R หลังจากนั้นคุณสามารถปล่อยให้การถดถอยเชิงเส้นทำงานบนชุดข้อมูล bootstrapped
Ferdi

lmจะใช้ความแปรปรวนปกติเป็นน้ำหนักแล้วสมมติว่าแบบจำลองของคุณถูกต้องทางสถิติเพื่อประเมินความไม่แน่นอนของพารามิเตอร์ หากคุณคิดว่านี่ไม่ใช่กรณี (แถบข้อผิดพลาดเล็กเกินไปหรือใหญ่เกินไป) คุณไม่ควรเชื่อถือการประมาณการความไม่แน่นอนใด ๆ
Pascal

ดูคำถามนี้ได้ที่นี่: stats.stackexchange.com/questions/113987/…
jwimberley

คำตอบ:


14

แบบจำลองประเภทนี้มีอยู่ทั่วไปในสาขาวิทยาศาสตร์ (เช่นฟิสิกส์) และวิศวกรรมมากกว่าการถดถอยเชิงเส้นแบบ "ปกติ" ดังนั้นในเครื่องมือฟิสิกส์เช่นROOTการทำแบบนี้เป็นเรื่องเล็กน้อยในขณะที่การถดถอยเชิงเส้นไม่ได้ถูกนำมาใช้จริง! นักฟิสิกส์มักจะเรียกสิ่งนี้ว่า "พอดี" หรือการลดขนาดไคสแควร์

ตัวแบบการถดถอยเชิงเส้นปกติถือว่ามีความแปรปรวนโดยรวม σติดอยู่กับทุกการวัด จากนั้นจะเพิ่มโอกาสสูงสุด

LαΠผมอี-12(Yผม-(axผม+)σ)2
หรือเท่ากับลอการิทึมของมัน
เข้าสู่ระบบ(L)=โอnsเสื้อanเสื้อ-12σ2Σผม(Yผม-(axผม+))2
ดังนั้นชื่ออย่างน้อยกำลังสอง - การเพิ่มความน่าจะเป็นก็เหมือนกับการลดผลรวมของกำลังสองและ σเป็นค่าคงที่ที่ไม่สำคัญตราบใดที่ค่านั้นคงที่ ด้วยการวัดที่มีความไม่แน่นอนที่แตกต่างกันคุณจะต้องการเพิ่มประสิทธิภาพ
LαΠอี-12(Y-(ax+)σผม)2
หรือเท่ากับลอการิทึมของมัน
เข้าสู่ระบบ(L)=โอnsเสื้อanเสื้อ-12Σ(Yผม-(axผม+)σผม)2
ดังนั้นคุณต้องการชั่งน้ำหนักการวัดตามความแปรปรวนผกผัน 1/σผม2ไม่ใช่ความแปรปรวน สิ่งนี้สมเหตุสมผล - การวัดที่แม่นยำยิ่งขึ้นมีความไม่แน่นอนน้อยลงและควรให้น้ำหนักมากขึ้น โปรดทราบว่าหากน้ำหนักนี้คงที่ก็ยังคงเป็นปัจจัยจากยอดรวม ดังนั้นจะไม่ส่งผลกระทบต่อค่าโดยประมาณ แต่ควรมีผลต่อข้อผิดพลาดมาตรฐานที่นำมาจากอนุพันธ์อันดับสองของเข้าสู่ระบบ(L).

อย่างไรก็ตามที่นี่เรามาถึงความแตกต่างระหว่างฟิสิกส์ / วิทยาศาสตร์และสถิติที่มีขนาดใหญ่อีก โดยทั่วไปในสถิติคุณคาดหวังว่าความสัมพันธ์อาจมีอยู่ระหว่างตัวแปรสองตัว แต่แทบจะไม่แน่นอน ในทางฟิสิกส์และวิทยาศาสตร์อื่น ๆ ในทางกลับกันคุณมักจะคาดหวังว่าความสัมพันธ์หรือความสัมพันธ์ที่แน่นอนถ้ามันไม่ได้เป็นข้อผิดพลาดในการวัดที่น่ารำคาญ (เช่นF=ม.aไม่ใช่ F=ม.a+ε) ดูเหมือนว่าปัญหาของคุณจะตกอยู่ในคดีฟิสิกส์ / วิศวกรรม ดังนั้นlmการตีความความไม่แน่นอนที่แนบมากับการวัดของคุณและน้ำหนักนั้นไม่เหมือนกับสิ่งที่คุณต้องการ มันจะใช้น้ำหนัก แต่ก็ยังคิดว่ามีภาพรวมσ2เพื่อบัญชีสำหรับข้อผิดพลาดการถดถอยซึ่งไม่ใช่สิ่งที่คุณต้องการ - คุณต้องการให้ข้อผิดพลาดการวัดของคุณเป็นข้อผิดพลาดชนิดเดียวที่มี (ผลลัพธ์สุดท้ายของlmการตีความคือเฉพาะค่าสัมพัทธ์ของตุ้มน้ำหนักซึ่งเป็นเหตุให้ตุ้มน้ำหนักคงที่ที่คุณเพิ่มเมื่อทดสอบไม่มีผล) คำถามและคำตอบที่นี่มีรายละเอียดเพิ่มเติม:

น้ำหนัก LM และข้อผิดพลาดมาตรฐาน

มีคำตอบที่เป็นไปได้สองสามข้อที่ให้ไว้ในคำตอบที่นั่น โดยเฉพาะอย่างยิ่งคำตอบที่ไม่ระบุตัวตนมีแนะนำให้ใช้

vcov(mod)/summary(mod)$sigma^2

โดยทั่วไปจะlmปรับเมทริกซ์ความแปรปรวนร่วมตามการประมาณของมันσและคุณต้องการยกเลิกสิ่งนี้ จากนั้นคุณสามารถรับข้อมูลที่คุณต้องการจากเมทริกซ์ความแปรปรวนร่วมที่ถูกต้อง ลองสิ่งนี้ แต่ลองตรวจสอบอีกครั้งถ้าคุณสามารถใช้พีชคณิตเชิงเส้นด้วยตนเองได้ และจำไว้ว่าน้ำหนักควรเป็นความแปรปรวนผกผัน

แก้ไข

หากคุณกำลังทำสิ่งนี้มากคุณอาจลองใช้ROOT(ซึ่งดูเหมือนว่าจะทำสิ่งนี้ในขณะที่lmและglmไม่ทำ) นี่เป็นตัวอย่างสั้น ๆ ROOTของวิธีการที่จะทำเช่นนี้ใน ก่อนอื่นROOTสามารถใช้ผ่าน C ++ หรือ Python และเป็นการดาวน์โหลดและติดตั้งที่ใหญ่มาก คุณสามารถลองในเบราว์เซอร์โดยใช้สมุดบันทึก Jupiter ตามลิงค์ที่นี่เลือก "Binder" ทางด้านขวาและ "Python" ทางด้านซ้าย

import ROOT
from array import array
import math
x = range(1,11)
xerrs = [0]*10
y = [131.4,227.1,245,331.2,386.9,464.9,476.3,512.2,510.8,532.9]
yerrs = [math.sqrt(i) for i in y]
graph = ROOT.TGraphErrors(len(x),array('d',x),array('d',y),array('d',xerrs),array('d',yerrs))
graph.Fit("pol2","S")
c = ROOT.TCanvas("test","test",800,600)
graph.Draw("AP")
c.Draw()

ฉันใส่รากที่สองเป็นความไม่แน่นอนใน Yค่า ผลลัพธ์ของการสวมใส่คือ

Welcome to JupyROOT 6.07/03

****************************************
Minimizer is Linear
Chi2                      =       8.2817
NDf                       =            7
p0                        =      46.6629   +/-   16.0838     
p1                        =       88.194   +/-   8.09565     
p2                        =     -3.91398   +/-   0.78028    

และพล็อตที่ดีมีการผลิต:

quadfit

ช่างฟิต ROOT สามารถจัดการกับความไม่แน่นอนใน x ค่าซึ่งอาจจะต้องแฮ็คมากยิ่งขึ้น lmค่าซึ่งอาจจะต้องมีมากขึ้นของการแฮ็คถ้าใครรู้วิธีการทำเช่นนี้ใน R ฉันจะสนใจเรียนรู้

แก้ไขครั้งที่สอง

คำตอบอื่น ๆ จากคำถามก่อนหน้านี้โดย @Wolfgang ให้วิธีแก้ปัญหาที่ดีกว่า: rmaเครื่องมือจากmetaforแพ็คเกจ (แต่เดิมฉันตีความข้อความในคำตอบนั้นหมายความว่าไม่ได้คำนวณการสกัดกั้น แต่ไม่ใช่กรณี) การแปรปรวนในการวัด y เป็นเพียงแค่ y:

> rma(y~x+I(x^2),y,method="FE")

Fixed-Effects with Moderators Model (k = 10)

Test for Residual Heterogeneity: 
QE(df = 7) = 8.2817, p-val = 0.3084

Test of Moderators (coefficient(s) 2,3): 
QM(df = 2) = 659.4641, p-val < .0001

Model Results:

         estimate       se     zval    pval    ci.lb     ci.ub     
intrcpt   46.6629  16.0838   2.9012  0.0037  15.1393   78.1866   **
x         88.1940   8.0956  10.8940  <.0001  72.3268  104.0612  ***
I(x^2)    -3.9140   0.7803  -5.0161  <.0001  -5.4433   -2.3847  ***

---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

นี่เป็นเครื่องมือ R บริสุทธิ์ที่ดีที่สุดสำหรับการถดถอยแบบนี้ที่ฉันได้พบ


lmผมคิดว่ามันเป็นความผิดโดยทั่วไปเพื่อยกเลิกการปรับโดย หากคุณทำเช่นนี้สถิติการตรวจสอบเช่นค่าไคสแควร์จะถูกปิด หากการกระจายตัวของส่วนที่เหลือของคุณไม่ตรงกับแถบข้อผิดพลาดของคุณมีบางอย่างผิดปกติในแบบจำลองทางสถิติ (ทั้งตัวเลือกรูปแบบหรือแถบข้อผิดพลาดหรือสมมติฐานปกติ ... ) ไม่ว่าในกรณีใดพารามิเตอร์ไม่แน่นอนจะไม่น่าเชื่อถือ !!!
ปาสกาล

@PascalPERNOT ฉันไม่ได้คิดเกี่ยวกับเรื่องนี้ ฉันจะคิดถึงความคิดเห็นของคุณ ตามความจริงฉันเห็นด้วยในแง่ทั่วไปว่าฉันคิดว่าทางออกที่ดีที่สุดคือการใช้ฟิสิกส์หรือวิศวกรรมซอฟต์แวร์รับประกันว่าจะแก้ปัญหานี้ได้อย่างถูกต้องแทนที่จะแฮ็คlmเพื่อให้ได้ผลลัพธ์ที่ถูกต้อง (หากใครอยากรู้อยากเห็นฉันจะแสดงวิธีการทำในROOT)
jwimberley

1
ข้อได้เปรียบอย่างหนึ่งที่เป็นไปได้ของวิธีการของนักสถิติในการแก้ไขปัญหาคือช่วยให้การรวมการประมาณค่าความแปรปรวนระหว่างการสังเกตในระดับต่างๆ หากความแปรปรวนพื้นฐานเป็นค่าคงที่หรือมีความสัมพันธ์ที่กำหนดไว้กับการวัดเช่นเดียวกับในกระบวนการปัวซงการวิเคราะห์โดยทั่วไปจะได้รับการปรับปรุงเมื่อเทียบกับสิ่งที่คุณได้รับจากสมมติฐาน (โดยทั่วไปไม่สมจริง) ว่า บางจุดข้อมูล ในข้อมูลของ OP ฉันเดาว่าสมมติฐานคงแปรปรวนคงดีกว่า
EdM

1
@ jwimberley ฉันคิดว่า σตรวจสอบให้แน่ใจว่าข้อผิดพลาดมาตรฐานถ่วงน้ำหนักส่วนที่เหลือถูกลดขนาดเป็น 1 ก่อนการคำนวณพารามิเตอร์ความแปรปรวนร่วมเมทริกซ์ คุณสามารถตรวจสอบนี้น้ำหนักของฉันคูณด้วยσ2และดูว่าเอาต์พุต "ข้อผิดพลาดมาตรฐานส่วนที่เหลือ" ได้รับผลกระทบอย่างไร ในตัวอย่างของคุณมันเปลี่ยนจาก 1.088 เป็น 1 หากการตั้งค่าของคุณถูกต้องทางสถิติการปรับมีผลเพียงเล็กน้อยต่อความไม่แน่นอนของพารามิเตอร์ ...
Pascal

1
มีการอภิปรายที่ดีของปัญหาเหล่านี้ในบทที่ 8 ของ Andreon, S. และ Weaver, B. (2015) วิธีการแบบเบส์สำหรับวิทยาศาสตร์ทางกายภาพ สปริงเกอร์ springer.com/us/book/9783319152868
Tony Ladson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.