2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Разделить линейные тренды.
Сообщение07.12.2012, 13:25 
Доброго времени суток. Задача следующая: дан набор точек, отражающий зависимость одной случайной величины от другой(ошибки распределены нормально). Известно, что зависимость линейна, но на разных участках различна. Пример на рисунке ниже:
Изображение
Как определить точку, где зависимость меняется?

 
 
 
 Re: Разделить линейные тренды.
Сообщение07.12.2012, 13:32 
Аватара пользователя
Я бы делал так.
1. Прикинуть место на глаз.
2. Провести прямую по левым точкам (т.е. слева от места), другую по правым.
3. Найти место, где пересекаются прямые.
4. А сами прямые стереть.
5. См. п.2.

 
 
 
 Re: Разделить линейные тренды.
Сообщение07.12.2012, 13:38 
ИСН в сообщении #655459 писал(а):
1. Прикинуть место на глаз.

А можно это как-то в автоматическом режиме сделать? Сложность алгоритма на данный момент не важна.

 
 
 
 Re: Разделить линейные тренды.
Сообщение07.12.2012, 14:16 
Euler7 в сообщении #655463 писал(а):
А можно это как-то в автоматическом режиме сделать?

Рассмотрите целевую функцию $L(x)=a_0+a_1x+a_2|x-c|$, где $c$ -- настроечный параметр. Запрограммируйте функцию $r(c)$, которая для каждого входного $c$ находит оптимальный набор коэффициентов $a_k$ по стандартной схеме МНК и возвращает соответствующую этим коэффициентам сумму квадратов отклонений $r$ (фактически это должна быть процедура вида $p(c, r, a_0,a_1,a_2)$, где параметр $c$ -- входной, а все остальные -- выходные). Ну и минимизируйте зависимость $r(c)$ -- например, тупо делением отрезков на три.

 
 
 
 Re: Разделить линейные тренды.
Сообщение07.12.2012, 16:46 
Аватара пользователя
Можно попробовать пошаговой регрессией. Регрессоры имеют вид
$x_0=i$
$$
x_i=\begin{cases}
0,&\text{если $x < i$;}\\
x-i,&\text{если $x \ge i$.}
\end{cases}
$$
Но если шум мал - находите вторую производную $-x_{t-1}+2x_t-x_{t+1}$ и смотрите, где самый большой пик...

-- 07 дек 2012, 16:52 --

С большим шумом могут быть ложные срабатывания.
Да, и поскольку только один перелом - достаточно использовать регрессию на две переменные $x_0$ и $x_i$, перебирая разные точки перелома i. Где максимальное R - там и был перелом.

 
 
 
 Re: Разделить линейные тренды.
Сообщение07.12.2012, 20:58 

(Оффтоп)

Евгений Машеров в сообщении #655536 писал(а):
С большим шумом могут быть ложные срабатывания.

Они мало того что могут быть -- они практически обязаны возникать. Как-то наивно надеяться на сглаживание тренда сравнением значений по всего лишь трём соседним точкам.

 
 
 
 Re: Разделить линейные тренды.
Сообщение08.12.2012, 11:08 
Аватара пользователя
Ну да, такой простой и наивный подход работает, если СКО шума невелико в сравнении с разностью наклона линий тренда. Для экономики или медицины нереал, в технике иногда бывает. Сглаживание иногда помогает, но вносит эмпиризм и произвол. Так что при зашумленных данных помогает скорее регрессия. Для одного перелома - даже вручную посчитать можно. А для поиска нескольких переломов пошаговая регрессия работает недурно.

 
 
 
 Re: Разделить линейные тренды.
Сообщение09.12.2012, 18:46 
Аватара пользователя
Тут topic45996.html что-то похожее обсуждалось...

 
 
 [ Сообщений: 8 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group