2012-12-19 39 views
3

我想使用擬合函數繪製數據: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的相關係數?

回答

4

儘管沒有直接解決此問題的方法,但解決方法是可行的。我將用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) 
9

可以在的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