रैखिक मॉडल जहां डेटा में अनिश्चितता है, आर का उपयोग कर


9

मान लीजिए कि मेरे पास कुछ अनिश्चितता वाले डेटा हैं। उदाहरण के लिए:

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

अनिश्चितता की प्रकृति दोहराई जा सकती है माप या प्रयोग, या उदाहरण के लिए उपकरण अनिश्चितता को मापना।

मैं आर का उपयोग करके इसे एक वक्र फिट करना चाहता हूं, ऐसा कुछ जो सामान्य रूप से मैं करता हूं 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

तो मूल रूप से, मेरे गुणांक एक = 39.8, 22.3, b = 92.0 ± 9.3, c = -4.3 e 0.8 हैं। अब कहते हैं कि प्रत्येक डेटा बिंदु के लिए, त्रुटि 20 है। मैं कॉल weights = rep(20,10)में उपयोग करूंगा lmऔर मुझे इसके बजाय मिलता है:

Residual standard error: 84.87 on 7 degrees of freedom

लेकिन गुणांक पर std त्रुटियाँ नहीं बदलती हैं।

मैन्युअल रूप से, मुझे पता है कि यह मैट्रिक्स बीजगणित का उपयोग करके सहसंयोजक मैट्रिक्स की गणना करने और वहां वजन / त्रुटियों को डालने के साथ कैसे करना है, और उस का उपयोग करके विश्वास अंतराल प्राप्त करना है। तो क्या यह एलएम फ़ंक्शन में स्वयं करने का एक तरीका है, या कोई अन्य फ़ंक्शन है?


यदि आप डेटा के वितरण को जानते हैं, तो आप bootआर में पैकेज का उपयोग करके इसे बूटस्ट्रैप कर सकते हैं । बाद में आप बूटस्ट्रैप्ड डेटा सेट पर एक रेखीय प्रतिगमन को चलाने दे सकते हैं।
फेरडी

lmसामान्यीकृत रूपांतरों को वज़न के रूप में उपयोग करेंगे और फिर मान लेंगे कि आपका मॉडल मापदंडों की अनिश्चितता का अनुमान लगाने के लिए सांख्यिकीय रूप से मान्य है। यदि आपको लगता है कि यह मामला नहीं है (त्रुटि सलाखों बहुत छोटा या बहुत बड़ा है), तो आपको किसी अनिश्चितता के अनुमान पर भरोसा नहीं करना चाहिए।
पास्कल

इस प्रश्न को यहाँ भी देखें: आंकड़े
jwimberley

जवाबों:


14

इस प्रकार का मॉडल वास्तव में "सामान्य" रैखिक प्रतिगमन की तुलना में विज्ञान की कुछ शाखाओं (जैसे भौतिकी) और इंजीनियरिंग में बहुत अधिक सामान्य है। तो, भौतिक विज्ञान उपकरण जैसे ROOT, इस प्रकार का फिट करना तुच्छ है, जबकि रैखिक प्रतिगमन मूल रूप से लागू नहीं होता है! भौतिक विज्ञानी इसे केवल एक "फिट" या ची-स्क्वायर न्यूनतम करने के लिए कहते हैं।

सामान्य रेखीय प्रतिगमन मॉडल मानता है कि एक समग्र विचरण है σहर माप से जुड़ा हुआ। यह तब संभावना को अधिकतम करता है

