Wahrscheinlichkeit und Regression
Home Buch beim Verlag Anwendungs-
boxen
Folien zum Buch Über den Autor R-Skripte Impressum / Kontakt
Besucher seit 02.04.2014:
ganze Website: 1493
diese Seite: 544

R-Skripte

Auf dieser Seite finden Sie R-Skripte zum Buch "Wahrscheinlichkeit und Regression", die die Inhalte verdeutlichen.

Übersicht

Über R

Skripte

Was ist R?

  • R ist eine Sprache und Umgebung für statistische Datenbearbeitung und grafische Darstellungen. Der Quelltext wird unter der der GNU General Public License der Free Software Foundation veröffentlicht.
  • R läuft auf diversen UNIX-Plattformen (darunter auch FreeBSD und Linux), sowie auf Windows und Macintosh. Für viele Betriebssysteme gibt es bereits vorkompilierte Versionen.
  • Die Sprache kann leicht durch neue Funktionen erweitert werden.
  • Eine große Anzahl von Zusatzpaketen ergänzen die Funktionalität auf Spezialbereiche der Statistik und die Verknüpfung mit anderen Sprachen (z. B. GRASS, Perl, Python).
  • R kann sowohl interaktiv, also im Einzehlbefehlsmodus, aber auch als Skriptsprache verwendet werden.

Wo bekomme ich R?

Download unter http://www.r-project.org.

Wo bekomme ich mehr Informationen zu R?

Projekt-Seite: http://www.r-project.org (Dort kann man sich englischsprachige Dokumentationen herunterladen.
Deutschsprachiges Wikibook: http://de.wikibooks.org/wiki/GNU_R
Zudem sind mit Suchmaschinen viele Einführungen im WWW zu finden.

Allgemein: R data frame in SPSS importieren

## dataframe2spss
## Sven Hartenstein, 2005

## This script reads a R data.frame from a file and produces a SPSS
## syntax file that imports the data (and variable names) into SPSS.

## Caution: No definition of variable type, number of decimals or so
## are made! You may want to set this by hand either in the produced
## syntax file or after importing the data into SPSS.

## ==============================
##  CONFIGURATION
## ==============================

## To load data frame from file: (otherwise just assign an existing
## data frame the name dataframe)
dataframe <- read.table("daten.dat")

## filename of SPSS syntax file to be created
outfile <- "daten.sps"

## ==============================
##  END OF CONFIGURATION
## ==============================

cat(paste("data list free / ",paste(variable.names(dataframe), collapse=" "),"."), file=outfile, sep="\n", append=FALSE)
cat("begin data", file=outfile, sep="\n", append=TRUE)
for (i in 1:length(dataframe[,1])) {
  cat(gsub("\\.", ",", paste(as.matrix(dataframe[i,]), collapse=" ")), file=outfile, sep="\n", append=TRUE)
}
cat("end data.", file=outfile, sep="\n", append=TRUE)

Kapitel 10: Daten einer Regression mit zwei dichotomen Regressoren erzeugen

## Skript zu Kapitel 10: zwei dichotome Regressoren
##
## Dieses Skript erzeugt einen Datensatz mit einem normalverteilten,
## numerischen Regressanden Y und zwei dichotomen Regressoren X und Z
## (Kodierung: 0 versus 1).
##
## Frei konfigurierbar sind:
##  - die Anzahl der Fälle für jede der 4 "Zellen"
##  - die bedingten Erwartungswerte E(Y | X = x, Z = z) für jede der 4
##    "Zellen"
##  - die Standardabweichungen von Y für jede der 4 "Zellen"

## ==============================
##  KONFIGURATION
## ==============================

## Die Anzahl der Fälle

n.x0z0 <- 250 # Anzahl der Fälle für X = 0, Z = 0
n.x0z1 <- 250 # Anzahl der Fälle für X = 0, Z = 1
n.x1z0 <- 250 # Anzahl der Fälle für X = 1, Z = 0
n.x1z1 <- 250 # Anzahl der Fälle für X = 1, Z = 1

