Gnuplotを使って平均と信頼区間をプロットしたい。私のデータにx値が同じ複数のサンプルがあります。
21 27 4 12 20 100 50000 false 0.1 "DFSA" 2 205068 31.986
24 27 4 12 20 100 50000 false 0.1 "DFSA" 2 207798 32.49448
22 27 4 12 20 100 50000 false 0.1 "DFSA" 2 207499 32.60746
23 27 4 12 20 100 50000 false 0.1 "DFSA" 2 214065 33.17844
25 27 4 12 20 100 50000 false 0.1 "DFSA" 2 198386 31.4488
26 27 4 12 20 100 50000 false 0.1 "DFSA" 2 208307 32.77412
28 27 4 12 20 100 50000 false 0.1 "DFSA" 2 208669 32.77474
27 27 4 12 20 100 50000 false 0.1 "DFSA" 2 214324 33.16506
30 27 4 12 20 100 50000 false 0.1 "DFSA" 2 209924 32.77186
29 27 4 12 20 100 50000 false 0.1 "DFSA" 2 212959 33.3218
32 27 4 12 20 100 50000 false 0.2 "DFSA" 2 486241 64.3479
31 27 4 12 20 100 50000 false 0.2 "DFSA" 2 487487 64.65076
33 27 4 12 20 100 50000 false 0.2 "DFSA" 2 494703 65.06718
34 27 4 12 20 100 50000 false 0.2 "DFSA" 2 488164 64.77828
36 27 4 12 20 100 50000 false 0.2 "DFSA" 2 476513 63.3158
35 27 4 12 20 100 50000 false 0.2 "DFSA" 2 491005 65.02426
38 27 4 12 20 100 50000 false 0.2 "DFSA" 2 487454 64.44962
37 27 4 12 20 100 50000 false 0.2 "DFSA" 2 490494 65.06572
39 27 4 12 20 100 50000 false 0.2 "DFSA" 2 472081 63.31234
40 27 4 12 20 100 50000 false 0.2 "DFSA" 2 498294 65.02114
これには、10個のサンプル、列9 = 0.1、0.2と同じ値があります。yerrorlines
4つのデータ列を必要とするGnuplotを使用して、信頼区間を使用して列13(最後の列)の平均をプロットしたいと思いますx
mean
min
max
。最小値と最大値の式は、列13にSTATS_mean、STATS_ssd、STATS_recordsを使用し、列9に同じ値を使用します。
x
mean
min
max
これを使用してファイルに値を書き込もうとします。
system("touch lbt.dat")
stats "data.txt" u ($9==0.1?$13:1/0) name "lbt01"
system("(0.1 lbt01_mean (lbt01_mean - 2.262*lbt01_ssd/sqrt(lbt_records)) (lbt01_mean + 2.262*lbt01_ssd/sqrt(lbt_records))) >> lbt.dat")
system
ただし、lbt.datファイルに値を保存する最後のコマンドでエラーが発生します。私も試しました
system("printf '%f\t\%f\t\%f\t\%f' 0.1 lbt01_mean (lbt01_mean - 2.262*lbt01_ssd/sqrt(lbt_records)) (lbt01_mean + 2.262*lbt01_ssd/sqrt(lbt_records))) >> lbt.dat ")
(2.262は、95%信頼区間と9自由度を持つt-student pdf値です。)
stasts
たとえば、結果をlbt01_mean
ファイルに書き込めないようですsystem
。
そして、データファイルに0.1ステップサイズ(9列)のサンプルが0.1から1.7まで含まれていますが、Gnuplotスクリプトを短縮する方法があるかどうか見てみたいです。
挨拶
答え1
gnuplotからファイルに印刷する簡単な方法は、次の方法をprint
使用することですset print
。
set print "lbt.dat"
print 0.1, lbt01_mean, \
(lbt01_mean - 2.262*lbt01_ssd/sqrt(lbt01_records)),\
(lbt01_mean + 2.262*lbt01_ssd/sqrt(lbt01_records))
0.1と1.7の間のすべての値を繰り返すには、forループを使用して1から17まで移動し、10で除算します。
set print "lbt.dat"
do for [i=1:17] {
v = i/10.
stats "data.txt" u ($9==v?$13:1/0) name "A" nooutput
print v, A_mean, (A_mean - 2.262*A_ssd/sqrt(A_records)),\
(A_mean + 2.262*A_ssd/sqrt(A_records))
}