eine Einteilung von Größen in 2 Gruppen

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
heythere
Beiträge: 4
Registriert: Mo Jun 14, 2021 7:10 pm

eine Einteilung von Größen in 2 Gruppen

Beitrag 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
Dateianhänge
Wage.txt
(387.48 KiB) 68-mal heruntergeladen
Zuletzt geändert von heythere am Fr Jun 18, 2021 8:32 pm, insgesamt 1-mal geändert.
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

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

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
heythere
Beiträge: 4
Registriert: Mo Jun 14, 2021 7:10 pm

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

Beitrag von heythere »

Wow Bernhard!

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

LG
heythere
Beiträge: 4
Registriert: Mo Jun 14, 2021 7:10 pm

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

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

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

Beitrag 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/
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
heythere
Beiträge: 4
Registriert: Mo Jun 14, 2021 7:10 pm

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

Beitrag von heythere »

Danke für die Hilfe!

Das sollte es jetzt gewesen sein. :D
Antworten