## Erwartungswerte

e.y.x0z0 <- 55 # E(Y | X = 0, Z = 0)
e.y.x0z1 <- 70 # E(Y | X = 0, Z = 1)
e.y.x1z0 <- 60 # E(Y | X = 1, Z = 0)
e.y.x1z1 <- 90 # E(Y | X = 1, Z = 1)

## Standardabweichungen

sd.y.x0z0 <- 6 # Std() für X = 0, Z = 0
sd.y.x0z1 <- 5 # Std() für X = 0, Z = 1
sd.y.x1z0 <- 5 # Std() für X = 1, Z = 0
sd.y.x1z1 <- 4 # Std() für X = 1, Z = 1

## Dateiname

filename <- "reg-daten.dat"

## ==============================
##  ENDE DER KONFIGURATION
## ==============================

## Die Variable X: dichotom
x <- c(rep(0, times=n.x0z0),
       rep(0, times=n.x0z1),
       rep(1, times=n.x1z0),
       rep(1, times=n.x1z1))

## Die Variable Z: dichotom
z <- c(rep(0, times=n.x0z0),
       rep(1, times=n.x0z1),
       rep(0, times=n.x1z0),
       rep(1, times=n.x1z1))

## Die Variable Y: normalverteilt
y <- c(rnorm(n.x0z0, e.y.x0z0, sd.y.x0z0),
       rnorm(n.x0z1, e.y.x0z1, sd.y.x0z1),
       rnorm(n.x1z0, e.y.x1z0, sd.y.x1z0),
       rnorm(n.x1z1, e.y.x1z1, sd.y.x1z1))

## Ergebnisse speichern
daten <- data.frame(x, z, y)
write.table(daten, file=paste(filename, sep=""), append=FALSE)

Kapitel 15: Daten zum Simpson-Paradoxon erzeugen

## Skript zu Kapitel 15: Simpson-Paradoxon
##
## Beispiel aus Kapitel 15: Männer vs. Frauen, Behandlung vs. keine
## Behandlung, Erfolg vs. kein Erfolg.

## ==============================
##  KONFIGURATION
## ==============================

## Alle Zahlen entnommen aus Tabelle 2, Seite 243.
## Sie können natürlich verändert werden.

## Anzahl der Frauen und Männer

n.w0 <- 1000             # Anzahl der Frauen (W = 0)
n.w1 <- 1000             # Anzahl der Männer (W = 1)

## Wahrscheinlichkeit, dass Person Behandlung bekommt

p.x.w0 <- 250/1000       # P(X = 1 | W = 0)
p.x.w1 <- 750/1000       # P(X = 1 | W = 1)

## Wahrscheinlichkeit, dass Erfolg

p.y.x0w0 <- .7           # P(Y = 1 | X = 0, W = 0)
p.y.x0w1 <- .3           # P(Y = 1 | X = 0, W = 1)
p.y.x1w0 <- .8           # P(Y = 1 | X = 1, W = 0)
p.y.x1w1 <- .4           # P(Y = 1 | X = 1, W = 1)

## Dateiname

filename.dat <- "simpson_daten.dat"     # Daten speichern
filename.out <- "simpson_output.txt"    # Einfache Auswertung als Text speichern

## ==============================
##  ENDE DER KONFIGURATION
## ==============================

## Geschlecht: Mann (W = 1) oder Frau (W = 0)
w <- c(rep(0, times=n.w0),
       rep(1, times=n.w1))

## Behandlung: ja (X = 1) oder nein (X = 0)
x <- c(sample(0:1, n.w0, replace=TRUE, prob=c(1-p.x.w0,p.x.w0)),
       sample(0:1, n.w1, replace=TRUE, prob=c(1-p.x.w1,p.x.w1,)))

