Variable auf zwei Ausprägungen begrenzen

Alles zum Thema der beschreibenden Statistik

Moderator: jogo

Antworten
farngarten
Beiträge: 78
Registriert: Fr Dez 08, 2017 6:42 am

Variable auf zwei Ausprägungen begrenzen

Beitrag von farngarten »

Hallo ,
ich hab Geschlecht mit drei Ausprägungen erhoben. Die Variable ist faktorisiert.
k$v_1 <- factor (k$v_1, levels <- c(1,2,3), labels <- c("männlich", "weiblich", "anderes"))

Wie kann ich einen Subdatensatz machen, der nur männlich (1) und weiblich (2) enthält?
k_test <- subset(k, v_1 == "weiblich", v_1 == "männlich") funktioniert nicht.

Interessieren würde mich auch: wie kann ich die Sache alternativ schreiben , dass er nur jene Probanden berücksichtigt, die v_1 nicht mit 3 (anderes) beantwortet haben?

Die Effektstärke zu berechnen erfordert nur zwei Ausprägungen. Gäbe es auch einen direkten Weg ohne Subdatensätze zu bilden?
cohen.d(k$A_ztr ~ k$v_1, paired = FALSE, na.rm = TRUE) die Bedingung nur männlich und weiblich direkt in die cohen.d Funktion zu schreiben? Für meine blutigen Anfänger-Finger wahrscheinlich zu kompliziert.....

ich danek Euch. und wüsnche ein schönes Wochenende. Martin
Benutzeravatar
databraineo
Beiträge: 10
Registriert: Mo Apr 02, 2018 8:20 am

Re: Variable auf zwei Ausprägungen begrenzen

Beitrag von databraineo »

Hallo Martin,

Du musst die beiden Bedingungen mit einem logischen oder verknüpfen. Das geht in R mit dem senkrechten Strich |, also

Code: Alles auswählen

k_test <- subset(k, v_1 == "weiblich" | v_1 == "männlich")
Alternativ geht es auch mit der Negation

Code: Alles auswählen

k_test <- subset(k, v_1 != "anderes")
Bei der Funktion cohen.d kannst Du den Datensatz als Parameter data übergeben (Hilfe zur Funktion übrigens mit ?cohen.d). Dort kannst Du auch direkt das subset bilden. Man muss aber immer ein bisschen schauen, dass man nicht zu viel auf einmal macht, damit der Code lesbar bleibt.
Entweder wie oben:

Code: Alles auswählen

cohen.d(k$A_ztr ~ k$v_1, data = subset(k, v_1 != "anderes"), paired = FALSE, na.rm = TRUE))
oder alternativ

Code: Alles auswählen

cohen.d(k$A_ztr ~ k$v_1, data = k[k$v_1!="anderes",], paired = FALSE, na.rm = TRUE))
Hoffe, das hilft Dir weiter.

Viele Grüße und ebenso ein schönes Wochenende,
Holger
Lasst uns helfen, dass Menschen mittels Datenanalyse intelligente Entscheidungen treffen

Website: Databraineo - Data Science Blog
Twitter: @databraineo
Facebook-Gruppe: Data Science Deutschland
farngarten
Beiträge: 78
Registriert: Fr Dez 08, 2017 6:42 am

Re: Variable auf zwei Ausprägungen begrenzen

Beitrag von farngarten »

HAllo Holger , danke Dir. ich werde das heut abend ausprobieren. Grüße Martin
farngarten
Beiträge: 78
Registriert: Fr Dez 08, 2017 6:42 am

Re: Variable auf zwei Ausprägungen begrenzen

Beitrag von farngarten »

