Seite 1 von 2

mulivariate Modellierung

Verfasst: Di Mär 20, 2018 2:21 pm
von knuffikatze
Hallo,

ich versuche gerade Werbeumsätze für Postleitzahlen vorherzusagen. Hierzu habe ich Werbeumsätze von beworbenen Gebieten betrachtet und dessen Abhängigkeiten von äußeren Einflussfaktoren durch einen Endscheidungsbaum bestimmt. Es ergibt sich, dass diese Umsätze von ca. 8 Variablen abhängt (z.B. der Fahrzeit zum Supermarkt). Jetzt habe ich eine multivatiate Regression

Code: Alles auswählen

reg <- nls(Umsatz~ a/Fahrzeit^2 + b*Fahrzeit + cc/Fahrzeit 
+r*Var_1^2 + s*Var_1+t*Var_2^2 + h*Var_2+...+ + c, data=Data,
                start=list( a=1, b=1,...))
an das Modell gefittet und durch die fitted() Funktion die Werbeumsätze geschätzt. Leider zeigen meine gemessenen Werte mit den dazu geschätzten Werte nur eine Korrelation von 50%. Auch wenn ich mir das bildlich anschaue, sieht dies ganz anders aus. Somit gehe ich davon aus, dass auch die Gebiete, die nicht beworben wurden und die ich eigentlich schätzen möchte, keine brauchbaren Schätzungen zeigen.

Meine nächste Idee war, mit Zufallsvariablen zu arbeiten, da diese Umsätze ja nicht jedes Mal gleich sein müssen und es ja eigentlich nur um Wahrscheinlichkeiten für hohe Werbeumsätze geht.

Lange Rede kurzer Sinn: Was denkt ihr, welche Modellierungsmethode in meinem Fall hilfreich sein könnte und welche Funktionen bzw. Pakete kann ich hierzu benutzen.

Leider kann ich keine Testdaten zur Verfügung stellen.

Vielen Dank für eure Hilfe.

Gruß
Eva

Re: mulivariate Modellierung

Verfasst: Di Mär 20, 2018 7:33 pm
von EDi
Wie bist du denn auf das Modell gekommen? Ich finde GAMs ganz gut (mgcv paket).

Re: mulivariate Modellierung

Verfasst: Mi Mär 21, 2018 12:39 pm
von bigben
Hallo,

mir ist auch das nls-Modell nicht klar: Wenn Du denkst, dass ein Regressionsbaum ein geeignetes Verfahren für die Variablenauswahl ist, warum verwendest Du dann nicht auch den Baum für die Regression? Oder gleich einen ganzen RandomForest, wenn die Vorhersagen kontinuierlicher sein sollen?
Leider zeigen meine gemessenen Werte mit den dazu geschätzten Werte nur eine Korrelation von 50%.
Zunächst einmal muss man sich fragen, wieviel Varianz durch die Vorhersagevariablen plausibel aufgeklärt werden kann. 100 % werden wohl unrealistisch sein. Ob 50 % schlecht oder gut sind, ist eine sachwissenschaftliche, nicht eine statistische Frage. Letztlich wirst Du verschiedene Vorhersagemethoden ausprobieren müssen. Wenn Du viele fehlende Werte hast, fällt ein lineares Modell aus. Wenn Du wenig Beobachtungen hast, fallen Neuronale Netze aus. Wenn Du inhaltlich begründete Annahmen hast, kannst Du Dir vielleicht ein Modell mithilfe von nls maßschneidern, so wie Prof. Gelman sich hier ein Model fürs Golfen maßschneidert (hier geht es nicht um nls, aber den Weg von der Fragestellung zum Statistikmodell ist bemerkenswert): https://youtu.be/T1gYvX5c2sM?t=2835

Es geht also primär nicht um Testdaten (die bräuchten wir, wenn es um R Code geht, aber soweit bist Du noch nicht), sondern um Hintergrundwissen zu Deiner Aufgabe.

LG,
Bernhard

Re: mulivariate Modellierung

Verfasst: Mi Mär 21, 2018 10:32 pm
von EDi
Wenn Du viele fehlende Werte hast, fällt ein lineares Modell aus
Was würdest Du denn hier nehmen? Hab hier ein Problem wo es vermutlich drauf hinausläuft (data cleaning noch nicht fertig), dass meine Prädikatoren viele Missings (vermutlich at random) haben....

Re: mulivariate Modellierung

Verfasst: Do Mär 22, 2018 1:47 pm
von bigben
Hallo EDi,

da fragt jetzt der Lehrer den Schüler und ich bin ziemlich sicher, dass ich Dir nichts beibringen kann. Egal. In meiner Welt sind Baumverfahren recht tolerant: Wenn es in einem RandomForest genug Bäume gibt, dann sind für viele Fälle X auch welche dabei, die für keine Entscheidung auf die in X fehlenden Daten zugreifen müssen.

