Search code examples
pythonnumpyscipylinear-regression

Standard deviation/error of linear regression


So I have:

t = [0.0, 3.0, 5.0, 7.2, 10.0, 13.0, 15.0, 20.0, 25.0, 30.0, 35.0]
U = [12.5, 10.0, 7.6, 6.0, 4.4, 3.1, 2.5, 1.5, 1.0, 0.5, 0.3]
U_0 = 12.5
y = []
for number in U:
    y.append(math.log(number/U_0, math.e))
(m, b) = np.polyfit(t, y, 1)
yp = np.polyval([m, b], t)
plt.plot(t, yp)
plt.show()

So by doing this I get linear regression fit with m=-0.1071 and b=0.0347.

How do I get deviation or error for m value?

I would like m = -0.1071*(1+ plus/minus error)

m is k and b is n in y=kx+n


Solution

  • import numpy as np
    import pandas as pd
    import statsmodels.api as sm
    import math
    
    U = [12.5, 10.0, 7.6, 6.0, 4.4, 3.1, 2.5, 1.5, 1.0, 0.5, 0.3]
    U_0 = 12.5
    y = []
    
    for number in U:
        y.append(math.log(number/U_0, math.e))
    
    y = np.array(y)
    
    t = np.array([0.0, 3.0, 5.0, 7.2, 10.0, 13.0, 15.0, 20.0, 25.0, 30.0, 35.0])
    t = sm.add_constant(t, prepend=False)
    
    model = sm.OLS(y,t)
    result = model.fit()
    result.summary()
    

    enter image description here