Skip to content

Linear

Encontre a melhor reta (minímos quadrados)

y = a * x + b

Return : Array com Coeficientes

Source code in LabIFSC2/fitting.py
115
116
117
118
119
120
121
122
123
124
125
def regressao_linear(x:iter,y:iter,func=False) -> MPolinomio:
    '''Encontre a melhor reta (minímos quadrados)

    y = a * x + b

    Args:
        x , y iterables (arrays,list,...) com floats ou Medidas
    Return : 
        Array com Coeficientes
    '''
    return regressao_polinomial(x,y,1,func)

É um caso especial da Regressão Polinomial (grau=1).

Regressão linear usando o método dos mínimos quadrados, o código é escrito usando a função polyfit do numpy, a sua grande vantagem é que são aceitas Medidas nos arrays e .

É retornado os coeficientes da reta como Medidas com seus erros estimados, um detalhe é que os coeficientes são ordenados com grau crescente ( e não )

LabIFSC2.medida
    x_dados=np.array([1, 2, 3, 4])
    y_dados=np.array([2.1 , 3.9 , 5.8 , 8.03])
    b,a = regressao_linear(x_dados,y_dados) 
    #b=(0.0 ± 0.1) a=(1.99 ±0.05)

Retornar função

Para criação de gráficos, às vezes é mais prático a regressao_linear retornar uma função linear do que os coeficientes, com o parametro extra func=True isso é possível. É retornado um MPolinomio que atua como função

1
2
3
4
5
    x_dados=np.array([1, 2, 3, 4])
    y_dados=np.array([2 , 3.9 , 5.8 , 8.03])
    linha= regressao_linear(x_dados,y_dados,func=True) 
    x=np.linspace(1,4,100)
    y=linha(x)

o MPolinomio quando calculado nos valores de x, irá retornar um array de Medidas que junto com os métodos CurvaMin e CurvaMax é possível criar facilmente um gráfico com o erro estimado da reta

5
6
7
8
    import matplotlib.pyplot as plt
    plt.scatter(x_dados,y_dados)
    plt.plot(x,y,color='r')
    plt.fill_between(x,CurvaMin(y),CurvaMax(y),alpha=0.5)
Image