vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Ellipsen Fit 
Autor: alexg
Datum: 30.08.21 15:16

Hallo Zusammen,

ich habe für eine Punkteliste (List of (Point)) eine Funktion gebastelt, die mir die Koeffizienten eines einfachen linearen Fits zurück gibt.

Jetzt würde ich aber an die Datenpunkte gerne eine Ellipse anfitten (die sind nämlich oft elipsenförmig verteilt) und deren Parameter (Länge der Achsen, Mittelpunkt und Neigungswinkel) zurückgeben lassen.

Hat da evtl. schon jemand was gemacht?

Beispiel meines Line-Fits, funktioniert einwandfrei:

Public Class LinRegress
 
    Public Steigung As Double
    Public b As Double 'Achsenschnittpunkt b
    Public r As Double 'Korrelationskoeffizient R
 
End Class
   Public Function LinRegressionPoints(ByVal dps As List(Of Point)) As _
     LinRegress
 
        Dim erg As New LinRegress
 
        Dim n As Integer
        n = dps.Count
 
        If n < 2 Then Return Nothing
 
        Dim sum_xy As Double
        Dim sum_x As Double
        Dim sum_y As Double
        Dim sum_x2 As Double
        Dim sum_y2 As Double
 
        For i = 0 To n - 1
            sum_x += dps.Item(i).X
            sum_y += dps.Item(i).Y
            sum_xy += dps.Item(i).X * dps.Item(i).Y
            sum_x2 += dps.Item(i).X ^ 2
            sum_y2 += dps.Item(i).Y ^ 2
        Next
 
        erg.Steigung = (n * sum_xy - sum_x * sum_y) / (n * sum_x2 - sum_x ^ 2)
        erg.b = (sum_y - erg.Steigung * sum_x) / n
        erg.r = (n * sum_xy - sum_x * sum_y) / ((Math.Sqrt(n * sum_x2 - sum_x ^ _
          2) * Math.Sqrt(n * sum_y2 - sum_y ^ 2)))
 
        Return erg
 
    End Function
THX
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Ellipsen Fit 
Autor: Manfred X
Datum: 30.08.21 21:54

Hallo!

Du errechnest eine lineare Anpassung.
(Eindeutige Minimierung nach der Methode der kleinsten Abweichungs-Quadrate).

Eine umhüllende Ellipse ist nicht eindeutig definierbar.
Ihre Form hängt im wesentlichen von der Enge des Zusammenhangs zwischen
den beiden zugrundeliegenden Variablen ab (Höhe der Korrelation).

Man könnte eine Ellipse auf der Basis der Höhe der Korrelation formal
definieren. Die spiegelt aber eventuell die reale Punktewolke nicht gut wider.

Gewöhnlich zeichnet man in solche Graphen einen "Konfidenzstreifen"
(eine obere und untere Gerade, die den Bereich der 95%-Schätzung angibt,
wenn man von einem x-Wert auf den y-Wert schließen will).

Was genau soll diese Graphik zum Ausdruck bringen?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Ellipsen Fit 
Autor: alexg
Datum: 31.08.21 12:41

Hallo, vielen Dank für die Antwort.

Also ich habe Daten die eben oft "elliptisch verteilt" sind.
Die Parameter einer Ellipse (Winkel der Verdrehung zur x-Ache, Länge der Halbachsen etc.) wären da sehr hilfreich.

Kann man hier irgendwo ein Bild hochladen?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Ellipsen Fit 
Autor: Manfred X
Datum: 31.08.21 15:30

Hallo!

Ich benötige kein Bild, sondern weiss, worauf Du Dich beziehst.
Bei einer Null-Korrelation entsteht ein Kreis, bei einer 1-Korrelation eine Gerade.
Bei allen Korrelationen dazwischen liegen die Punkte in einer umhüllenden Ellipse
(falls das lineare Modell geeignet ist, um den Zusammenhang zu beschreiben).

Die Frage ist aber, was Du mit einer solchen Graphik zum Ausdruck bringen willst?
Eigentlich sagt der Korrelationskoeffizient schon alles aus.

- Geht es um ein mathematisch definiertes Modell?
- Soll graphisch inspiziert werden, ob das lineare Modell angemessen ist?
- Was ist mit Ausreisser-Werten, die ein lineares Modell (Abweichungsquadrate!)
untauglich machen können (riesige Ellipse wegen weniger Punkte)?

Der einfachste Weg wäre, abhängig von der Höhe des Korrelationskoeffizienten
zwei Punkte auf der Anpassungsgerade zu wählen.
Bei 0-Korelation den Geradenpunkt, der durch die Mittelwerte beider Variablen
gegeben ist.
Bei 1-Korrelation die Anfangs- und Endpunke (kleinster/grösster X-Wert).
Bei den Korrelationen (Determinationskoeffizient!), deren Ausprägungen dazwischen
liegen, benutzt man zwei Zwischenpunkte auf der Geraden für die Lage und
die Distanz dieser Punkte zu den Endpunkten für die "Dicke" der Ellipse.

Ohne genauere Angaben zum Zweck ist es aber schwierig, eine geeignete Lösung
vorzuschlagen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Ellipsen Fit 
Autor: alexg
Datum: 02.09.21 15:35

Hallo,

okay dann muss ich ein klein wenig ausholen.

Die Physik hinter meinem Problem ist eine röntgenografische Spannungsmessung.
Dabei nimmt man Beugungspeaks unter mehreren Kippwinkeln über einer ebenen Probe (kristallin) auf.
Wenn in der Probe Eigenspannungen vorliegen, verschiebt sich die Lage der Beugungsreflexe etwas im Vergleich zur Spannungsfreien Probe (meine y-Werte).

Diese Werte werden über dem Kippwinkel aufgetragen bzw. über deren sin^2 (z.B. -45 bis +45° entspricht sin^2 Werten von 0 bis 0,5) (Meine x-Werte).

d.H. Es gibt jeweils zwei y-Werte für einen x-Wert (einen für den negativen und einen für den positiven Kippwinkel).

Wenn jetzt die Probe nur in Richtung der Kippung eine Spannung aufweist, liegen die Werte für positive und negative Kippwinkel sehr gut auf einer Geraden. Aus der Steigung dieser Geraden lässt sich dann über elastische Materialkostanten die Spannung errechnen.

Wenn in der Spannungszustand aber eine Schubspannungskomponente hat, gibt es eine "Aufspaltung" zwischen beiden Kipprichtungen und die Punkte liegen nicht mehr auf einer Geraden sondern verschieben sich.

Ich nehme an, dass die elliptische Form dieser "Aufspaltung" bei solchen Spannungszusammenhängen geometrisch begründet werden können. So tief stecke ich da aber nicht drin.

So wie ich das verstanden habe, kann man hier die Spannung in Kipprichtung nach wie vor über die Steigung der großen Halbachse der Ellipse bestimmen und zusätzlich den Schubspannungsanteil über die Länge der kleinen Halbachse.

Deine Beschreibung des Vorgehens klingt für mich plausibel. Wie gehe ich allerdings vor, wenn die Punkte so verteilt sind, dass sie besser auf einer Ellipse liegen, deren Anfangs- und Endpunkt weit außerhalb des kleinsten und größten x-Wertes lägen?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel