5

フィット関数を使用してデータをプロットしたい : function f(x) = a+b*x**2. プロット後、次の結果が得られます。

correlation matrix of the fit parameters:

               m      n      
m               1.000 
n              -0.935  1.000 

私の質問は次のとおりです: gnuplot で相関係数を見つけるにはどうすればよいですか?

4

4 に答える 4

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'を使用して、フィットラインのタイトルを生成します。次に、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にハードコードされています。もちろん、両方の設定を変更して引数に変えることもできます。

結果として得られるフィットラインのタイトルは(個人的な例として)次のとおりです。

y = 2.15 + 1.58x (r = .592)
于 2013-03-23T18:00:12.987 に答える
3

おそらくフィット関数を使用しているため、最初にこのリンクを参照して R2 値に到達できます。このリンクは、FIT_WSSR、FIT_NDF などの特定の既存の変数を使用して R2 値を計算します。R2 のコードは次のように記述されています。

SST = FIT_WSSR/(FIT_NDF+1)
SSE=FIT_WSSR/(FIT_NDF)
SSR=SST-SSE
R2=SSR/SST

次のステップは、グラフに R^2 値を表示することです。次のコードを使用して実現できます。

set label 1 sprintf("r = %f",R2) at graph 0.7, graph 0.7

于 2018-07-19T06:22:28.373 に答える
1

このページで定義されている相関係数を計算する方法を探している場合、このGoogle グループのスレッドで説明されているように gnuplot を使用することはできません。

numpyなど、相関係数を計算するためのツールは他にもたくさんあります。

于 2012-12-21T19:12:01.800 に答える