एलαΠमैं-12(yमैं-(एक्समैं+)σ)2
या समकक्ष इसके लघुगणक
लॉग(एल)=सीnरोंटीnटी-12σ2Σमैं(yमैं-(एक्समैं+))2
इसलिए नाम कम से कम वर्ग - संभावना को अधिकतम करने के रूप में ही है वर्गों का योग कम से कम, और σजब तक कि यह के रूप में, एक महत्वहीन स्थिर है है निरंतर। विभिन्न ज्ञात अनिश्चितताओं वाले मापों के साथ, आप अधिकतम करना चाहेंगे
एलαΠ-12(y-(एक्स+)σमैं)2
या समकक्ष इसके लघुगणक
लॉग(एल)=सीnरोंटीnटी-12Σ(yमैं-(एक्समैं+)σमैं)2
तो, आप वास्तव में उलटे विचरण द्वारा मापों को मापना चाहते हैं 1/σमैं2, विचरण नहीं। यह समझ में आता है - एक अधिक सटीक माप में छोटी अनिश्चितता होती है और इसे अधिक वजन दिया जाना चाहिए। ध्यान दें कि यदि यह वजन स्थिर है, तो यह अभी भी योग से बाहर है। इसलिए, यह अनुमानित मूल्यों को प्रभावित नहीं करता है, लेकिन इसे दूसरी व्युत्पन्न से ली गई मानक त्रुटियों को प्रभावित करना चाहिएलॉग(एल)

हालाँकि, यहाँ हम भौतिकी / विज्ञान और सांख्यिकी के बीच एक और अंतर रखते हैं। आमतौर पर आंकड़ों में, आप उम्मीद करते हैं कि एक सहसंबंध दो चर के बीच मौजूद हो सकता है, लेकिन शायद ही कभी यह सटीक होगा। भौतिक विज्ञान और अन्य विज्ञानों में, दूसरी ओर, आप अक्सर सहसंबंध या संबंध के सटीक होने की उम्मीद करते हैं, यदि केवल यह pesky माप त्रुटियों के लिए नहीं थे (जैसेएफ=, नहीं एफ=+ε)। आपकी समस्या भौतिकी / इंजीनियरिंग मामले में और अधिक गिरती दिख रही है। नतीजतन, lmआपके माप और भार से जुड़ी अनिश्चितताओं की व्याख्या वैसी नहीं है जैसी आप चाहते हैं। यह वज़न लेगा, लेकिन यह अभी भी सोचता है कि एक समग्र हैσ2प्रतिगमन त्रुटि के लिए खाते में, जो आप चाहते हैं वह नहीं है - आप चाहते हैं कि आपकी माप त्रुटियां एकमात्र प्रकार की त्रुटि हो। ( lmव्याख्या का अंतिम परिणाम यह है कि वज़न के केवल सापेक्ष मूल्य मायने रखते हैं, यही वजह है कि परीक्षण के रूप में आपके द्वारा जोड़े गए निरंतर वज़न का कोई प्रभाव नहीं था)। यहाँ प्रश्न और उत्तर में अधिक विवरण हैं:

lm वज़न और मानक त्रुटि

वहाँ जवाब में दिए गए संभावित समाधान के एक जोड़े हैं। विशेष रूप से, एक अनाम उत्तर का उपयोग करने का सुझाव देता है

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

मूल रूप से, lmअपने अनुमान के आधार पर सहसंयोजक मैट्रिक्स को मापता हैσ, और आप इसे पूर्ववत करना चाहते हैं। फिर आप सही कोविरेस मैट्रिक्स से अपनी इच्छित जानकारी प्राप्त कर सकते हैं। यह कोशिश करें, लेकिन यदि आप मैन्युअल रैखिक बीजगणित के साथ कर सकते हैं तो इसे दोबारा जांचने का प्रयास करें। और याद रखें कि वज़न उलटा variances होना चाहिए।

संपादित करें

यदि आप इस प्रकार की चीज़ कर रहे हैं तो आप उपयोग करने पर विचार कर सकते हैं ROOT(जो मूल रूप से ऐसा करते समय लगता है lmऔर glmऐसा नहीं होता है)। यह कैसे करना है इसका एक संक्षिप्त उदाहरण यहां दिया गया है ROOT। सबसे पहले, ROOTC ++ या पायथन के माध्यम से उपयोग किया जा सकता है, और इसका एक विशाल डाउनलोड और इंस्टॉलेशन। आप ब्राउज़र में इसे बृहस्पति नोटबुक का उपयोग करके आज़मा सकते हैं , यहाँ लिंक का अनुसरण करते हुए, दाईं ओर "बाइंडर" और बाईं ओर "पायथन" का चयन कर सकते हैं।

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 फिटर भी में अनिश्चितताओं को संभाल सकता है एक्समूल्यों, जो शायद और भी अधिक हैकिंग की आवश्यकता होगी lm। अगर किसी को आर में ऐसा करने का एक देशी तरीका पता है, तो मुझे इसे सीखने में दिलचस्पी होगी।

