dlinyj
@dlinyj

Как реализовать линейную экстраполяцию в gnuplot?

Не могу победить экстраполяцию. Лучше сразу покажу график.

609ee0d9b3778441323246.png

Явно, что экстраполяция должна убывать, потому что слева точки есть наверху, а справа все внизу и их много. Пример данных.
Данные

1.12.2010;6700
5.12.2010;330000
8.12.2010;45300
12.12.2010;15400
5.05.2011;5300
31.05.2011;1500
2.06.2011;11400
24.11.2011;51000
19.03.2012;3300
21.03.2012;13700
5.07.2012;9200
5.10.2012;64500
5.11.2012;55900
27.12.2012;57600
16.01.2013;70100
1.05.2013;218000
2.09.2013;95200
17.09.2013;44400
16.12.2013;180000
14.04.2014;221000
19.05.2014;120000
9.02.2016;22100
5.10.2016;59700
28.03.2017;35200
21.05.2017;23400
31.03.2019;64300
25.12.2019;56000
8.07.2020;12400
21.07.2020;27400
4.08.2020;24900
10.08.2020;29700
25.08.2020;46200
2.09.2020;16500
16.09.2020;30900
22.09.2020;29800
29.09.2020;60500
5.11.2020;8400
18.11.2020;11300
20.11.2020;12100
24.11.2020;13000
27.11.2020;11100
4.12.2020;18500
7.12.2020;10500
17.12.2020;11600
24.12.2020;7100
30.12.2020;5700
15.02.2021;21600
17.02.2020;12500
26.02.2021;11000
30.03.2021;8100



Строю всё удовольствие таким скриптом:

#! /usr/bin/gnuplot -persist
set terminal postscript eps enhanced color solid
set output "result.ps"
set grid xtics ytics

set datafile separator ";"
set xtics rotate by 45 right
set grid xtics ytics

set xdata time
set timefmt "%d.%m.%Y"

# The equation
f(x) = a*x + b
fit f(x) "q.csv" u 1:2 via a,b

plot "q.csv" using 1:2 title "DATA" with p linestyle 3 lt 7 lw 2, \
	f(x) w l lt 1 lw 2 title "trendline"


Вот часть, которая делает линейную экстраполяцию описана во многих местах. Например, вот. И как бы логика подсказывает, что должно работать, но не работает...

# The equation
f(x) = a*x + b
fit f(x) "q.csv" u 1:2 via a,b


Что я делаю не так?
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы