gnuplotで線形回帰はどうしようか?
ダイエットの体重、脂肪率、脂肪重(=体重*脂肪率)をだらだらとはてなに書きなぐっているのは、いいのだけど、どうもねぇと言う訳で、csv化してグラフを書かせていた。それを眺めて、にまにましたり、落ち込んだりしているわけですよ。
グラフにすると、だいたいの動きが分かっていいと思うし。
あ、でも、ほら、体重って上下の揺れ幅が大きいから、smoothにしたいなぁ、とか思うじゃないですか。そこでgnuplotの登場ですね。日付対応もばっちりですね。
しかし、線形回帰がうまくできません!教えて偉い人!
set xdata time set timefmt "%Y/%m/%d"
あ、軸はこうかな。
set format x "%Y/%m"
さあて、では将来の予測として、一次回帰でもしてみようかなぁ、と思ったところ、どうにもこうにも、うまくいかない。なんでですかね?ぜんぜんfitしないのですよ?
f(x) = a * x + b fit f(x) "raw.dat" using 1:2 via a,b
ってしても、aがとんでもなく小さい正の値に。体重は減ってるのに! xが日付では一次回帰できないのでしょうか?
Iteration 0
WSSR : 18959.6 delta(WSSR)/WSSR : 0
delta(WSSR) : 0 limit for stopping : 1e-05
lambda : 2.07569e+08initial set of free parameter values
a = 2.27372e-07
b = 1
/Iteration 1
WSSR : 6176.04 delta(WSSR)/WSSR : -2.06986
delta(WSSR) : -12783.5 limit for stopping : 1e-05
lambda : 2.07569e+07resultant parameter values
a = 2.09643e-07
b = 1
/Iteration 2
WSSR : 6176.02 delta(WSSR)/WSSR : -2.32766e-06
delta(WSSR) : -0.0143757 limit for stopping : 1e-05
lambda : 2.07569e+06resultant parameter values
a = 2.09624e-07
b = 1After 2 iterations the fit converged.
final sum of squares of residuals : 6176.02
rel. change during last iteration : -2.32766e-06degrees of freedom (FIT_NDF) : 469
rms of residuals (FIT_STDFIT) = sqrt(WSSR/ndf) : 3.62884
variance of residuals (reduced chisquare) = WSSR/ndf : 13.1685Final set of parameters Asymptotic Standard Error
_______________________ __________________________a = 2.09624e-07 +/- 1.21e-08 (5.77%)
b = 1 +/- 3.551 (355.1%)
correlation matrix of the fit parameters:
a b
a 1.000
b -0.999 1.000
この辺のやり方はエロイ人に教えてもらいたいです。はい、手取り足取り。あ、違います。えらい人です。教えて偉い人!
ぐぐっていたら、gnuplotで日付を扱わずに、perlのClass-Dateでepoch時間からの秒数に変換している方のpageがありました。日付データの線形回帰は、gnuplotではできないのでしょうか?