Seite 1 von 1

eine Einteilung von Größen in 2 Gruppen

Verfasst: Di Jun 15, 2021 12:02 pm
von heythere
Hallo,

ich bin R-Neuling und möchte eine logistische Regression mit R machen. Vorher muss ich allerdings eine Spalte meines tabellarischen Datensatzes in 2 Gruppen einteilen. Ich finde dazu leider nichts, kann mir jemand helfen?



Danke im Voraus für Eure Hilfe!

LG

Re: eine Einteilung von Größen in 2 Gruppen

Verfasst: Di Jun 15, 2021 12:24 pm
von bigben
Hallo heythere,

hilft das so?

Code: Alles auswählen

logreg <- read.csv("http://forum.r-statistik.de/download/file.php?id=1491")
str(logreg) # erst prüfen, ob Daten richtig eingelesen wurden

plot(density(logreg$wage), main = "") # Daten immer erstmal plotten 
rug(logreg$wage)
abline(v = 250, lty = 3)

# Jetzt die vorgegebene Unterteilung:
logreg$wealthy <- ifelse(logreg$wage < 250, yes = FALSE, no = TRUE)

# und dann immer nachgucken, wie groß die Gruppen geworden sind:
table(logreg$wealthy)

# Ab jetzt kann man regredieren
regr <- glm(wealthy ~ education + age, data = logreg, family = binomial)
summary(regr)

# Und immer wieder plotten, ob das errechnete auch Sinn macht:
regr <- glm(wealthy ~ age, data = logreg, family = binomial)
summary(regr)

plot(jitter(logreg$age), logreg$wage, pch = 16, col = "#00005040")

predicted <- predict(regr, newdata = data.frame(age = 18:80),type = "response")*250 + 50
lines(x = 18:80, y = predicted, lwd = 3, col = "#FF0030A0")
axis(4, at = c(50, 175, 300), labels = c("0 %", "50 %", "100%"), col = "#FF0030")
LG,
Bernhard

Re: eine Einteilung von Größen in 2 Gruppen

Verfasst: Di Jun 15, 2021 1:13 pm
von heythere
Wow Bernhard!

Vielen Dank das hat sehr geholfen, vielen Dank für deine schnelle und ausführliche Hilfe.

LG

Re: eine Einteilung von Größen in 2 Gruppen

Verfasst: Mi Jun 16, 2021 4:13 pm
von heythere
Die logistische Regression hat super funktioniert. Jedoch klappt das grafische Darstellen als ggplot nicht...

die Altersgruppen habe ich folgendermaßen eingeteilt:

age.min=16
age.max=100
age.x <- seq(age.min, age.max, by=1)
age.modell <- data.frame(age=age.x)
head(age.modell)
tail(age.modell)
age.prognose <- predict(regr, age.modell, type = "response")

und das Gehalt:

pred.wage <- predict(regr, Wage, type = "response")

anschließend den ggplot:

ggplot(age.prognose, aes(x=age.prognose, y=pred.wage)) + geom_line()
###Fehler: `data` must be a data frame, or other object coercible by `fortify()`, not a numeric vector

Wie und welcher Datensatz ist denn noch kein Data.Frame?


Danke im Voraus für eure Hilfe!

Liebe Grüße
Heythere

Re: eine Einteilung von Größen in 2 Gruppen

Verfasst: Mi Jun 16, 2021 7:15 pm
von bigben
Hallo!

age.prognose entsteht hier als Vector und wird danach nicht mehr verändert.
heythere hat geschrieben: Mi Jun 16, 2021 4:13 pm

Code: Alles auswählen

age.prognose <- predict(regr, age.modell, type = "response")
Und das wir dann hier als data an ggplot() übergeben:

Code: Alles auswählen

ggplot(age.prognose, ...
Das ist aber falsch, da ggplot2 im Gegensatz zu base-Grafiken keine Vektoren annimmt, wenn sie nicht vorher in einen Dataframe eingepackt wurden.

LG,
Bernhard


PS: Guck mal hier, wie die das mit stat_smooth in ggplot2 machen: http://www.cookbook-r.com/Statistical_a ... egression/

Re: eine Einteilung von Größen in 2 Gruppen

Verfasst: Mi Jun 16, 2021 7:42 pm
von heythere
Danke für die Hilfe!

Das sollte es jetzt gewesen sein. :D