## Erfolg: ja (Y = 1) oder nein (Y = 0)
y <- NULL
y[x == 0 & w == 0] <- sample(0:1, length(x[x == 0 & w == 0]), replace=TRUE, prob=c(1-p.y.x0w0, p.y.x0w0))
y[x == 0 & w == 1] <- sample(0:1, length(x[x == 0 & w == 1]), replace=TRUE, prob=c(1-p.y.x0w1, p.y.x0w1))
y[x == 1 & w == 0] <- sample(0:1, length(x[x == 1 & w == 0]), replace=TRUE, prob=c(1-p.y.x1w0, p.y.x1w0))
y[x == 1 & w == 1] <- sample(0:1, length(x[x == 1 & w == 1]), replace=TRUE, prob=c(1-p.y.x1w1, p.y.x1w1))

## Ergebnisse speichern
daten <- data.frame(x, w, y)
write.table(daten, file=paste(filename.dat, sep=""), append=FALSE)

## Ausgabe der Häufigkeiten:
cat("Evaluation einer Behandlung (vgl. Buch, S. 242, Tabelle 1):\n", file=filename.out, append=FALSE, sep="\n")
cat("Behandlung ja (X = 1):", file=filename.out, append=TRUE, sep="\n")
cat(paste("   Erfolg ja (Y = 1):   ", length(y[y == 1 & x == 1])), file=filename.out, append=TRUE, sep="\n")
cat(paste("   Erfolg nein (Y = 0): ", length(y[y == 0 & x == 1])), file=filename.out, append=TRUE, sep="\n")
cat("Behandlung nein (X = 0):", file=filename.out, append=TRUE, sep="\n")
cat(paste("   Erfolg ja (Y = 1):   ", length(y[y == 1 & x == 0])), file=filename.out, append=TRUE, sep="\n")
cat(paste("   Erfolg nein (Y = 0): ", length(y[y == 0 & x == 0])), file=filename.out, append=TRUE, sep="\n")
cat("\n\nEvaluation einer Behandlung getrennt nach Geschlecht (vgl. Buch, S. 243, Tabelle 2):\n", file=filename.out, append=TRUE, sep="\n")
cat("Maenner (W = 1):", file=filename.out, append=TRUE, sep="\n")
cat("  Behandlung ja (X = 1):", file=filename.out, append=TRUE, sep="\n")
cat(paste("     Erfolg ja (Y = 1):   ", length(y[y == 1 & x == 1 & w == 1])), file=filename.out, append=TRUE, sep="\n")
cat(paste("     Erfolg nein (Y = 0): ", length(y[y == 0 & x == 1 & w == 1])), file=filename.out, append=TRUE, sep="\n")
cat("  Behandlung nein (X = 0):", file=filename.out, append=TRUE, sep="\n")
cat(paste("     Erfolg ja (Y = 1):   ", length(y[y == 1 & x == 0 & w == 1])), file=filename.out, append=TRUE, sep="\n")
cat(paste("     Erfolg nein (Y = 0): ", length(y[y == 0 & x == 0 & w == 1])), file=filename.out, append=TRUE, sep="\n")
cat("Frauen (W = 0):", file=filename.out, append=TRUE, sep="\n")
cat("  Behandlung ja (X = 1):", file=filename.out, append=TRUE, sep="\n")
cat(paste("     Erfolg ja (Y = 1):   ", length(y[y == 1 & x == 1 & w == 0])), file=filename.out, append=TRUE, sep="\n")
cat(paste("     Erfolg nein (Y = 0): ", length(y[y == 0 & x == 1 & w == 0])), file=filename.out, append=TRUE, sep="\n")
cat("  Behandlung nein (X = 0):", file=filename.out, append=TRUE, sep="\n")
cat(paste("     Erfolg ja (Y = 1):   ", length(y[y == 1 & x == 0 & w == 0])), file=filename.out, append=TRUE, sep="\n")
cat(paste("     Erfolg nein (Y = 0): ", length(y[y == 0 & x == 0 & w == 0])), file=filename.out, append=TRUE, sep="\n")