所以我有:
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()
通过这样做,我得到了m=-0.1071
和b=0.0347
的线性回归拟合。
如何获得m值的偏差或误差?
我想要m = -0.1071*(1+ plus/minus error)
m是k,并且在y = kx + n
中b是n
答案 0 :(得分:7)
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()
答案 1 :(得分:4)
您可以使用scipy.stats.linregress
:
m, b, r_value, p_value, std_err = stats.linregress(t, yp)
标准偏差将存储在std_err
...
答案 2 :(得分:0)
@Saullo Castro
对于这篇文章的后期评论感到抱歉,但是你正在谈论的std_err是“估计渐变的标准误差”,在你的情况下是“m”。
请注意,在
的情况下,必须手动计算拟合误差(任何执行线性回归的人都需要)stats.linregress
希望这有帮助!