Hallo Holger, die Reduzierung auf nur zwei Ausprägungen hat geklappt.
Bei Cohen d kommt eine Fehlermeldung. k_mw ist mein reduzierter Subdatensatz (in dem v_1 nur zwei Ausprägungen hat (männlich weiblich) und faktorisiert ist. k_mw$A_ztr ist Angst und metrisch.

cohen.d(k_mw$A_ztr ~ k_mw$v_1, paired = FALSE, na.rm = TRUE)
Error in cohen.d(k_mw$A_ztr ~ k_mw$v_1, paired = FALSE, na.rm = TRUE) :
unused arguments (paired = FALSE, na.rm = TRUE)

Wenn ich den vollen Datensatz mit Geschlecht v_1 drei Ausprägungen nehme:
cohen.d(k$A_ztr ~ k$v_1, data = subset(k, v_1 != "anderes"), paired = FALSE, na.rm = TRUE)
kommt diese Fehlermeldung.
unused arguments (data = subset(k, v_1 != "anderes"), paired = FALSE, na.rm = TRUE)

Was ich nicht verstehe, vor Jahren an einem Unikurs hatten wir dieses:
# CON: Zeige die standardisierte Effekstaerke fuer den Mittelwertsunterschied#
cohen.d(dat$iip_tot ~ dat$gender, paired = FALSE, na.rm = TRUE)
und es hat damals funktioniert. Ich habe jetzt den Datensatz von damals geladen und es probiert und es geht nicht mehr. Wie kann das sein? Werden Packages hin und wieder verändert? oder verhindern neue Packages, die ich damals nicht hatte, dass es funktioniert?
Grüße Martin
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: Variable auf zwei Ausprägungen begrenzen

Beitrag von bigben »

Hallo farngarten,
farngarten hat geschrieben: So Sep 29, 2019 7:43 pm Was ich nicht verstehe, vor Jahren an einem Unikurs hatten wir dieses:
# CON: Zeige die standardisierte Effekstaerke fuer den Mittelwertsunterschied#
cohen.d(dat$iip_tot ~ dat$gender, paired = FALSE, na.rm = TRUE)
und es hat damals funktioniert. Ich habe jetzt den Datensatz von damals geladen und es probiert und es geht nicht mehr. Wie kann das sein?
Könnte es sein, dass Ihr damals an der Uni regelhaft das Paket effsize verwendet habt? Also

Code: Alles auswählen

install.packages("effsize"); library(effsize)
Verschiedene Pakete führen verschiedene Funktionen mit dem Namen cohen.de ein. Das cohen.d aus effsize kann zum Beispiel das Formula-Interface (das mit dem `~`), das aus dem Paket psych kann das nicht. Gleiches gilt für ein paired-Argument. Dann gibt es noch ein cohen.d im Paket effsize und wenn man noch ein wenig sucht, findet man bestimmt noch weitere.

https://www.rdocumentation.org/packages/effsize/versions/0.7.6/topics/cohen.d
https://www.rdocumentation.org/packages/psych/versions/1.8.12/topics/cohen.d

Also: Welche Pakete hast Du geladen, wie sehen Deine Daten aus, mach bitte ein minimales, reproduzierbares, kompelles Beispiel!
https://stackoverflow.com/help/minimal-reproducible-example

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
farngarten
Beiträge: 78
Registriert: Fr Dez 08, 2017 6:42 am

Re: Variable auf zwei Ausprägungen begrenzen

Beitrag von farngarten »

Hallo Bernhard,
danke für Deine Antwort. Ja, genau. das haben wir an der Uni gehabt. In den letzten Tagen hat vieles funktioniert. zb. Interne Konsistenz für einen Haufen Skalen. Jetzt funktioniert vieles nicht mehr, obwohl der betreffende Code unverändert geblieben ist. Ich habe allerdings neue Packages hinzugeladen. Was Du schreibst ist eine Katastrophe.... jedes Package kocht sein eigene Suppe - wie soll man da als Anfänger vorankommen? Muss ich davon ausgehen , dass auch die Reihenfolge in der die Packages aufgelistet sind, Auswirkungen hat?

Anbei zwei reduzierte Mini Datensätze plus Code.
Effektstärke hat mal funktioniert jetzt Fehlermeldung. Cronbach alpha hat letzte WOche auch mal funktioniert. jetzt fehlermeldung. ....
Danke für Deine Hilfe. Martin

Ich sehe gerade, dass man gar keine R Dateien anhängen kann.

setwd("C:/users/user/Desktop/RDaten/")

library(effsize)
library(psych)
library(car)
library(foreign)
library(Hmisc)
library(lm.beta)
library(sjPlot)
library(sjmisc)
library(sjstats)
library(sjlabelled)
library(foreign)

library(mosaic)
library(psych)
library(lavaan)
library(semTools)
library(readr)
library(haven)
library(readxl)
library(rockchalk)
library(glmnet)
library(lme4)
library(lmtest)
library(lavaan)
library(pbkrtest)
library(MuMIn)
library(InformationValue)
library(BaylorEdPsych)
library(pROC)

library(dplyr)
library(gapminder)
library(plotly)
library(ggplot2)
library(broom)
library(scatterplot3d)




k <- read.table("K_demo2.csv", sep = ";", header = TRUE, na = -77)


# ENV: Definiere 'v_1' Geschlecht als kategorial und füge Labels hinzu
k$v_1 <- factor (k$v_1, levels <- c(1,2,3), labels <- c("männlich", "weiblich", "anderes"))


########### I T E M S Z U S A M E N F A S S E N ##############################


k$A <- rowMeans(k[,c("a_a", "a_b", "a_c", "a_d", "a_e", "a_f", "a_g")])

#### S T A N D A R D I S I E R E N zentrieren UND z-transformieren ##########################################
############################################################################

k$A_ztr <- as.numeric(scale(k$A, center = TRUE, scale = TRUE))

k_mw <- subset(k, v_1 == "weiblich" | v_1 == "männlich") #anderes GEschlecht ausschließen#


####### E F F E K T S T R Ä K E Z W I S C H E N G R U P P E N ##########

# Effekstärke für den Mittelwertsunterschied bei Angst zw GEschlechtern#

cohen.d(k_mw$A_ztr ~ k_mw$v_1, paired = FALSE, na.rm = TRUE, hedges = TRUE)

cohen.d(k$A_ztr ~ k$v_1, data = subset(k, v_1 != "anderes"), paired = FALSE, na.rm = TRUE)

cohen.d(k_mw$A_ztr, k_mw$v_1, paired = FALSE, na.rm = TRUE)
Dateianhänge
k_demo1.csv
(4.41 KiB) 69-mal heruntergeladen
k_demo2.csv
(5.86 KiB) 71-mal heruntergeladen
farngarten
Beiträge: 78
Registriert: Fr Dez 08, 2017 6:42 am

Re: Variable auf zwei Ausprägungen begrenzen

Beitrag von farngarten »

für die Datei demo1 hab ich dieses:

setwd("C:/users/user/Desktop/RDaten/")

library(effsize)
library(psych)
library(car)
library(foreign)
library(Hmisc)
library(lm.beta)
library(sjPlot)
library(sjmisc)
library(sjstats)
library(sjlabelled)
library(foreign)

library(mosaic)
library(psych)
library(lavaan)
library(semTools)
library(readr)
library(haven)
library(readxl)
library(rockchalk)
library(glmnet)
library(lme4)
library(lmtest)
library(lavaan)
library(pbkrtest)
library(MuMIn)
library(InformationValue)
library(BaylorEdPsych)
library(pROC)

library(dplyr)
library(gapminder)
library(plotly)
library(ggplot2)
library(broom)
library(scatterplot3d)


k <- read.table("k_demo1.csv", sep = ";", header = TRUE, na = -77)

###################################################################################
#### I N T E R N E K O N S I S T E N Z #######################################
###### B I G F I V E nach SKALEN '' #########

attach(k)
extra <- data.frame(e_a, e_b, e_c, e_d)
alpha(extra, check.keys = TRUE)
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: Variable auf zwei Ausprägungen begrenzen

Beitrag von bigben »

Um Gottes Willen. Niemals brauchst Du soviele "library"-Aufrufe. Da solltest Du mal ganz gründlich ausmisten und nur drin lassen, was Du brauchst. Und das wird weniger sein, als Du denkst. Eigentlich will ich Dir das hier gar nicht verraten. Erst nach diesem Ausmisten !!! kannst Du Funktionen auch unter Angabe des zugehörigen Pakets ansprechen, etwa

Code: Alles auswählen

psych::cohen.d(...)
effsize::cohen.d(...)
Vielleicht solltest Du Dir das auch generell angewöhnen, wenn Du weiter in Paketen schwelgen willst.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
farngarten
Beiträge: 78
Registriert: Fr Dez 08, 2017 6:42 am

Re: Variable auf zwei Ausprägungen begrenzen

Beitrag von farngarten »

Hallo Bernhartd ,
ich danke Dir! Eine grundsäztzliche Fehleinschätzung von mir. Ich dachte, es sei komfortabler, wenn ich alles im Kasten hab , was ich jemals brauchen könnte. Dahinter steht der Gedanke, dass ich gern draußen arbeite, ohne Internet.

Irgendwie blöd, dass bei einem Uni-Einiführungskurs, dieser Punkt mit keiner Silbe erwähnt wird.
Danke und Grüße Martin
Antworten