2012-04-04 2 views
1

Просьба посмотреть график графика и данные. каков метод или алгоритм для поиска ближайшего соответствия (наивысшая степень подобия) между графиком «px4» и другими сюжетами. Любое предложение было бы оценено, если для этой проблемы может быть адаптирован алгоритм распознавания VF-Graph, если существует какая-либо библиотека C# или алгоритм распознавания VF-Graph.Ближайшее соответствие (распознавание) метод или алгоритм линейного графика

px PLOTS from data

DATA

enr px1 px2 px3 px4 px5 px6 
    1 90 5 15 20 60 10 
    2 70 10 20 30 85 15 
    3 100 15 15 10 32 18 
    4 80 20 8 3 9 44 
    5 60 25 3 5 15 12 
    6 50 30 12 8 24 16 
    7 70 18 28 24 70 25 
    8 90 12 32 28 84 22 
    9 75 20 12 15 45 16 
    10 65 10 20 18 54 25 
+0

В конце дня ответ зависит от того, зачем вам это нужно. Если это программирование на домашней работе на C#, то вы, вероятно, хорошо используете какой-либо старый метод, тем больше вы проводите исследование по различным методам, тем лучше. Однако, если вам нужно сделать это для анализа государственных медицинских данных, тогда вам лучше всего заключить контракт с кем-то, кто имеет докторскую степень. :-) –

ответ

3

Я не эксперт статистики. Но ... Я бы взял сюжет и сравнил разницу между каждой точкой и ее эквивалентной точкой на другом сюжете, по одной точке за раз. Я бы использовал Math.Abs ​​(), чтобы превратить каждое из этих 10 различий в положительное число, а затем использовать любой метод (средний, средний и т. Д.), Который вы хотите, чтобы принять в среднем 10 различий. Я бы повторил каждое сравнение для каждого другого сюжета. Большинство вычислений можно отбросить по пути, вам нужно только сохранить среднее число для каждого сюжета. Наименьшее среднее значение, вероятно, было бы сюжетом, ближайшим совпадением.

Потому что я не получил много сделать сегодня ...

Dictionary<string, int[]> plots = new Dictionary<string, int[]>(); 

plots.Add("px1", new int[] { 90, 70, 100, 80, 60, 50, 70, 90, 75, 65 }); 
plots.Add("px2", new int[] { 5, 10, 15, 20, 25, 30, 18, 12, 20, 10 }); 
plots.Add("px3", new int[] { 15, 20, 15, 8, 3, 12, 28, 32, 12, 20 }); 
plots.Add("px4", new int[] { 20, 30, 10, 3, 5, 8, 24, 28, 15, 18 }); 
plots.Add("px5", new int[] { 60, 85, 32, 9, 15, 24, 70, 84, 45, 54 }); 
plots.Add("px6", new int[] { 10, 15, 18, 44, 12, 16, 25, 22, 16, 25 }); 

string test = "px4"; 
string winner = string.Empty; 
double smallestAverage = double.MaxValue; 

foreach (string key in plots.Keys) 
{ 
    if (key == test) 
    { 
     continue; 
    } 

    int[] a = plots[test]; 
    int[] b = plots[key]; 

    double count = 0; 

    for (int point = 0; point <= 9; point++) 
    { 
     count += Math.Abs(a[point] - b[point]); 
    } 

    double average = count/10; 

    if (average < smallestAverage) 
    { 
     smallestAverage = average; 
     winner = key; 
    } 
} 

Console.WriteLine("Winner: {0}", winner); 
+0

Это по существу используется векторная 1-норма. Будьте осторожны с вашим «средним»; вы выполняете целочисленное деление. Обратите внимание, что если вы не вычисляете среднее значение, но используйте сумму/'count', вы все равно получите тот же результат. – Rawling

+0

Привет, вы правы, я изменил 'count' от' int' до 'double'. Деление на 10 также довольно избыточно, это было бы полезно, только если вам нужно записать или отобразить средние значения. –

2

Есть буквально бесчисленные способы определения «разницу» между двумя вашими графиками.

Если вы рассматриваете свои графики как 10-мерные векторы, вы можете использовать vector norm.

Если вы хотите рассматривать их как вещественнозначные функции на интервале [1, 10], вы можете использовать норму на L^p-space. (Хотя это должно включать интеграцию, поскольку ваши функции состоят из прямых сегментов, вы можете точно вычислить эту норму, не выполняя численного приближения интеграла.)

Действительно, вам нужно решить, как вы хотите определить " подобный ", а затем выберите метод, который будет действовать так, как вы ожидали.

+0

благодарит за идею ... я рассматриваю Correlation и регрессионную линию для соответствия критериям. – Raj

Смежные вопросы