Chiede l'inserimento manuale di $n$ coppie, ciascuna nella forma $[x_i,y_i]$, calcola i coefficienti della retta di regressione e li riporata nell'output in forma testuale.
Importa le funzioni del modulo (libreria) NumPy
import numpy as np
Presenta un prompt e chiede il numero $n$ delle coppie di dati. Evidentemente dev'essere $n>2$.
n = int(input("Inserire il numero di coppie di dati: "))
Chiede l'inserimento di ciascuna coppia, valuta la correttezza del contenuto e quindi la aggiunge all'array delle coppie di dati.
coppie_dati = []
for i in range(n):
coppia_dati = np.array(eval(input(" " + str(i+1) + "^ :> ")))
coppie_dati.append(coppia_dati)
nparray = np.array(coppie_dati)
Traspone le coppie di dati separando in un array le ascisse dalle ordinate.
nparrayX_Y = nparray.transpose()
Assegna le ascisse all'array dati_x
e le ordinate a dati_y
.
dati_x = nparrayX_Y[0]
dati_y = nparrayX_Y[1]
Esegue i prodotti $x_i\cdot y_i$ e formandone un array.
XY = dati_x*dati_y
Esegue il quadrato delle $x_i$.
quadrato_x = dati_x**2
Applica le formule (12) e (11) della pagina di teoria regressione01.html per il calcolo della pendenza $a$ e dell'intercetta $b$.
a = (n*sum(XY) - sum(dati_x)*sum(dati_y)) / (n*sum(quadrato_x) - sum(dati_x)**2)
b = (sum(dati_y) - a*sum(dati_x))/n
Riporta in output la pendenza $a$ della retta di regressione e della sua intercetta $b$.
print("dati inseriti")
print(nparray)
print("output")
print("a = " + str(a))
print("b = " + str(b))
dati inseriti [[ 0 0] [ 1 1] [-5 -5]] output a = 1.0 b = 0.0