6

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

1

2 Answers 2

10
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

Sign up to request clarification or add additional context in comments.

Comments

6

You can use scipy.stats.linregress :

m, b, r_value, p_value, std_err = stats.linregress(t, yp)

The quality of the linear regression is given by the correlation coefficient in r_value, being r_value = 1.0 for a perfect correlation.

Note that, std_err is the standard error of the estimated gradient, and not from the linear regression.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.