Calcola l'incertezza della pendenza della regressione lineare in base all'incertezza dei dati


12

Come calcolare l'incertezza della pendenza della regressione lineare in base all'incertezza dei dati (possibilmente in Excel / Mathematica)?

Esempio: Esempio di trama Diamo punti dati (0,0), (1,2), (2,4), (3,6), (4,8), ... (8, 16), ma ogni valore y ha un'incertezza di 4. La maggior parte delle funzioni che ho trovato calcolerebbe l'incertezza come 0, poiché i punti corrispondono perfettamente alla funzione y = 2x. Ma, come mostrato nella figura, anche y = x / 2 corrisponde ai punti. È un esempio esagerato, ma spero che mostri ciò di cui ho bisogno.

EDIT: Se provo a spiegare un po 'di più, mentre ogni punto nell'esempio ha un certo valore di y, facciamo finta di non sapere se è vero. Ad esempio il primo punto (0,0) potrebbe effettivamente essere (0,6) o (0, -6) o qualsiasi altra via di mezzo. Sto chiedendo se esiste un algoritmo in uno dei problemi popolari che tiene conto di ciò. Nell'esempio i punti (0,6), (1,6,5), (2,7), (3,7,5), (4,8), ... (8, 10) continuano a rientrare nell'intervallo di incertezza, quindi potrebbero essere i punti giusti e la linea che collega quei punti ha un'equazione: y = x / 2 + 6, mentre l'equazione che otteniamo dal non factoring nelle incertezze ha l'equazione: y = 2x + 0. Quindi l'incertezza di k è 1,5 e di n è 6.

TL; DR: nella figura è presente una linea y = 2x calcolata utilizzando l'adattamento meno quadrato e si adatta perfettamente ai dati. Sto cercando di scoprire quanto k e n in y = kx + n possono cambiare ma adattiamo comunque i dati se conosciamo l'incertezza nei valori y. Nel mio esempio, l'incertezza di k è 1,5 e in n è 6. Nell'immagine c'è la linea di adattamento "migliore" e una linea che si adatta a malapena ai punti.


1
Se hai incertezza nelle tue , generalmente non dovresti usare la normale regressione lineare perché è di parte (anche se piccole incertezze comporteranno un piccolo pregiudizio; forse non ti interessa così tanto). Le incertezze nella tua y sono sempre costanti o variano? Come stai adattando la tua linea? x
Glen_b -Restate Monica

Chiedo principalmente incertezza in y's. Ma sarei felice se la soluzione considerasse l'incertezza anche nelle x. Generalmente non sono costanti, ma una soluzione che richiede che siano costanti andrebbe bene, ho provato ad adattarmi con linearfit, fit, findfit in matematica e linest (e una funzione personalizzata che ho scoperto che pondera i valori per incertezza) in eccellere.
Bedanec,

Puoi spiegare nel modo più chiaro possibile in che modo i valori di "incertezza" sarebbero correlati a ciò che accadrebbe sotto una ripetizione dell'esperimento? cioè cosa rappresentano esattamente queste incertezze?
Glen_b -Restate Monica

Err per esempio se y è un peso, ma la bilancia digitale è accurata solo a + -6. (Non il miglior esempio con questi valori, ma per esempio quando la scala mostra 255g potrebbe essere 255.0 o 255.9)
bedanec

Potresti spiegare come si collegherebbe alla prima frase della mia domanda, per favore?
Glen_b

Risposte:


8

Rispondendo a "Sto cercando di scoprire quanto e in possono cambiare ma adattiamo comunque i dati se conosciamo l'incertezza nei valori ".kny=kx+ny

Se la relazione vera è lineare e gli errori in sono variabili casuali normali indipendenti con zero medie e deviazioni standard note, la regione di confidenza del % per è l'ellisse per la quale , dove è la deviazione standard dell'errore in , è il numero di coppie , e è il frattile superiore della distribuzione chi-quadro con gradi di libertà.y100(1α)(k,n)(kxi+nyi)2/σi2<χd,α2σiyid(x,y)χd,α2αd

EDIT - Considerando che l'errore standard di ogni è 3 - vale a dire, prendendo le barre di errore nel per rappresentare intervalli di confidenza approssimativi del 95% per ogni separatamente - l'equazione per il confine della regione di confidenza del 95% per è .y i ( k , n ) 204 ( k - 2 ) 2 + 72 n ( k - 2 ) + 9 n 2 = 152.271yiyi(k,n)204(k2)2+72n(k2)+9n2=152.271

inserisci qui la descrizione dell'immagine


4

Ho fatto un ingenuo campionamento diretto con questo semplice codice in Python:

import random
import numpy as np
import pylab
def uncreg(x, y, xu, yu, N=100000):
    out = np.zeros((N, 2))
    for n in xrange(N):
        tx = [s+random.uniform(-xu, xu) for s in x]
        ty = [s+random.uniform(-yu, yu) for s in y]
        a, b = np.linalg.lstsq(np.vstack([tx, np.ones(len(x))]).T, ty)[0]
        out[n, 0:2] = [a, b]
    return out
if __name__ == "__main__":
    P = uncreg(np.arange(0, 8.01), np.arange(0, 16.01, 2), 0.1, 6.)
    H, xedges, yedges = np.histogram2d(P[:, 0], P[:, 1], bins=(50, 50))
    pylab.imshow(H, interpolation='nearest', origin='low', aspect='auto',
                 extent=[xedges[0], xedges[-1], yedges[0], yedges[-1]])

e ottenuto questo: Istogramma dei risultati del campionamento diretto

Naturalmente puoi estrarre i Pdati desiderati o modificare le distribuzioni dell'incertezza.


0

Ero già alla stessa caccia prima e penso che questo potrebbe essere un punto utile per iniziare. La funzione macro di Excel offre termini di adattamento lineare e le loro incertezze basate su punti tabulari e incertezza per ciascun punto in entrambe le ordinate. Forse cerca il documento su cui si basa per decidere se vuoi implementarlo in un ambiente diverso, modificarlo, ecc. (C'è qualche lavoro svolto per Mathematica.) Sembra avere una buona documentazione di passaggio in superficie ma rifugio ha aperto la macro per vedere quanto è ben annotata.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.