在对数-对数比例图中绘制最小二乘回归线
plot least-square regression line in the log-log scale plot
我想在双对数比例图中绘制 X 和 Y 的最小二乘回归线并找出系数。线函数是 log(Y) = a.log(X) + b 等效地,Y = 10^b 。 X^a。什么是
系数a和b?如何在 NumPy 中使用 polyfit?
我使用下面的代码 this code 但是我得到了这个运行时错误:
divide by zero encountered in log10 X_log = np.log10(X)
X_log = np.log10(X)
Y_log = np.log10(Y)
X_mean = np.mean(X_log)
Y_mean = np.mean(Y_log)
num = 0
den = 0
for i in range(len(X)):
num += (X_log[i] - X_mean)*(Y_log[i] - Y_mean)
den += (X_log[i] - X_mean)**2
m = num / den
c = Y_mean - m*X_mean
print (m, c)
Y_pred = m*X_log + c
plt.plot([min(X_log), max(X_log)], [min(Y_pred), max(Y_pred)], color='red') # predicted
plt.show()
你的 X 值似乎太接近零了,你能显示你发送到 log_x = np.log10(x) 的值吗?
要使用 np.polyfit 只需写
coeff = np.polyfit(np.log10(x), np.log10(y), deg = 1)
coeff 现在将是一个列表 [a,b],其中包含对数据点 (log(x)、log(y)) 进行一次拟合(因此 deg = 1)的系数。如果您想要系数的方差,请使用
coeff, cov = np.polyfit(np.log10(x), np.log10(y), deg = 1, cov = True)
cov 现在是您的协方差矩阵。
我想在双对数比例图中绘制 X 和 Y 的最小二乘回归线并找出系数。线函数是 log(Y) = a.log(X) + b 等效地,Y = 10^b 。 X^a。什么是 系数a和b?如何在 NumPy 中使用 polyfit?
我使用下面的代码 this code 但是我得到了这个运行时错误:
divide by zero encountered in log10 X_log = np.log10(X)
X_log = np.log10(X)
Y_log = np.log10(Y)
X_mean = np.mean(X_log)
Y_mean = np.mean(Y_log)
num = 0
den = 0
for i in range(len(X)):
num += (X_log[i] - X_mean)*(Y_log[i] - Y_mean)
den += (X_log[i] - X_mean)**2
m = num / den
c = Y_mean - m*X_mean
print (m, c)
Y_pred = m*X_log + c
plt.plot([min(X_log), max(X_log)], [min(Y_pred), max(Y_pred)], color='red') # predicted
plt.show()
你的 X 值似乎太接近零了,你能显示你发送到 log_x = np.log10(x) 的值吗?
要使用 np.polyfit 只需写
coeff = np.polyfit(np.log10(x), np.log10(y), deg = 1)
coeff 现在将是一个列表 [a,b],其中包含对数据点 (log(x)、log(y)) 进行一次拟合(因此 deg = 1)的系数。如果您想要系数的方差,请使用
coeff, cov = np.polyfit(np.log10(x), np.log10(y), deg = 1, cov = True)
cov 现在是您的协方差矩阵。