Variable zentrieren
-
- Beiträge: 9
- Registriert: Mi Dez 18, 2019 10:31 pm
Variable zentrieren
Hallo an alle
Ich würde gerne eine Variable in Abhängigkeit einer anderen Variable zentrieren.
Ich benutze einen Paneldatensatz und somit gibt es für eine Person mehrere Personenjahre (möglich sind maximal t=2008 - t= 2015), also 8 Wellen oder halt Personenjahre. Die Personenjahre werden unter der Variable "wave" gelistet.
Ich würde nun gerne diese Variable um das Jahr zentrieren, in welchem die Ausprägung einer anderen 0-1-dummy kodierten Variable "Arbeitslosigkeit" von 0=arbeitstätig auf 1=arbeitslos wechselt. Das heißt, für jede der N=508 Personen in meinem Datensatz, müsste sich dann ein entsprechender zentrierter Wert für die Variable "wave" ermitteln lassen. Also genau für das Jahr, indem die Person auf der anderen Variablen "Arbeitslosigkeit" zum ersten mal die Ausprägung 1 =arbeitslos angegeben hat.
Hat da jemand eine Idee wie man das machen kann?
Ps. In meinem Datensatz sind alle Personen drin, die zunächst berufstätig waren und dann im Laufe der 8 Erhebungswellen mindestens ein mal arbeitslos wurden.
Beste Grüße
Ich würde gerne eine Variable in Abhängigkeit einer anderen Variable zentrieren.
Ich benutze einen Paneldatensatz und somit gibt es für eine Person mehrere Personenjahre (möglich sind maximal t=2008 - t= 2015), also 8 Wellen oder halt Personenjahre. Die Personenjahre werden unter der Variable "wave" gelistet.
Ich würde nun gerne diese Variable um das Jahr zentrieren, in welchem die Ausprägung einer anderen 0-1-dummy kodierten Variable "Arbeitslosigkeit" von 0=arbeitstätig auf 1=arbeitslos wechselt. Das heißt, für jede der N=508 Personen in meinem Datensatz, müsste sich dann ein entsprechender zentrierter Wert für die Variable "wave" ermitteln lassen. Also genau für das Jahr, indem die Person auf der anderen Variablen "Arbeitslosigkeit" zum ersten mal die Ausprägung 1 =arbeitslos angegeben hat.
Hat da jemand eine Idee wie man das machen kann?
Ps. In meinem Datensatz sind alle Personen drin, die zunächst berufstätig waren und dann im Laufe der 8 Erhebungswellen mindestens ein mal arbeitslos wurden.
Beste Grüße
Sauron
Re: Variable zentrieren
Hallo Sören,
kannst Du bitte ein kleines Rechenbeispiel (Ausgangsdaten) angeben mit dem gewünschten Ergebnis?
Gruß, Jörg
kannst Du bitte ein kleines Rechenbeispiel (Ausgangsdaten) angeben mit dem gewünschten Ergebnis?
Gruß, Jörg
-
- Beiträge: 9
- Registriert: Mi Dez 18, 2019 10:31 pm
Re: Variable zentrieren
Ich kann es anhand des folgenden Beispielsdatensatzes versuchen (Sind also fiktive Daten)
Zunächst zur Kodierung: I = Personen-ID, W=Erhebungswelle, B=Beschäftigungsstatus (0=beschäftigt, 1=arbeitslos), L=Lebenszufriedenheit (0-10).
(Es sind in meinem Datensatz zwar 8 Wellen von 2008-2015. Zur besseren Übersicht belasse ich es aber bei 5.
Das wäre nun ein Datensatz mit nahezu idealen Werten. Das Ereignis Arbeitslosigkeit tritt ein und die LZ sinkt, geht aber wieder nach ein paar Jahren auf den alten Wert zurück. Empirisch zeigen bisherige studien zwar was anderes (Lucas et al. 2004), aber aus Darstellungsgründen ist das schon in Ordnung.
(Wobei -W1 1 Jahr vor dem Ereignis B=1 bedeutet, W0 für den Eintritt des Ereignisses B=1. W1 wäre dann 1 Jahr nach dem Ereignis... -W2 = 2 Jahre davor und W2 gleich zwei jahre danach usw.)
Gesetz dem Fall, ich hätte nun einen Datensatz wie den Obigen. Dann sollte es in etwa folgendermaßen aussehen:
ID 1: -W2 ist B=0 und L=7 // -W1 ist B=0 und L=7 // W0 ist B=1 und L=5 // W1 ist B=0 und L=6 // W2 ist B=0 und L=7.
ID 2: -W1 ist B=0 und L=9 // W0 ist B=1 und L=7 // W1 ist B=0 und L=8 // W2 ist B=0 und L=8 // W3 ist B=0 und L=9.
ID 3: -W3 ist B=0 und L=7 // -W2 ist B=0 und L=7 // -W1 ist B=0 und L=8 // W0 ist B=1 und L=5 // W1 ist B=0 und L=6 .... usw.
Also die Variable W ist zentriert in Abhängigkeit der Variable B=(Arbeitslos=1; beschäftigt=0) und zwar je nachdem, wann dieses Ereignis eintritt.
Somit sollte sich für jede Welle (-W3,-W2,-W1,W0, W1, W2,W3) ein Mittelwert für die Lebenszufriedenheit aller Personen berechnen lassen, die zu den entsprechenden Zeitpunkt gemeinsam haben (beispielsweise alle Personen die bei -W2 eine 0 haben), also wo die jewilige Person beberufstätig war, aber auch für den Zeitpunkt, wo die Person arbeitslos wurde usw.
In meinem Datensatz sind nur Personen drin, die mindestens 1 mal arbeitslos geworden sind und zum Zeitpunkt der ersten Erhebung, noch nicht arbeitslos waren. Damit kann dann auch ein Kausaleffekt bestimmt werden.
Ich hoffe, dass ist so halbwegs nachvollziehbar.
https://journals.sagepub.com/doi/full/1 ... 01501002.x <--- Hier ist noch ein Link einer Studie, wie es Lucas et al. gemacht haben. Abbildung 1. zeigt genau das, was ich auch darstellen will. (Predicted changes in life satisfaction before, during, and after unemployment. Satisfaction scores are centered. Year 0 is the year of unemployment.)
Zunächst zur Kodierung: I = Personen-ID, W=Erhebungswelle, B=Beschäftigungsstatus (0=beschäftigt, 1=arbeitslos), L=Lebenszufriedenheit (0-10).
(Es sind in meinem Datensatz zwar 8 Wellen von 2008-2015. Zur besseren Übersicht belasse ich es aber bei 5.
Code: Alles auswählen
D <- read.table(header=TRUE, text=
"I W B L
1 1 0 7
1 2 0 7
1 3 1 5
1 4 0 6
1 5 0 7
2 1 0 9
2 2 1 7
2 3 0 8
2 4 0 8
2 5 0 9
3 1 0 7
3 2 0 7
3 3 0 8
3 4 1 5
3 5 0 6")
(Wobei -W1 1 Jahr vor dem Ereignis B=1 bedeutet, W0 für den Eintritt des Ereignisses B=1. W1 wäre dann 1 Jahr nach dem Ereignis... -W2 = 2 Jahre davor und W2 gleich zwei jahre danach usw.)
Gesetz dem Fall, ich hätte nun einen Datensatz wie den Obigen. Dann sollte es in etwa folgendermaßen aussehen:
ID 1: -W2 ist B=0 und L=7 // -W1 ist B=0 und L=7 // W0 ist B=1 und L=5 // W1 ist B=0 und L=6 // W2 ist B=0 und L=7.
ID 2: -W1 ist B=0 und L=9 // W0 ist B=1 und L=7 // W1 ist B=0 und L=8 // W2 ist B=0 und L=8 // W3 ist B=0 und L=9.
ID 3: -W3 ist B=0 und L=7 // -W2 ist B=0 und L=7 // -W1 ist B=0 und L=8 // W0 ist B=1 und L=5 // W1 ist B=0 und L=6 .... usw.
Also die Variable W ist zentriert in Abhängigkeit der Variable B=(Arbeitslos=1; beschäftigt=0) und zwar je nachdem, wann dieses Ereignis eintritt.
Somit sollte sich für jede Welle (-W3,-W2,-W1,W0, W1, W2,W3) ein Mittelwert für die Lebenszufriedenheit aller Personen berechnen lassen, die zu den entsprechenden Zeitpunkt gemeinsam haben (beispielsweise alle Personen die bei -W2 eine 0 haben), also wo die jewilige Person beberufstätig war, aber auch für den Zeitpunkt, wo die Person arbeitslos wurde usw.
In meinem Datensatz sind nur Personen drin, die mindestens 1 mal arbeitslos geworden sind und zum Zeitpunkt der ersten Erhebung, noch nicht arbeitslos waren. Damit kann dann auch ein Kausaleffekt bestimmt werden.
Ich hoffe, dass ist so halbwegs nachvollziehbar.
https://journals.sagepub.com/doi/full/1 ... 01501002.x <--- Hier ist noch ein Link einer Studie, wie es Lucas et al. gemacht haben. Abbildung 1. zeigt genau das, was ich auch darstellen will. (Predicted changes in life satisfaction before, during, and after unemployment. Satisfaction scores are centered. Year 0 is the year of unemployment.)
Zuletzt geändert von jogo am Fr Dez 27, 2019 11:54 am, insgesamt 2-mal geändert.
Grund: Formatierung verbessert, siehe http://forum.r-statistik.de/viewtopic.php?f=20&t=29
Grund: Formatierung verbessert, siehe http://forum.r-statistik.de/viewtopic.php?f=20&t=29
Sauron
-
- Beiträge: 9
- Registriert: Mi Dez 18, 2019 10:31 pm
Re: Variable zentrieren
Zur Rechnung ... -W1 würde für die Lebenszufriedenheit einen Mittelwert von ( 7+9+8 ) /3= 8 ergeben. Der Mittelwert entspricht somit allen Werten für die Lebenszufriedenheit jeder Person, ein Jahr vor dem Ereignis Arbeitslosigkeit, summiert und durch die Anzahl an Personen geteilt, die dort einen Wert angegeben haben. Bei B=1 ergäbe sich dann ein MW von (5+7+5)/3=5,66.
Zuletzt geändert von jogo am Fr Dez 27, 2019 11:50 am, insgesamt 1-mal geändert.
Grund: ich habe die notwendigen Klammern ergänzt
Grund: ich habe die notwendigen Klammern ergänzt
Sauron
Re: Variable zentrieren
Hallo Sören,
hier ist schonmal die Umrechnung der Waves auf den Zeitpunkt der Arbeitslosigkeit:
Wichtig dabei: der Dataframe ist nach $I sortiert (die Beobachtungen zu jedem Wert I sind ohne Lücke beisammen).
Gruß, Jörg
hier ist schonmal die Umrechnung der Waves auf den Zeitpunkt der Arbeitslosigkeit:
Code: Alles auswählen
D <- read.table(header=TRUE, text=
"I W B L
1 1 0 7
1 2 0 7
1 3 1 5
1 4 0 6
1 5 0 7
2 1 0 9
2 2 1 7
2 3 0 8
2 4 0 8
2 5 0 9
3 1 0 7
3 2 0 7
3 3 0 8
3 4 1 5
3 5 0 6")
D$WB <- unlist(by(D, D$I, FUN=function(d) d$W-which(d$B==1)))
D
Gruß, Jörg
Re: Variable zentrieren
Leider kann ich die Abbildung nicht sehen, weil ich nicht den gesamten Artikel sehen kann. (Vielleicht wird das besser, wenn ich an meinem Computer am Arbeitsplatz sitze. ... ab 07.01.2020)Sören Nonnengart hat geschrieben: ↑Mo Dez 23, 2019 3:48 pm Ich hoffe, dass ist so halbwegs nachvollziehbar.
https://journals.sagepub.com/doi/full/1 ... 01501002.x <--- Hier ist noch ein Link einer Studie, wie es Lucas et al. gemacht haben. Abbildung 1. zeigt genau das, was ich auch darstellen will. (Predicted changes in life satisfaction before, during, and after unemployment. Satisfaction scores are centered. Year 0 is the year of unemployment.)
Vielleicht ist dies passend:
Code: Alles auswählen
D <- read.table(header=TRUE, text=
"I W B L
1 1 0 7
1 2 0 7
1 3 1 5
1 4 0 6
1 5 0 7
2 1 0 9
2 2 1 7
2 3 0 8
2 4 0 8
2 5 0 9
3 1 0 7
3 2 0 7
3 3 0 8
3 4 1 5
3 5 0 6")
modDF <- function(d) {
d$WB <- d$W-which(d$B==1)
d
}
Dneu <- do.call(rbind, by(D, D$I, FUN=modDF))
tapply(Dneu$L, Dneu$WB, FUN=mean)
Gruß, Jörg
-
- Beiträge: 9
- Registriert: Mi Dez 18, 2019 10:31 pm
Re: Variable zentrieren
Wow! ich weiß gar nicht wie sehr ich dir danken kann. Es hat alles wunderbar funktioniert. Ich habe nun nur noch ein Problem. Teilweise sind Personen 2 oder 3 Jahre Arbeitslos und im Datensatz wird dann folgendes angezeigt:
I W B WB
1 1 0 -2
1 2 0 -1
1 3 1 -1
1 4 1 1
Das heißt, ich müsste eventuell noch die Personen rausschmeißen, die länger als 1 Jahr arbeitslos waren, oder?
I W B WB
1 1 0 -2
1 2 0 -1
1 3 1 -1
1 4 1 1
Das heißt, ich müsste eventuell noch die Personen rausschmeißen, die länger als 1 Jahr arbeitslos waren, oder?
Sauron
Re: Variable zentrieren
(ich komme zwar auf ein anderes Ergebnis, aber das sei dahingestellt) Die entscheidende Frage ist, ob Du die Personen in diesem Fall löschen möchtest, oder ob Du z.B. den Zeitpunkt des Beginns der ersten Arbeitslosigkeit nehmen möchtest als t0.Sören Nonnengart hat geschrieben: ↑Mo Dez 30, 2019 2:49 pm Wow! ich weiß gar nicht wie sehr ich dir danken kann. Es hat alles wunderbar funktioniert. Ich habe nun nur noch ein Problem. Teilweise sind Personen 2 oder 3 Jahre Arbeitslos und im Datensatz wird dann folgendes angezeigt: ...
Das heißt, ich müsste eventuell noch die Personen rausschmeißen, die länger als 1 Jahr arbeitslos waren, oder?
Falls ja, könnte es so aussehen:
Code: Alles auswählen
D <- read.table(header=TRUE, text=
"I W B WB0
1 1 0 -2
1 2 0 -1
1 3 1 -1
1 4 1 1")
modDF <- function(d) {
d$WB <- d$W - min(which(d$B==1))
d
}
modDF(D)
-
- Beiträge: 9
- Registriert: Mi Dez 18, 2019 10:31 pm
Re: Variable zentrieren
Das liegt daran, weil ich deine Syntax auf meinen anderen Datensatz, mit dem ich gegenwärtig arbeite, anwende. Mit dem obigen Datensatz habe ich natürlich das gleiche Ergebnis.
Ich habe es nun mit "min(which(...." gemacht. Die Ergebnisse sind ziemlich ähnlich. Wie schmeiße ich denn diejenigen raus, die mehr als 1 jahr arbeitslos waren?
Liebe Grüße
Sören
Ich habe es nun mit "min(which(...." gemacht. Die Ergebnisse sind ziemlich ähnlich. Wie schmeiße ich denn diejenigen raus, die mehr als 1 jahr arbeitslos waren?
Liebe Grüße
Sören
Zuletzt geändert von Sören Nonnengart am Mo Dez 30, 2019 10:58 pm, insgesamt 1-mal geändert.
Sauron
Re: Variable zentrieren
... und hier ist noch eine Variante mit data.table:
Code: Alles auswählen
library("data.table")
D <- fread(
"I W B L
1 1 0 7
1 2 0 7
1 3 1 5
1 4 0 6
1 5 0 7
2 1 0 9
2 2 1 7
2 3 0 8
2 4 0 8
2 5 0 9
3 1 0 7
3 2 0 7
3 3 0 8
3 4 1 5
3 5 0 6")
modDF <- function(d) {
d$WB <- d$W - min(which(d$B==1))
d
}
D[, modDF(.SD), I][, .(L=mean(L)), WB]