2017-03-29 2 views
0

Ich habe dieses Dataset, das ich logistische Regression gegen in R mache. Ich habe mehrere Fragen über die Ausgabe, die ein Ergebnis von meinem mangelnden Verständnis von Statistik und R und dann sein kann eine Frage über die Reduzierung des Modells auf p-Wert der aktuellen Ausgabe.refitting Glm-Modell in R basierend auf vorherigen Modell-Ausgabe

Der Befehl I gegeben ist:

model = glm(col1 ~ 1+(col2+col3+col4+col5+col6+col7)^2, family=binomial, data=ds) 
summary(model) 

Die Säulen

col1 has values of 0 and 1 
col2 is an integer 
col3 is an integer 
col4 is an integer 
col5 has values of horrible, bad, good, excellent 
col6 has values of a, b, c 
col7 has values of true and false 

Ein Segment des Koeffizienten und p-Wertausgabe

col1   0.2824 
col2   0.3457 
col3   0.7845 
col4   0.1451 
col5horrible  0.0541* 
col5bad   0.5641 
col5excellent  0.2354 
col6a   0.0025** 
col6b   0.6245 
col7TRUE  0.4145 
col1:col2  0.0124* 
col1:col3  0.8401 
col1:col4  0.3154 
col1:col5horrible 0.0054** 
col1:col5bad  0.2149 
col1:col5excellent 0.0035** 
col1:col6a  0.2487 
col1:col6b  0.0354* 
col1:col7TRUE  0.5647 

die erste die folgenden Daten enthalten, Was ich bemerkte, war, dass für col5, col6 und col7 die Ausgabe nicht nur der Spaltenname war wie für col1, col2, col3 und col4, aber war ColnameValue. Die zweite Sache, die mir auffiel, war, dass für die Spalten, in denen ein Wert an den Spaltennamen angehängt wurde, nicht alle möglichen Werte an den Spaltennamen angehängt wurden, sondern tatsächlich für col5, col6 und col7 jeweils ein Wert fehlte.

Fragen zum Verständnis

  1. was ~ 1 in der GLM-Funktion? Ich habe noch nie zuvor 1 benutzt, also bin ich mir nicht sicher, wie ich das lesen soll.
  2. Warum werden Spaltenwerte an die Spaltennamen in der Zusammenfassungsausgabe angehängt?
  3. Warum werden alle möglichen Werte für eine Spalte nicht an den Spaltennamen angehängt, an dem der Spaltenname einige der Werte angehängt hat?

-Code Frage

ich das Modell reduzieren will, um zu sehen, ob es besser geeignet sein kann. Der Vorschlag war, Prädiktoren aus dem aktuellen Modell zu entfernen, die über einem bestimmten p-Wert lagen. Hier ist, was ich bisher habe, aber ich bin mir nicht sicher, was ich als nächstes tun soll, sobald ich die Spaltennamen habe und wie man die Spalten mit ColnameValue in ein Modell bringt.

p=coef(summary(model))[,4] 
colnames=names(p[p<0.1]) 
colnames 

COLNAMES Ausgang

"col5horrible" 
"col6a" 
"col1:col5horrible" 
"col1:col5excellent" 
"col1:col6b" 

Was wäre mein nächster Schritt, oder gibt es einen besseren Weg, dies zu tun? Wie gehe ich mit der Tatsache um, dass der Wert an den Spaltennamen angehängt ist?

EDIT

Basierend auf der Antwort von schalange posted unten I Dummy-Variablen in R. Auf dieser post sah es für die Erstellung von Dummy-Variablen mehrere Methoden waren. Für nicht-numerische Spalten: col5, col6 und col7, die alle einen vordefinierten Satz von Werten haben, führte ich die Funktion createDummyFeatures und führte dann glm für die Spalten aus, die aus dem ursprünglichen Modell mit p-Wert < 0.1 kamen. Ist dies der richtige Ansatz, um das ursprüngliche Modell auf der Grundlage der p-Werte für die Koeffizienten zu reduzieren?

Antwort

0

Zunächst sollten Sie sich vor der Schätzung eines Modells mehr darüber im Klaren sein, was die Variablen wirklich bedeuten. R versucht, Koeffizienten für Ihre Variablen zu schätzen. Dies ist schwierig zu tun, wenn der "Wert" der Spalte "schrecklich" ist.Was also R tut (und was sinnvoll ist), es behandelt diese Spalten, 5, 6 und 7, als Faktoren/als Dummy-Variablen. (Vielleicht möchten Sie das googlen, finden Sie viele Informationen.) Die Grundidee ist, dass zum Beispiel True und False verschiedene Datengruppen sind. R schätzt für jede von Ihnen erwähnte Gruppe etwas, das einem Schnittpunkt entspricht. Dies ist jedoch nur für k-1 Kategorien jeder Spalte möglich, so haben Sie nur einen Wert für TRUE, aber nicht für FALSE (google dummy trap). Ich kann nicht absolut sicher sein, weil ich keine Einzelheiten über die Art der Gruppen habe, aber in allen seltenen Fällen kann man nicht SCHRECKLICH bleiben, ohne auch die anderen zwei, AUSGEZEICHNET und SCHLECHT zu behalten. Betrachten Sie sie als Gruppen oder Namen, nicht als Werte.

Eine letzte Sache: Wenn Sie ein Modell haben wollen, das besser angepasst ist (was bedeutet, dass es mehr Varianz erklären kann, dass das R^2 höher ist), ist das Reduzieren von Variablen nicht der richtige Weg Ihr Modell ist weniger präzise. Es kann jedoch immer noch eine Verbesserung sein, da die Dinge, die unterhalb einer bestimmten Schwelle liegen, wichtige Determinanten sind und Sie relativ sicher sein können, dass sie eine echte Wirkung haben. Das Internet bietet viele Dinge, die Ihnen helfen, p-Werte zu interpretieren.

+0

danke für einige zusätzliche Begriffe zu google, da ich nicht genug von den Fachbegriffen weiß und keine nützlichen Suchen bekam. Ich werde mir eine Dummy-Falle ansehen. Ich habe versucht, eine gute Ressource zu finden, die die logistische Regression und die Ausgabe in R für Laien erklären kann, also ist alles hilfreich. Bezogen auf den Datensatz sind die Werte HORRIBLE BAD GOOD und EXCELLENT Rankings eines Produktes, col6-Werte sind die Art eines Produktes. Das sind hilfreiche Informationen über die bessere Anpassung des Modells und mein Verständnis war aus. –

+0

Für die Zuweisung muss ich immer noch eine reduzierte Version zum Vergleich mit dem ursprünglichen tun und Vorschlag war es, Variablen basierend auf dem p-Wert des ursprünglichen Modells zu reduzieren. Ihre Erklärung def macht Sinn, dass R keine Ahnung hat, wie nicht-numerische Daten zu interpretieren sind. Irgendwelche Vorschläge, wie ich nur die Koeffizienten nutzen kann, die unter einem bestimmten p-Wert liegen? –

Verwandte Themen