दूसरा संस्करण

@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

यह निश्चित रूप से इस प्रकार के प्रतिगमन के लिए सबसे अच्छा शुद्ध आर उपकरण है जो मैंने पाया है।


मुझे लगता है कि स्केलिंग को पूर्ववत करना मूल रूप से गलत है lm। यदि आप ऐसा करते हैं, तो सत्यापन आँकड़े, जैसे ची-स्क्वॉयर, बंद हो जाएंगे। यदि आपके अवशेषों का फैलाव आपकी त्रुटि सलाखों से मेल नहीं खाता है, तो सांख्यिकीय मॉडल (या तो मॉडल की पसंद या त्रुटि सलाखों या सामान्य परिकल्पना ...) में कुछ गड़बड़ है। किसी भी स्थिति में, पैरामीटर अनिश्चितता अविश्वसनीय होगी !!!
पास्कल

@PascalPERNOT मैंने हालांकि इस बारे में नहीं कहा है; मैं आपकी टिप्पणियों के बारे में सोचूंगा। ईमानदार होने के लिए, मैं एक सामान्य अर्थ में इस बात से सहमत हूं कि मुझे लगता है कि इस समस्या को सही ढंग से हल करने के लिए गारंटी के बजाय भौतिकी या इंजीनियरिंग सॉफ़्टवेयर का उपयोग करना सबसे अच्छा उपाय है, lmसही उत्पादन प्राप्त करने के लिए हैक करना। (यदि कोई उत्सुक है, तो मैं दिखाऊंगा कि यह कैसे करना है ROOT)।
jwimberley

1
समस्या के लिए सांख्यिकीविद् के दृष्टिकोण का एक संभावित लाभ यह है कि यह विभिन्न स्तरों पर टिप्पणियों के बीच विचरण अनुमानों के पूलिंग की अनुमति देता है। यदि अंतर्निहित विचरण स्थिर है या पाइज़न प्रक्रियाओं में माप के अनुसार कुछ परिभाषित संबंध है, तो विश्लेषण में आमतौर पर सुधार होगा बनाम जो आपको (आमतौर पर अवास्तविक) धारणा से मिलता है कि प्रत्येक डेटा बिंदु के लिए मापा विचरण सही है और इस तरह गलत तरीके से निर्धारण कुछ डेटा बिंदु। ओपी के आंकड़ों में, मुझे लगता है कि निरंतर-विचरण धारणा बेहतर हो सकती है।
17

1
@jwimberley मुझे लगता है कि σयह सुनिश्चित करता है कि भारित अवशिष्ट मानक त्रुटि मापदंडों कोविरियर्स मैट्रिक्स की गणना करने से पहले 1 में बदल दी जाती है। आप इसे अपने भार को गुणा करके जांच सकते हैंσ2और देखें कि "अवशिष्ट मानक त्रुटि" आउटपुट कैसे प्रभावित होता है। आपके उदाहरण में, यह 1.088 से 1. में बदलता है। यदि आपका सेटअप सांख्यिकीय रूप से मान्य है, तो स्केलिंग का केवल मापदंडों की अनिश्चितताओं पर मामूली प्रभाव पड़ता है ...
पास्कल

1
आंद्रोन, एस और वीवर, बी (2015) बायोसियन तरीकों के भौतिक विज्ञानों के अध्याय 8 में इन मुद्दों की अच्छी चर्चा है। स्प्रिंगर। स्प्रिंगर.com
टोनी लैडसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.