2016-02-29 75 views
-3

我正嘗試使用(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 

莫非我?

感謝您的幫助

+2

你有什麼試過自己?我們將幫助您找出代碼失敗的位置,但我們不會創建完整的解決方案。 – SubliemeSiem

+0

這並不完全清楚。您能否提供一些示例數據和示例輸出以顯示您想要執行的操作? – Matthew

+0

例如,如果我們有一個文件,其值如下: – Anees

回答

0

假設你的數據是指定的,你想,以適應功能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列的平均值(或者如可以用擬合所得到的那樣接近它)。

enter image description here


在gnuplot的4.6,內聯數據不可用,但我們可以用一個臨時文件。將所有出現$l替換爲"tempfile"的工作方式都是一樣的(print $l命令除外),但會將數據添加到名爲tempfile的臨時文件。

+0

感謝您的回答。有用 – Anees