Auch einfache Bäume können recht tolerant sein. tree::predict.tree kennt zum Beispiel das argument split:
governs the handling of missing values. If false, cases with missing values are
dropped down the tree until a leaf is reached or a node for which the attribute
is missing, and that node is used for prediction. If split = TRUE cases with
missing attributes are split into fractional cases and dropped down each side
of the split. The predicted values are averaged over the fractions to give the
prediction.


Das klingt doch schon ziemlich smart, zumindest auf der predict-Seite. Auf der fitting-Seite versucht such tree::tree Mühe zu geben mit dem ARgument na.action:
A function to filter missing data from the model frame. The default is na.pass
(to do nothing) as tree handles missing values (by dropping them down the tree
as far as possible).
Da gibt es aber in anderen Algorithmen noch mehr Möglichkeiten: https://stats.stackexchange.com/a/96458/117812

Ich weiß natürlich nicht, wie das in Deine sonstigen Forschungsziele passt, aber in dieser Richtung würde ich zuerst suchen.

LG,
Bernhard

Re: mulivariate Modellierung

Verfasst: Do Mär 22, 2018 7:37 pm
von EDi
Hmm, Wälder sind in viele Situationen gut. Dachte vielleicht gibt's noch was anderes was ich vll nicht aufm Schirm hab.

Danke für den Input. Ich werde eher Probleme auf der predict Seite haben.

Hab auch nicht ultra viele Daten und RF ist recht Datenhungrig... Ich schau mich mal Richtung Bayes um, hab da irgendwie das Gefühl das könnte auch was taugen...

Re: mulivariate Modellierung

Verfasst: Fr Mär 23, 2018 8:20 am
von bigben
Hallo EDi,

in meinem sehr begrenzten Erforschen der Bayes-Welt bin ich bisher eher auf Verfahren gestoßen, die ich auch außerhalb von Bayes kannte, nur dass die Parametrisierung anders läuft. Daher bitte unbedingt berichten. Wenn es um Vorhersage geht und die Fallzahlen nicht so üppig sind, hat man, glaube ich, oft Prior-Information, die man in der Bayes-Welt tatsächlich nutzen kann. Deshalb wird das wohl kein Fehler sein.

LG,
Bernhard

Re: mulivariate Modellierung

Verfasst: Di Mär 27, 2018 2:00 pm
von knuffikatze
Hallo,

erst mal vielen Dank für die Antworten. Ich habe das nls() Modell gewählt, da ich mit dem Baummodell (zumindest meines Wissenstandes) keine absoluten Umsatzzahlen fitten kann, sondern nur Wahrscheinlichkeiten einen Wert x zu überschreiten. Natürlich weiß ich nicht, ob die nls() Funktion mich hier wirklich weiterbringt.

Bayes habe ich bis jetzt nicht benutzt, da ich kein Vorwissen habe. Die Idee hatte ich aber auch schon. Gibt es den Gründe, warum es mit einer breiten Normalverteilung sinnvoller wäre hier Bayes zu verwenden?

Vielleicht beschreibe ich mein Problem noch mal etwas genauer:

Ich habe Werbeumsätze in PLZ Gebieten, die beworben worden sind. Nun hätte ich gerne ein Modell, was mir Werbeumsätze für jedes Gebiet vorhersagt, wenn dieses beworben würde. Hierdurch möchte ich feststellen, ob es vielleicht sinnvoller ist, andere Gebiete als bislang zu bewerben. Durch den Baum habe ich bemerkt, dass diese Werbeumsätze primär von der Fahrzeit zum Markt und von den Sinus-Mileus abhängt. Somit versuche ich den Werbeumsatz anhand von diesen Variablen zu bestimmen.

Ich werde mir das mgcv Packet mal anschauen und mich dann noch mal melden.

Wenn Ihr noch eine Idee habt, freue ich mich natürlich.

Danke.

Gruß
Eva

Re: mulivariate Modellierung

Verfasst: Di Mär 27, 2018 3:05 pm
von knuffikatze
Hallo,

ich habe nun die GAM Variante ausprobiert. Schon mal vielen Dank dafür.
Mit dem Befehl gam.check(reg.gam) komme ich zu der angefügten Abbildung. Hier zeigt sich wieder das gleiche Bild. Die geschätzten Werte passen nicht zu den eigentlichen Werten.
Habt ihr noch ne Idee, was man hier anpassen kann bzw. welche Methode hier besser passt.

Ich freue mich echt, dass ihr mir hier weiterhelft.

Gruß
Eva

Re: mulivariate Modellierung

Verfasst: Di Mär 27, 2018 4:21 pm
von Athomas
ich versuche gerade Werbeumsätze für Postleitzahlen vorherzusagen.
Ich würde ja gerne mitmachen, aber ich verstehe schon den Ausdruck "Werbeumsätze für Postleitzahlen" nicht.
Was ist das? Umsätze in PLZ-Gebieten nach speziellen Werbeaktionen minus normaler Umsatz dort - oder was?