Page 155 - 6734
P. 155

квадратів  (МНК).  МНК  оснований  на  мінімізації  суми  квадратів
           відхилень значень функції f(x) від значень y.

           import numpy as np
           from scipy.optimize import curve_fit, leastsq
           import matplotlib.pyplot as plt # для побудови
           графіків
           x=np.array([0, 1, 2, 3]) # емпіричні значення x
           y=np.array([1, 1.5, 3, 4]) # емпіричні значення y

           # за допомогою scipy.optimize.curve_fit:
           def f(x, a, b): # модель - лінійна залежність
           y=a*x+b"
               return a*x+b # тут можна змінити модель на іншу
           функцію
           popt, pcov = curve_fit(f, x, y) # апроксимувати дані
           залежністю f за допомогою нелінійного МНК
           print popt # знайдені значення параметрів `a` і `b`
           print pcov # коваріаційна матриця для `a` і `b`
           print np.sqrt(np.diag(pcov)) # стандартні відхилення
           для `a` і `b`
           residuals = y - f(x,*popt) # відхилення
           print "RMSE",(np.sum(residuals**2)/(residuals.size-
           2))**0.5 # стандартна помилка (root-mean-square error
           (RMSE))
           ymean = np.mean(y) # середнє `y`
           ss_res = np.dot(residuals, residuals)
           ss_tot = np.dot((y-ymean), (y-ymean))
           print "R^2:", 1-ss_res/ss_tot # коефіцієнт
           детермінації (R-квадрат)
           print "R^2:", np.corrcoef(y, f(x,*popt))[0,1]**2 #
           або так

           xa=np.linspace(0,3,100) # 100 значень на проміжку
           0..3

                                         154
   150   151   152   153   154   155   156   157   158   159   160