Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen

Varianzanalyse, Diskriminanzanalyse, Kontingenzanalyse, Faktorenanalyse, Clusteranalyse, MDS, ....

Moderator: EDi

Antworten
RMaphia_97
Beiträge: 20
Registriert: Mo Jun 10, 2024 6:27 pm

Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen

Beitrag von RMaphia_97 »

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
bigben
Beiträge: 2882
Registriert: Mi Okt 12, 2016 9:09 am

Re: Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen

Beitrag von bigben »

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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
RMaphia_97
Beiträge: 20
Registriert: Mo Jun 10, 2024 6:27 pm

Re: Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen

Beitrag von RMaphia_97 »

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
bigben
Beiträge: 2882
Registriert: Mi Okt 12, 2016 9:09 am

Re: Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen

Beitrag von bigben »

Probier doch mal

Code: Alles auswählen

marginal_effects4 <-probit_model2$mfxest
first_column4<-marginal_effects4
print(first_column4)
und

Code: Alles auswählen

marginal_effects4 <-probit_model2$mfxest
first_column4<-marginal_effects4[, c(1,4), drop = FALSE]
print(first_column4)
und

Code: Alles auswählen

marginal_effects4 <-probit_model2$mfxest
first_column4<-marginal_effects4[, c(4), drop = FALSE]
print(first_column4)
Und dann poste die Ergebnisse und was am besten noch geändert werden muss.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
RMaphia_97
Beiträge: 20
Registriert: Mo Jun 10, 2024 6:27 pm

Re: Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen

Beitrag von RMaphia_97 »

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
Dateianhänge
Beispiel probitmfx.pdf
(42.02 KiB) 475-mal heruntergeladen
bigben
Beiträge: 2882
Registriert: Mi Okt 12, 2016 9:09 am

Re: Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen

Beitrag von bigben »

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

Code: Alles auswählen

marginal_effects4 <-probit_model2$mfxest
pwerte <- marginal_effects4[, c(4), drop = TRUE]
print(pwerte)
Und dann mach daraus selbst Sternchen, beispielsweise mit einem der Verfahren aus diesem Thread:
viewtopic.php?t=2162

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
bigben
Beiträge: 2882
Registriert: Mi Okt 12, 2016 9:09 am

Re: Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen

Beitrag von bigben »

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:

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))
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:

Code: Alles auswählen

print(to_stars(probit_model2$mfxest[, c(4), drop = TRUE]))
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
RMaphia_97
Beiträge: 20
Registriert: Mo Jun 10, 2024 6:27 pm

Re: Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen

Beitrag von RMaphia_97 »

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
bigben
Beiträge: 2882
Registriert: Mi Okt 12, 2016 9:09 am

Re: Logit nur das Signifikanzniveau in einer Tabelle anzeigen lassen

Beitrag von bigben »

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
Antworten