formele formule schrijven

Moderators: dirkwb, Xilvo

Forumregels
(Middelbare) school-achtige vragen naar het forum "Huiswerk en Practica" a.u.b.
Zie eerst de Huiswerkbijsluiter
Gebruikersavatar
Berichten: 8.557

formele formule schrijven

ik probeer een formule op te stellen waarbij ik het gemiddelde van alle afstanden tussen alle punten in een 2 dimensionaal cartetisch stelsel kan bepalen. Verschillende kleuren worden bepaald in HSB (Hue-Saturation-Brightness). Hierbij zijn Hue en Saturation relevant. Dit resulteert in een 2 dimensionaal stelsel waarbij Hue op de X-as en Saturation op de Y-as.

 

Voor elke afstand tussen twee verschillende punten kan ik de volgende formule opstellen.
 
\(C(a)=\sqrt{(X(a)-X(a+1))^2+(Y(a)-Y(a+1))^2}\)
 
Dit bepaald echter alleen de afstand tussen punt a en a+1. Hoe schrijf ik formeel het gemiddelde van de afstand tussen alle punten (in totaal zal ik per sample meer dan 500 punten hebben, dus in ieder geval 499+498+497+...1 afstanden moeten bepalen)
"Meep meep meep." Beaker

Gebruikersavatar
Berichten: 2.906

Re: formele formule schrijven

Zo:
 
\(\frac{1}{N^2}\sum_{i=1}^N \sum_{j=1}^N\sqrt{(X(i)-X(j))^2 + (Y(i) - Y(j))^2}\)
 
waarbij N het aantal punten is.
while(true){ Thread.sleep(60*1000/180); bang_bassdrum(); }

Gebruikersavatar
Berichten: 7.463

Re: formele formule schrijven

Wil je de paren van gelijke punten (waartussen de afstand dus nul is) ook meetellen?

Gebruikersavatar
Berichten: 8.557

Re: formele formule schrijven

Professor Puntje schreef: Wil je de paren van gelijke punten (waartussen de afstand dus nul is) ook meetellen?
Ja. Hoewel het bestaan van exact gelijke punten onwaarschijnlijk zal zijn in de experimentele set-up die ik gebruik.
"Meep meep meep." Beaker

Gebruikersavatar
Berichten: 7.463

Re: formele formule schrijven

Wouter_Masselink schreef: Ja. Hoewel het bestaan van exact gelijke punten onwaarschijnlijk zal zijn in de experimentele set-up die ik gebruik.
 
Ik neem aan dat X(k) en Y(k) de coördinaten van het k-de punt voorstellen. Wat ik bedoel is of je het i-de en het j-de punt alleen voor die gevallen met elkaar wilt vergelijken waarvoor i en j ongelijk zijn?

Gebruikersavatar
Berichten: 8.557

Re: formele formule schrijven

Ook waarbij i en j gelijk zijn wil ik de vergelijking maken. Het verschil is hier dan dus ook 0
"Meep meep meep." Beaker

Gebruikersavatar
Berichten: 7.463

Re: formele formule schrijven

OK. Dan gaat het zo goed.

Berichten: 7.068

Re: formele formule schrijven

Stel je hebt 2 punten: (0,0) en (0,1). Welk antwoord wil je hier hebben? Het antwoord dat je met de bovengenoemde formule krijgt is 1/2. Dat lijkt mij niet de bedoeling (het is namelijk niet de gemiddelde afstand tussen de twee punten).
Wil je niet liever:
\(\frac{2}{N \cdot (N - 1)}\sum_{i=2}^N \sum_{j=1}^{i - 1}\sqrt{(X(i)-X(j))^2 + (Y(i) - Y(j))^2}\)

Gebruikersavatar
Berichten: 8.557

Re: formele formule schrijven

EvilBro schreef: Stel je hebt 2 punten: (0,0) en (0,1). Welk antwoord wil je hier hebben? Het antwoord dat je met de bovengenoemde formule krijgt is 1/2. Dat lijkt mij niet de bedoeling (het is namelijk niet de gemiddelde afstand tussen de twee punten).
 
 
De afstand tussen 2 punten en de gemiddelde afstand tussen 2 punten zou hetzelfde moeten zijn. Het antwoord wat ik hier zou verwachten is dus 1.
 
In het geval van 3 punten (0,0),(0,1) en (2,0) zijn er in totaal 3 afstanden
 
(0,0) en (0,1)
(0,0) en (2,0)
(2,0) en (0,1)
 
de gemiddelde afstand is in deze situatie
\(\frac{1+2+(\sqrt{1^2+2^2})}{3}=1.745\)
 
Misschien is het handig als ik hier iets meer achtergrond geef. Ik probeer een objectieve maat van klonaliteit (in een biologische context) te geven. Elk punt beschrijft 1 stamcel. Als stamcellen op hetzelfde punt liggen, dan zijn ze klonen van elkaar. Des te meer variatie er is, des te groter de gemiddelde afstand tussen punten. Ik wil vervolgens de gemiddelde afstand tussen punten bepalen in verschillende situatie. Een controle situatie en 2 experimentele situaties. In de controle situatie is er een bepaalde klonale diversiteit. Ik verwacht in 1 experimentele situatie een expansie van 1 specifieke stamcel, dus een toename in klonaliteit terwijl in de andere experimentele situatie er geen verandering in de klonaliteit op zal treden. (dat is in ieder geval de theorie)
"Meep meep meep." Beaker

Berichten: 7.068

Re: formele formule schrijven

Je hebt dus de formule nodig die ik hierboven gaf. Alle afstanden bij elkaar opgeteld en dan gedeeld door het aantal afstanden. Misschien is de volgende notatie wel overzichtelijker:
\(\frac{\sum_{i=2}^N \sum_{j=1}^{i - 1}\sqrt{(X(i)-X(j))^2 + (Y(i) - Y(j))^2}}{\frac{N \cdot (N - 1)}{2}}\)

Je kunt het natuurlijk ook als volgt bekijken: Kies alle mogelijke paren van punten (een punt kan ook een paar met zichzelf zijn). Hierbij zul je dus elke afstand dubbel tellen. De bijdrage van de paren met zichzelf is 0 en zal dus niet aan dit totaal bijdragen. Het aantal afstanden is
\(N^2 - N = N \cdot (N-1)\)
(de '- N' zijn de paren met zichzelf). Dan kom je dus op:
\(\frac{\sum_{i=1}^N \sum_{j=1}^{N}\sqrt{(X(i)-X(j))^2 + (Y(i) - Y(j))^2}}{N \cdot (N - 1)}\)
Dit is natuurlijk hetzelfde als hierboven (qua uitkomst).

Er is nog iets dat je zou kunnen overwegen. Stel dat 1 van de punten op grote afstand verwijderd is van alle andere punten. Deze set zal dan een relatief grote gemiddelde afstand opleveren terwijl zonder dat ene afwijkende punt de afstand klein geweest zou zijn. Dit effect kun je een beetje tegengaan door een constante K te introduceren:
\(\frac{\sum_{i=2}^N \sum_{j=1}^{i - 1}\left(\sqrt{(X(i)-X(j))^2 + (Y(i) - Y(j))^2}\right)^{K}}{\frac{N \cdot (N - 1)}{2}}\)
Als K tussen de 0 en de 1 zit dan zal het effect van verre punten afgezwakt worden. De maat die je dan hebt is natuurlijk niet meer de gemiddelde afstand (maar dat is voor een maat niet zo belangrijk).
Ter info: Als je K groter dan 1 kiest dan hebben verre punten extra invloed.

Gebruikersavatar
Berichten: 8.557

Re: formele formule schrijven

Helemaal geweldig! Bedankt daarvoor. De punten moeten geen paar met zichzelf vormen, mochten 2 punten op dezelfde coordinaten zitten dan mag dit natuurlijk wel. Ik zou dus je oorspronkelijke notatie gebruiken.
 
Ik verwacht niet direct dat een punt op grote afstand gaat liggen ten opzichte van alle andere punten, dit is in de context van het biologische systeem onwaarschijnlijk. Daar komt nog bij dat er een groot aantal punten bepaald zal worden. Dit zal het effect ook verminderen. Mocht het natuurlijk zo zijn dat dit toch problemen oplevert, dan zal ik kijken wat de introductie van deze K-factor er aan kan veranderen. 
 
Nogmaals bedankt!
"Meep meep meep." Beaker

Gebruikersavatar
Berichten: 8.557

Re: formele formule schrijven

Heeft iemand een suggestie hoe ik deze formule eenvoudig op een dataset toe kan passen. Het is in theorie mogelijk om dit in excel te doen, maar dat is alles behalve ideaal. Ik zit zelf met matlab te spelen. Nu vraag ik me af of ik deze latex functie direct in matlab toe kan passen of dat er een andere methode is die iemand aan kan raden.
"Meep meep meep." Beaker

Berichten: 7.068

Re: formele formule schrijven

Code: Selecteer alles

x = [0, 0, 2];
y = [0, 1, 0];
N = length(x);
xx = ones(N,1) * x;
yy = ones(N,1) * y;
dMean = sum(sum(sqrt((xx - xx').^2 + (yy - yy').^2))) / (N * (N - 1))

Gebruikersavatar
Berichten: 8.557

Re: formele formule schrijven

EvilBro schreef:

Code: Selecteer alles

x = [0, 0, 2];
y = [0, 1, 0];
N = length(x);
xx = ones(N,1) * x;
yy = ones(N,1) * y;
dMean = sum(sum(sqrt((xx - xx').^2 + (yy - yy').^2))) / (N * (N - 1))
Dat werkt heel mooi! Ik probeer hier nog de standaard deviaties bij te bepalen.
 
Dit probeer ik als volgt

Code: Selecteer alles

E = (sqrt((xx-xx').^2 + (yy-yy').^2))
Ea = tril(E)
Eb = Ea(Ea~=0)
Stdev = std(Eb)
Het probleem wat ik hier heb is dat wanneer Ik  paren van gelijke punten (die als afstand dus '0' hebben) ook verwijder. Is er een alternatief om in plaats van de tril of triu functie waarbij een gedeelte van de matrix vervangen wordt voor nullen, dit gedeelte direct te verwijderen? Dan kan ik Ea-=0 weglaten en zodoende de standaard deviatie in het geval van gelijke punten bepalen.
"Meep meep meep." Beaker

Gebruikersavatar
Berichten: 8.557

Re: formele formule schrijven

Door een '0' tijdelijk een 'NaN' te maken en later weer terug te zetten kan ik dit oplossen

Code: Selecteer alles

E = (sqrt((xx-xx').^2 + (yy-yy').^2))
%convert 0s to NaNs
E(~E) = NaN
% remove lower triangle
Ea = tril(E,-1)
% remove '0's
Eb = Ea(Ea~=0)
% turn NaNs back into 0s
Eb(isnan(Eb)) = 0
Stdev = std(Eb)
Mooi is het zeker niet. Daar moet toch een betere manier voor zijn?
"Meep meep meep." Beaker

Reageer