2014 dxdy logo

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

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




 
 определение границ участка линейности
Сообщение30.01.2009, 14:26 
Сразу предупрежу, что я не математик и данную проблему (задачу) хотелесь бы решить наиболее простым способом ( не обязательно пользуясь доверительными интервалами и тому подобным) :wink:

Задача вот в чем:
Есть функция, заданная дискретными координатами движения точки на координатной плоскости. В общем виде функция имеет вид s-образной кривой выходящей из начала координат и с линейно возрастающим участком посередине.
Но это только в общем виде. Т.к. эти точки являются данными эксперимента, они имеют некоторый "шум", в пределах допустимого. Так вот из за этого шума и возникают сложности. Сплайн-интерполяцию делать бы не хотелось. Но нужно вывести критерий который бы определял диапазон координат, в котором функция в общем линейна, с небольшой долей отклонения от линейности - шумом.
[/img]

 
 
 
 
Сообщение30.01.2009, 14:42 
Аватара пользователя
Без математики это просто сделать. Надо нарисовать график и прикладывать к нему линейку.
Если данные в таблице, то я бы следил за изменением коэффициента корреляции при постепенном отсечении крайних точек. Близость коэффициента корреляции к единице можно считать показателем линейности.

 
 
 
 
Сообщение30.01.2009, 16:13 
Аватара пользователя
Какую-то книгу я видел на эту тему. Там рассматривается нестационарный случайный процесс, причём его параметры меняются кусочно-линейно от времени. Требуется по наблюдению за этим процессом найти моменты его переключения с одного режима на другой. Ни автора, ни название книги не помню. Проще, наверное, сходить в библиотеку и поискать в разделе "Статистика случайных процессов".

 
 
 
 
Сообщение02.02.2009, 12:41 
Аватара пользователя
Не применяя серъёзных теорий, можно поступить так. Вначале прикиньте на глаз грубо участок линейности.(Лучше с недостатком!) Точки вне участка линейности временно отбросьте. Через оставшиеся точки методом наименьших квадратов проведите прямую. Затем параллельно полученной прямой нарисуйте пунктиром прямые так, чтобы все точки находились внутри пунктирных прямых. Затем верните ранее удалённые точки. Там где они будут серъёзно вылазить из участка между пунктирных прямых - там и кончается граница линейности.

 
 
 
 
Сообщение02.02.2009, 12:56 
Наблюдение за коэффициентом корреляции для данного набора данных будет поточнее, чем рисование линий на глаз.

 
 
 
 
Сообщение02.02.2009, 13:09 
Навскидку можно так. Посчитать методом наименьших квадратов прямую, аппроксимирующую точки на проверяемом участке. Затем -- тоже с помощью МНК построить аппроксимирующий кубический многочлен. Найти максимум отклонения кубической зависимости от линейной. И сравнить со среднеквадратическим отклонением "экспериментальных" точек от кубической регрессии. Условно: если первое меньше второго, то зависимость можно считать линейной.

 
 
 
 
Сообщение02.02.2009, 15:43 
Аватара пользователя
А вот интересная ссылка
dxdy.ru/topic16327.html

 
 
 
 
Сообщение05.02.2009, 13:20 
неужели это все так сложно надо делать??? Понимаете, этот процесс мне нужно автоматизировать (желательно по средством EXCEL'я) Таких кривых для обработки предполагается десятки и сотни, а вы МНК. тут надо чтоб бездумно все делалось. А вот коэф корреляции - это что за птичка?? как с ней работать?

 
 
 
 
Сообщение05.02.2009, 13:42 
Аватара пользователя
Aneto, я под таблицей как раз и понимал Excel.

Там есть функция Correl коэффициент корреляции двух массивов, которыми, я думаю, и задаются Ваши кривые.

Ну а потом можно и Solver'ом или макрос написать.

 
 
 
 
Сообщение05.02.2009, 13:53 
Aneto писал(а):
А вот коэф корреляции - это что за птичка?? как с ней работать?


Также посмотрите для избежания недоразумений, correlation and linearity..

 
 
 
 
Сообщение06.02.2009, 00:09 
Особливо спасибо за последние 2 сообщения - почти все разъяснили, я так и знал что не надо заново изобретать велосипед))
Вот только последний нюансик: если я напишу макрос, который будет последовательно брать массивы по 10-20 с шагом в 1-2 точки и сравнивать коэффициент корреляции с 1, ну и соответственно выполняя эти действия запоминать те значения что подошли, то будет ли такая процедура корректной для всей кривой "длинной до 1000 точек ( участок линейности от 40 до 300 точек примерно)

 
 
 
 
Сообщение06.02.2009, 00:30 
Аватара пользователя
Вот это Вам не поможет? http://en.wikipedia.org/wiki/Segmented_regression

 
 
 
 
Сообщение06.02.2009, 09:05 
Аватара пользователя
Aneto писал(а):
последовательно брать массивы по 10-20 с шагом в 1-2 точки и сравнивать коэффициент корреляции с 1...


Здесь многое зависит от априорного знания о кривой. Вы писали, что она имеет S-ю форму, возрастает (то есть коэфффициент корреляции больше 0), имеет один участок линейности где-то в середине.
Определитесь, нужно ли Вам находить один участок линейности или можно несколько с разными коэффициентами.
Я бы не стал возиться с маленькими участками. Скорее всего, они все окажутся почти линейными. И тут уже надо будет сравнивать коэффициенты линейного уравнения, склеивать и т.д.
Я бы начал с поиска линейного участка длины 30-40 в середине, а потом начал бы его расширять в стороны с шагом 10 ( да хоть бы и с шагом 1), пока коэффициент корреляции не стал бы меньше некоторого порогового значения. Ну потом можно ещё подчистить по краям.
Чем проще, тем лучше.
Напишите макрос, а потом на конкретных кривульках подберите подходящие значения параметров - корреляции, шага и т.д.

 
 
 
 
Сообщение18.02.2009, 21:38 
идея хороша, но есть проблемка - определение середины)) без этого макрос усложняется: надо расширять неравномерно и для каждой сторон отдельно проверять на граничащие условия. ведь может получиться, что в одну сторону еще есть куда расширяться, а в другую уже нет. но надо попробовать, спасибо)

 
 
 
 
Сообщение18.03.2009, 13:23 
Помогите!!! :shock: возникла проблема!! помучился я с написанием макроса и его настройкой, и вдруг выяснилось что данные у меня неплохо коррелируют по всей кривой и чем больше выборка, те больше коэф корреляции Пирсона, в итоге я наткнулся на материалы по этому критерию, где описывается подобный случай и критерий Пирсуна тут НЕ ПОМОЖЕТ!!!
Так что же мне делать, господа, как выявить пределы линейности, может вторая производная тут как-то поможет, этакое ускорение приращения?? :?: :?: :?: :(

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


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