Просмотр полной версии : нормализированный коэффициент корреляции
кто-нить может внятно сказать\ответить\помо4ь в сабЖе, если есть несколько массивов 4исел и нужно на практике в своей программе подс4итать меру их схожести к другому (само понятие и формулы есть и в википедии, и в екселе-реализация, нужен совет по практи4еской реализации в конкретно своей проге исходя из описанных входных данных)???
буду рад услЫшать 4то-нить от людей, которым больше 4ем мне пощасливилось у4ить матстатистику...
А какие проблемы? Сравниваешь каждый элемент массива с остальными в определенном порядке, при этом несовпавшие массивы сразу вычеркиваешь
NaX[no]rT
13.06.2006, 01:03
подс4итать меру их схожести к другому
Создаёшь какую либо переменную, затем поэлементно сравниваешь один массив с другим если элементы совпали inc(переменная). В какой больше всего будет, значит и будут самые похожие... вроде элементарно
да нет, ребятки, inc(совпадений) - это мера 4астотного совпадения элементов в двух массивах, мне же нужно их скоррелировать: http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D1%8D%D1%84%D1%84%D0%B8%D1%86%D0%B8%D 0%B5%D0%BD%D1%82_%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0 %BB%D1%8F%D1%86%D0%B8%D0%B8
NaX[no]rT
13.06.2006, 02:41
аа )) воть ты про что ... в формулу составить нужно?))
кто-нить может внятно сказать\ответить\помо4ь в сабЖе, если есть несколько массивов 4исел и нужно на практике в своей программе подс4итать меру их схожести к другому (само понятие и формулы есть и в википедии, и в екселе-реализация, нужен совет по практи4еской реализации в конкретно своей проге исходя из описанных входных данных)???
буду рад услЫшать 4то-нить от людей, которым больше 4ем мне пощасливилось у4ить матстатистику...
В чем проблема-то ?
Нет формулы? Есть формула но не знаешь как реализовать?
Какой коэфф корреляции? Пирсона?
есть формула (http://ru.wikipedia.org/wiki/%D0%9A...%86%D0%B8%D0%B8), но не знаю как реализовать, т.к. не понимаю взаумных понятий мат. статистики
Вот вроде вразумительно написано http://www.usatic.narod.ru/test-teor4-1-4.html
А вообще-то такие элементарные вещи нужно уметь считать и без форумул ))
недавно надо было. Вот и стряпал.
procedure TForm1.korelExecute(Sender: TObject);
var i,j,jj,n:integer;
listitem:tlistitem;
sc:string;
begin
for i:=1 to 2000 do
begin
x[i]:=0;
p1[i]:=0;
p2[i]:=0;
p3[i]:=0;
end;
for j:=1 to 3 do for i:=1 to 3000 do px[j][i]:=0;
n:=form1.StringGrid3.RowCount-1;
for i := 1 to n do
if (form1.StringGrid3.Cells[2,i] <> '-') and (form1.StringGrid3.Cells[2,i] <> '') then
px[1][i]:=StrToInt(form1.StringGrid3.Cells[2,i]) else px[1][i]:=0;
for i := 1 to n do
if (form1.StringGrid3.Cells[3,i] <> '-') and (form1.StringGrid3.Cells[3,i] <> '') then
px[2][i]:=StrToInt(form1.StringGrid3.Cells[3,i]) else px[2][i]:=0;
for i := 1 to n do
if (form1.StringGrid3.Cells[4,i] <> '-') and (form1.StringGrid3.Cells[4,i] <> '') then
px[3][i]:=StrToInt(form1.StringGrid3.Cells[4,i]) else px[3][i]:=0;
for j:=1 to 8 do
begin
with form1.ListView1 do
begin
ListItem := Items.Add;ListItem.Caption :='';
for jj:=0 to 7 do ListItem.SubItems.Add('');
end;
end;
for j:=1 to 3 do
begin
for i:=1 to n do mx[j]:=mx[j]+px[j][i];
mx[j]:=mx[j]/(n);
end;
//Розрахунок середньоквадратичного відхилення//
for j:=1 to 3 do
begin
s[j]:=0;
for i:=1 to n do s[j]:=s[j]+sqr(px[j][i]-mx[j]);
s[j]:=s[j]/(n-1);
sigma[j]:=sqrt(s[j]);
end;
for j:=1 to 3 do
begin
form1.ListView1.Items.Item[j-1].caption:=inttostr(j);
for jj:=1 to 3 do
begin
r[j,jj]:=0;
for i:=1 to n do
r[j,jj]:=r[j,jj]+((px[j][i]-mx[j])*(px[jj][i]-mx[jj]));
r[j,jj]:=r[j,jj]/((n-1)*sigma[j]*sigma[jj]);
str(r[j,jj]:5:8,sc);
form1.ListView1.Items.Item[j-1].SubItems[jj-1]:=sc;
end;
end;
end;
Вот кусок кода для Delphi. Если что не понятно, то стучи.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot