我正嘗試使用(Fit(x))進行線性迴歸。而不是在數據文件中有兩列,例如x和y值,這個文件例如有5列。我想選擇每列的平均值並將其提供給F(X)函數。具有線性迴歸的Gnuplot
數據:
A B C D E
2 2 5 10 20
4 5 6 11 1
6 8 7 12 4
8 9 12 13 8
10 11 10 14 17
莫非我?
感謝您的幫助
我正嘗試使用(Fit(x))進行線性迴歸。而不是在數據文件中有兩列,例如x和y值,這個文件例如有5列。我想選擇每列的平均值並將其提供給F(X)函數。具有線性迴歸的Gnuplot
數據:
A B C D E
2 2 5 10 20
4 5 6 11 1
6 8 7 12 4
8 9 12 13 8
10 11 10 14 17
莫非我?
感謝您的幫助
假設你的數據是指定的,你想,以適應功能f(x)=m*x+b
的數據,其中0爲基礎列索引(0,1,2,3或4)應在x值和列平均值應該是y值。我們需要構建一個包含平均值的新數據文件。
在gnuplot 5中,我們可以使用一種叫做的內聯數據。這是一個像文件一樣的特殊變量。我們將找到每列數據的平均值,並構建一個包含這些數據的內聯數據變量。我們通過遍歷列索引並應用統計函數來完成此操作。可以指示打印命令打印到內聯數據變量。
set print $l append
do for [i=1:5] {
stats datafile u i nooutput
print STATS_mean
}
set print # restores ordinary print behavior
與您的數據,我們可以看到什麼是包含在$ L與print $l
打印出來:
6.0
7.0
8.0
12.0
10.0
現在,我們可以應用這個數據擬合命令
f(x) = m*x + b
fit f(x) $l u 0:1 via m,b
這將擬合數據,使得f(x)=第x列的平均值(或者如可以用擬合所得到的那樣接近它)。
在gnuplot的4.6,內聯數據不可用,但我們可以用一個臨時文件。將所有出現$l
替換爲"tempfile"
的工作方式都是一樣的(print $l
命令除外),但會將數據添加到名爲tempfile的臨時文件。
感謝您的回答。有用 – Anees
你有什麼試過自己?我們將幫助您找出代碼失敗的位置,但我們不會創建完整的解決方案。 – SubliemeSiem
這並不完全清楚。您能否提供一些示例數據和示例輸出以顯示您想要執行的操作? – Matthew
例如,如果我們有一個文件,其值如下: – Anees