在对数比例图中绘制最小平方回归线

2024-05-12 15:35:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在对数比例图中绘制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()

Tags: inlognp绘制pltminmeannum
1条回答
网友
1楼 · 发布于 2024-05-12 15:35:03

似乎您的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现在是协方差矩阵

相关问题 更多 >