2012-06-18 19 views
8

Excel erstellt Streudiagramm für Paarwertpaare. Es bietet auch die Möglichkeit, eine Trendlinie und Formel für die Trendlinie zu erstellen. Es erzeugt auch Blasendiagramme, die ein mit jedem Wert bereitgestelltes Gewicht berücksichtigen. Das Gewicht hat jedoch keinen Einfluss auf die Trendlinie oder Formel. Hier ist ein Beispielsatz von Werten mit ihren Zuordnungen und Gewichten.Gewichtete Trendlinie

Value Map  Weight 
    0  1  10 
    1  2  10 
    2  5  10 
    3  5  20 
    4  6  20 
    5  1  1 

Mit Excel Trendlinie, die Zuordnung für Wert 5 hat zu viel Einfluss auf die Formel. Gibt es eine Möglichkeit, eine Formel zu erstellen, die die jeweiligen Gewichte widerspiegelt?

Als Hilfe habe ich einen gewichteten Durchschnitt für fünf aufeinander folgende Werte eingeführt. Aber ist das ein besserer Weg?

+1

Es gibt etwas [hier] (http://www.pcreview.co.uk/forums/weighted-trendline-t3837585.html), das aussieht, als könnte es für Sie arbeiten. –

+1

Addendum: Die Funktion, auf die ich in meinem vorherigen Kommentar hingewiesen habe, funktioniert, aber die Ausgänge sind vertauscht. Sie sind eigentlich {Schnittpunkt, Steigung}. –

+0

Danke Andy. Ich mag das vielleicht falsch verstehen, aber für das obige Beispiel gibt die Funktion zwei Werte zurück (Steigung 0,6659 und Schnittpunkt -0,35825). Bedeutet dies, dass die Gleichung y = 0,6659x - 0,35825 sein sollte? Wenn ja, dann sind die Ergebnisse aus. Ich muss etwas verpasst haben ... – Tams

Antwort

12

Mit Daten in A2: C7, basierend auf dem Standard gewichteten kleinsten Quadrate Formel, können Sie versuchen:

=LINEST(B2:B7*C2:C7^0.5,IF({1,0},1,A2:A7)*C2:C7^0.5,0) 

mit STRG + SHIFT + ENTER eingegeben in E2: F2 oder ein 2x1-Bereich. Dies gibt auch {1.1353, 1.4412} zurück.

Für Rsquared können Sie eingeben:

=INDEX(LINEST((B2:B7-SUM(B2:B7*C2:C7)/SUM(C2:C7))*C2:C7^0.5,IF({1,0},1,A2:A7)*C2:C7^0.5,0,1),3,1) 

Erklärung der Formel

Betrachten wir zunächst eine normale Regression von y auf X mit RGP. Wenn const = TRUE, ist die Regressormatrix die erweiterte Matrix, die aus einer Spalte von Einsen besteht, gefolgt von den Regressorsäulen, d. H. X '= (1, X). Wenn const = FALSE, ist die Regressor-Matrix einfach X, so dass die Regression mit einer Spalte von Einsen die gleichen Schätzungen liefert, wie wenn man ohne eine Spalte von Einsen läuft und const = TRUE setzt.

Betrachten Sie nun eine gewichtete Methode der kleinsten Quadrate. Die Regression ist jetzt Wy auf WX '= (W1, WX) wobei W die diagonale Matrix ist, die aus der Quadratwurzel der Gewichte besteht. Da es keine Spalte von Einsen gibt, müssen wir const = FALSE setzen und zwei Spalten in der Regressormatrix verwenden.

Rsquared Berechnung

Statistiken auf TRUE in der RGP-Ausgabe der ersten Formel Einstellung wir in den dritten und fünften Reihen erhalten:

SSres = 59.76 
SSreg(u) = 1461.24 
SSTot(u) = 1521 
Rsq(u) = 1 - 59.76/1521 = 0.9607 

Hinweis Diese Werte sind unzentrierte Versionen (u) seit const = FALSE (weitere Informationen finden Sie in der MS Hilfe zu RGP). Für die zentrierten Versionen (c) müssen wir den gewichteten Durchschnittswert wie folgt subtrahieren:

+0

@Tams können Sie das R2 mit Loris Ansatz zurückgeben, indem Sie die Statistikfunktion zurückgeben. Geben Sie formula '= INDEX (LINEST (B2: B7 * C2: C7^0.5, IF ({1,0}, 1, A2: A7) * C2: C7^0.5, WAHR, WAHR), 3,1) 'ein für einen berechneten Schnittpunkt ist dieser eine = INDEX (LINIE (B2: B7 * C2: C7^0,5, IF ({1,0}, 1, A2: A7) * C2: C7^0,5, FALSCH, WAHR), 3 , 1) 'für intercept auf 0 gesetzt (die lori_m oben verwendet, obwohl ich dies nur für bestimmte Fälle empfehlen würde, wo es gezwungen werden muss) – brettdj

+0

@bretttj etwas macht keinen Sinn. Die Formel von lori_m gibt eindeutig intercept = 0 zurück. –

+0

@andyholaday. stimme zu, es ist ein wenig verwirrend, ich habe weitere Erklärungen hinzugefügt, teilweise zu meinem Vorteil (!) @ Brettdj: Die Formel erfordert 'const = FALSE ', was bedeutet, dass der Rsq-Wert der unzensierte Wert ist. –

1

aktualisieren
auf die zusätzlichen Informationen aus, dass Sie Zehntausende von Zeilen haben, hier ist eine VBA UDF, die den Job (einschließlich der r2) tun

Gemäß dem Screenshot unten, damit er die liefert gleiche m, x und r2 Werte, die meine erweiterten Datensatz in meiner ursprünglichen Antwort tat

enter image description here

Public Function LinestWeighted(xRng As Range, yRng As Range, wRng As Range, bInt As Boolean, bStat As Boolean) As Variant 
    Dim x As Variant 
    Dim y As Variant 
    Dim W As Variant 
    Dim TotX As Variant 
    Dim TotY As Variant 
    Dim lngRow As Long 
    Dim strDelim As String 
    Dim strX As String 
    Dim strY As String 
    Dim NewSeries As Variant 

    x = Application.Transpose(xRng) 
    y = Application.Transpose(yRng) 
    W = Application.Transpose(wRng) 
    strDelim = "," 

    If (UBound(x, 1) = UBound(y, 1)) And (UBound(x, 1) = UBound(W, 1)) Then 
     For lngRow = 1 To UBound(W) 
      strX = strX & Application.WorksheetFunction.Rept(x(lngRow) & strDelim, W(lngRow)) 
      strY = strY & Application.WorksheetFunction.Rept(y(lngRow) & strDelim, W(lngRow)) 
     Next lngRow 
     TotX = Split(Left$(strX, Len(strX) - 1), strDelim) 
     TotY = Split(Left$(strY, Len(strY) - 1), strDelim) 
     ReDim NewSeries(1 To UBound(TotX) + 1, 1 To 2) 
     For lngRow = 0 To UBound(TotX) 
      NewSeries(lngRow + 1, 1) = CDbl(TotX(lngRow)) 
      NewSeries(lngRow + 1, 2) = CDbl(TotY(lngRow)) 
     Next 
     With Application 
      LinestWeighted = .WorksheetFunction.LinEst(.Index(.Transpose(NewSeries), 2), .Index(.Transpose(NewSeries), 1), bInt, bStat) 
     End With 
    Else 
     LinestWeighted = "input ranges must be equal in length" 
     Exit Function 
    End If 
End Function 

Erste Antwort

Sie Ihre Datenreihe durch Ihre Gewichtung erweitern out Faktoren

So anstatt versuchen, 6 Paare grafisch darzustellen, verwenden Sie das Verhältnis des höchsten zum niedrigsten Punkte wiederholen

dh graph

0  1  `10 times` 
1  2  `10 times`  
... 
5  1  `once`  

enter image description here

+0

Danke Jungs. Du kennst sicher deine Sachen! – Tams

+0

@Tams diese Frage sollte an lori_m – brettdj

+0

vergeben werden. Hier ist ein Link zu einer Seite, auf der der Autor versucht, eine Polynomgleichung zu erstellen. Ich habe es ausprobiert, aber es erzeugt einen Fehler. Vielleicht könnte es repariert und für Gewichte angepasst werden? http://www.tushar-mehta.com/publish_train/data_analysis/16.htm – Tams