Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen
Moderator: EDi
-
- Beiträge: 20
- Registriert: Mo Jun 10, 2024 6:27 pm
Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen
Hallo Zusammen,
bitte um Hilfe: ich habe es geschafft, für Probit und Logit die erste Spalte der Ergebnistabelle (die geschätzten Koeffizienten) mit der Funktion $mfxest zu extrahieren, habe also noch diese eine Spalte. Ich habe das gemacht, um später die ersten Spalten verschiedene Regressionsanalyse nebeneinander stellen zu können.
Ich bekomme es nur leider nicht hin, die letzte Zeile, also die p-Werte mit den Sternchen für das Signifikanzniveau, zu extrahieren.
Hat jemand eine einfache Lösung?
Danke im Voraus und viele Grüße
Ma
bitte um Hilfe: ich habe es geschafft, für Probit und Logit die erste Spalte der Ergebnistabelle (die geschätzten Koeffizienten) mit der Funktion $mfxest zu extrahieren, habe also noch diese eine Spalte. Ich habe das gemacht, um später die ersten Spalten verschiedene Regressionsanalyse nebeneinander stellen zu können.
Ich bekomme es nur leider nicht hin, die letzte Zeile, also die p-Werte mit den Sternchen für das Signifikanzniveau, zu extrahieren.
Hat jemand eine einfache Lösung?
Danke im Voraus und viele Grüße
Ma
Re: Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen
Hallo,
in einem anderen Post hast Du geschrieben, dass Du logitmfx benutzt und wolltest etwas wie stargazer haben. Das sind jetzt auch wieder nicht so wahnsinnig häufige Pakete dass man einfach voraussetzen kann, dass im Forum jemand mit beidem vertraut ist. Posts, in denen man nicht mal den Funktionsnamen logitmfx findet um dann mittels Google das Paket mfx zu finden werden irgendwann schwer lesbar.
Also die Funktionsbeschreibung zu logitmxf schreibt, dass Du mit $mfxest eine Matrix bekommst, in der die Koeffizienten, deren Standardfehler, die Teststatistik und die p-Werte enhalten sind. Wenn Du diese Matrix nicht bekommst, sondern stattdessen eine Spalte, dann stimmt was nicht. Ohne genauere Problembeschreibung, vorzugsweise mit lauffähigem Beispiel und echtem R Code, hängt man beim Antworten in der Luft.
LG,
Bernhard
in einem anderen Post hast Du geschrieben, dass Du logitmfx benutzt und wolltest etwas wie stargazer haben. Das sind jetzt auch wieder nicht so wahnsinnig häufige Pakete dass man einfach voraussetzen kann, dass im Forum jemand mit beidem vertraut ist. Posts, in denen man nicht mal den Funktionsnamen logitmfx findet um dann mittels Google das Paket mfx zu finden werden irgendwann schwer lesbar.
Also die Funktionsbeschreibung zu logitmxf schreibt, dass Du mit $mfxest eine Matrix bekommst, in der die Koeffizienten, deren Standardfehler, die Teststatistik und die p-Werte enhalten sind. Wenn Du diese Matrix nicht bekommst, sondern stattdessen eine Spalte, dann stimmt was nicht. Ohne genauere Problembeschreibung, vorzugsweise mit lauffähigem Beispiel und echtem R Code, hängt man beim Antworten in der Luft.
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
-
- Beiträge: 20
- Registriert: Mo Jun 10, 2024 6:27 pm
Re: Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen
Hallo Bernhard,
danke für deine Antwort und deine Mühe. R ist für mich so neu, dass ich die Fragen wahrscheinlich etwas unverständlich formuliere.
Ich versuche es mal besser:
Richtig, bei logitmfx bekomme ich eine Tabelle mit vier Spalten als Ergebnis.
Mit folgender Formel habe ich es hinbekommen, nur die erste Spalte des Ergebnisses ausgedruckt zu bekommen:
marginal_effects4 <-probit_model2$mfxest
first_column4<-marginal_effects4[, 1, drop = FALSE]
colnames(first_column4)<-("dF/dx Probit Basis Durchschn. marg. Eff")
print(first_column4)
Ich brauche das, um später diese Spalte später in einer neuen Übersicht mit cbind neben die marginalen Effekte eines logit Modell zu stellen.
Jetzt mein Problem: mit der oben stehenden Formel habe ich die Tabelle mit vier Spalten gekürzt und bekomme nur die erste Spalte angezeigt. Jetzt möchte ich mit der Tabelle das Selbe machen, aber statt der ersten Spalte (die marginalen Effekte) nur die vierte Spalte mit den Sternchen (P-Werte, Signifikanzniveau) ausgedruckt bekommen.
Hört sich einfach an, aber ich schaffe es einfach nicht.
Danke für jegliche Hilfe und viele Grüße
Ma
danke für deine Antwort und deine Mühe. R ist für mich so neu, dass ich die Fragen wahrscheinlich etwas unverständlich formuliere.
Ich versuche es mal besser:
Richtig, bei logitmfx bekomme ich eine Tabelle mit vier Spalten als Ergebnis.
Mit folgender Formel habe ich es hinbekommen, nur die erste Spalte des Ergebnisses ausgedruckt zu bekommen:
marginal_effects4 <-probit_model2$mfxest
first_column4<-marginal_effects4[, 1, drop = FALSE]
colnames(first_column4)<-("dF/dx Probit Basis Durchschn. marg. Eff")
print(first_column4)
Ich brauche das, um später diese Spalte später in einer neuen Übersicht mit cbind neben die marginalen Effekte eines logit Modell zu stellen.
Jetzt mein Problem: mit der oben stehenden Formel habe ich die Tabelle mit vier Spalten gekürzt und bekomme nur die erste Spalte angezeigt. Jetzt möchte ich mit der Tabelle das Selbe machen, aber statt der ersten Spalte (die marginalen Effekte) nur die vierte Spalte mit den Sternchen (P-Werte, Signifikanzniveau) ausgedruckt bekommen.
Hört sich einfach an, aber ich schaffe es einfach nicht.
Danke für jegliche Hilfe und viele Grüße
Ma
Re: Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen
Probier doch mal
und
und
Und dann poste die Ergebnisse und was am besten noch geändert werden muss.
LG,
Bernhard
Code: Alles auswählen
marginal_effects4 <-probit_model2$mfxest
first_column4<-marginal_effects4
print(first_column4)
Code: Alles auswählen
marginal_effects4 <-probit_model2$mfxest
first_column4<-marginal_effects4[, c(1,4), drop = FALSE]
print(first_column4)
Code: Alles auswählen
marginal_effects4 <-probit_model2$mfxest
first_column4<-marginal_effects4[, c(4), drop = FALSE]
print(first_column4)
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
-
- Beiträge: 20
- Registriert: Mo Jun 10, 2024 6:27 pm
Re: Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen
Hallo Bernhard,
besten Dank.
Die Codes führen zu folgenden Ergebnissen:
1)
marginal_effects4 <-probit_model2$mfxest
first_column4<-marginal_effects4
print(first_column4)
--> führt zum selben Ergebnis wie das Probitmodell, schneidet aber die Zeilen unterhalb der Tabelle ab und zeigt nur die erste Spalte.
2)
marginal_effects4 <-probit_model2$mfxest
first_column4<-marginal_effects4[, c(1,4), drop = FALSE]
print(first_column4)
--> führt zum selben Ergebnis wie 1), zeigt aber die erste und vierte Spalte
3)
marginal_effects4 <-probit_model2$mfxest
first_column4<-marginal_effects4[, c(4), drop = FALSE]
print(first_column4)
--> führt zum selben Ergebnis wie 2), zeigt aber nur die vierte Spalte
Das ist alles sehr hilfreich, danke. Mein Problem fängt vorher an:
mit dem Befehl "probit_modell2$mfxest" nehme ich aus der Ergebnistabelle von probit die Sternchen heraus. Anbei ein pdf mit den Ergebnissen. Aber ich möchte nur die Bezeichnung der Variablen und die **** haben, also die ersten vier Spalten ausblenden.
Ein völlig anderer Befehl, oder? Ich habe schon versucht, den mixest Befehl am Anfang wegzulassen, aber dann geht nichts mehr.
Danke und viele Grüße
Ma
besten Dank.
Die Codes führen zu folgenden Ergebnissen:
1)
marginal_effects4 <-probit_model2$mfxest
first_column4<-marginal_effects4
print(first_column4)
--> führt zum selben Ergebnis wie das Probitmodell, schneidet aber die Zeilen unterhalb der Tabelle ab und zeigt nur die erste Spalte.
2)
marginal_effects4 <-probit_model2$mfxest
first_column4<-marginal_effects4[, c(1,4), drop = FALSE]
print(first_column4)
--> führt zum selben Ergebnis wie 1), zeigt aber die erste und vierte Spalte
3)
marginal_effects4 <-probit_model2$mfxest
first_column4<-marginal_effects4[, c(4), drop = FALSE]
print(first_column4)
--> führt zum selben Ergebnis wie 2), zeigt aber nur die vierte Spalte
Das ist alles sehr hilfreich, danke. Mein Problem fängt vorher an:
mit dem Befehl "probit_modell2$mfxest" nehme ich aus der Ergebnistabelle von probit die Sternchen heraus. Anbei ein pdf mit den Ergebnissen. Aber ich möchte nur die Bezeichnung der Variablen und die **** haben, also die ersten vier Spalten ausblenden.
Ein völlig anderer Befehl, oder? Ich habe schon versucht, den mixest Befehl am Anfang wegzulassen, aber dann geht nichts mehr.
Danke und viele Grüße
Ma
- Dateianhänge
-
- Beispiel probitmfx.pdf
- (42.02 KiB) 475-mal heruntergeladen
Re: Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen
Solche Sternchen sind ja nur eine Lesehilfe, damit man schnelle sieht, welche p-Werte kleiner als irgendwelche Grenzwerte sind. Die werden nicht in mfxest gespeichert .
Wenn das ein einmaliger Vorgang ist, dann schreib die Sternchen einfach händisch ab. Wenn Du das automatisieren musst, dann kopiere Dir (mutmaßlich aus Spalte 4?) die p-Werte
Und dann mach daraus selbst Sternchen, beispielsweise mit einem der Verfahren aus diesem Thread:
viewtopic.php?t=2162
LG,
Bernhard
Wenn das ein einmaliger Vorgang ist, dann schreib die Sternchen einfach händisch ab. Wenn Du das automatisieren musst, dann kopiere Dir (mutmaßlich aus Spalte 4?) die p-Werte
Code: Alles auswählen
marginal_effects4 <-probit_model2$mfxest
pwerte <- marginal_effects4[, c(4), drop = TRUE]
print(pwerte)
viewtopic.php?t=2162
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen
So, jetzt bin ich nicht mehr am Handy sondern wieder am Computer. Ich habe Dir eine kleine Funktion geschrieben, die aus einem Vektor von p-Werten einen Vektor mit Sternchen macht. Die Funktion kannst Du Dir so wie sie hier steht per Copy and Paste in Deine R-Sitzung kopieren:
Ich habe mir da jetzt nicht viele Gedanken drum gemacht, ob 0,050000 schon signifikant ist oder noch nicht, das ließe sich bei Bedarf noch ändern.
Theoretisch müsste sowas hier funktionieren:
LG,
Bernhard
Code: Alles auswählen
to_stars <- function(pvalues,
cuts = c(Inf, .1, .05, .01, .001, 0),
stars = c("", ".", "*", "**", "***")){
if(any(pvalues > 1)) stop("p > 1.0 is invalid.")
if(any(pvalues < 0)) stop("p < 0.0 is invalid.")
cut(pvalues, breaks = cuts, labels = rev(stars))
}
# Beispiel 1
to_stars(c(.002, .2, .05, .049, .01, .002, .000001))
# Beispiel 2
p_werte = c(.000001, .5, .049, .009)
data.frame(p = p_werte, sterne = to_stars(p_werte))
Theoretisch müsste sowas hier funktionieren:
Code: Alles auswählen
print(to_stars(probit_model2$mfxest[, c(4), drop = TRUE]))
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
-
- Beiträge: 20
- Registriert: Mo Jun 10, 2024 6:27 pm
Re: Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen
Lieber Bernhard,
Vielen Dank für deine ganze Mühe, das hilft mir sehr weiter. Ich war diese Woche R abstinent und habe es erst jetzt gesehen, aber direkt verarbeitet.
Danke!
Viele Grüße
Ma
Vielen Dank für deine ganze Mühe, das hilft mir sehr weiter. Ich war diese Woche R abstinent und habe es erst jetzt gesehen, aber direkt verarbeitet.
Danke!
Viele Grüße
Ma
Re: Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen
Nachtrag einen Monat später: eine Funktion wie to_stars kann man auch fertig importieren. Im Paket rstatix gibt es dafür die Funktion add_significance(). Anscheinend macht die das gleiche, falls sich jemand mit importierten Code wohler fühlen sollte https://rpkgs.datanovia.com/rstatix/ref ... cance.html
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte