我想使用擬合函數繪製數據:function f(x) = a+b*x**2
。 ploting之後,我有這樣的結果:gnuplot上的相關係數
correlation matrix of the fit parameters:
m n
m 1.000
n -0.935 1.000
我的問題是:我怎麼能發現gnuplot的相關係數?
我想使用擬合函數繪製數據:function f(x) = a+b*x**2
。 ploting之後,我有這樣的結果:gnuplot上的相關係數
correlation matrix of the fit parameters:
m n
m 1.000
n -0.935 1.000
我的問題是:我怎麼能發現gnuplot的相關係數?
如果您正在尋找一種方法來計算correlation coefficient as defined on this page,那麼您使用gnuplot運氣不佳,如Google Groups thread中所述。
有很多其他的工具來計算相關係數,例如, numpy。
儘管沒有直接解決此問題的方法,但解決方法是可行的。我將用python/numpy來說明它。首先,產生契合,Python腳本連接gnuplot的腳本的一部分:
file = "my_data.tsv"
f(x)=a+b*(x)
fit f(x) file using 2:3 via a,b
r = system(sprintf("python correlation.py %s",file))
ti = sprintf("y = %.2f + %.2fx (r = %s)", a, b, r)
plot \
file using 2:3 notitle,\
f(x) title ti
這將運行correlation.py檢索以字符串格式的相關性「R」。它使用'r'爲fit line生成一個標題。然後,correlation.py:
from numpy import genfromtxt
from numpy import corrcoef
import sys
data = genfromtxt(sys.argv[1], delimiter='\t')
r = corrcoef(data[1:,1],data[1:,2])[0,1]
print("%.3f" % r).lstrip('0')
這裏,第一行被假定爲標題行。此外,計算相關性的列現在被硬編碼爲nr。 1和2.當然,這兩個設置都可以改變並轉化爲參數。
所得的擬合線的標題是(用於個人示例):
stats "file.dat" using 2:(f($2)) name "A"
:
y = 2.15 + 1.58x (r = .592)
可以在的gnuplot,其語法類似於plot
命令使用stats
命令
相關係數將存儲在A_correlation
變量中。你可以用它隨後展現您的數據或只是打印使用set label
命令在屏幕上:
set label 1 sprintf("r = %4.2f",A_correlation) at graph 0.1, graph 0.85
你可以找到更多關於stats
命令gnuplot documentation。