簡體   English   中英

在對數刻度圖中繪制最小二乘回歸線

[英]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?

我使用以下代碼使用此代碼,但出現此運行時錯誤:

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 現在是您的協方差矩陣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM