## R-Programme zu statistischen Kennzahlen ## Holger Reulen, Margret Oelker und Helmut Küchenhoff ## WS 2015/16 Vorlesung 12.11. 2014 ################################################################################ # Streuungsmaße setwd("C:/D/Lehre/stat1_1516/R_Beispiele") library(foreign) data <- read.csv("Daten/stat1.csv", header=TRUE, sep=";", na.strings="NA", dec=".") # Range: max(data$dauer);min(data$dauer) max(data$dauer) - min(data$dauer) # Interquantilsabstand: IQR(data$dauer) ### quartile median min max fivenum(data$dauer) # Mittelwert MW <- mean(data$dauer) MW # Standardabweichung und Varianz: # Varianz per pedes squares <- (data$dauer - MW)^2 sum(squares)/(length(data$dauer)-1) # R-Funktion: varianz <- var(data$dauer) varianz # Standardabweichung: SD <- sqrt(varianz); sd(data$dauer) SD ### Streuungszerlegung load("Daten/Hunde.RData") ## Funktion vars mit Division durch n vars <- function(x){ return(var(x)*(length(x)-1)/length(x)) } boxplot(Hunde$protein~Hunde$diagnose) var(Hunde$protein) vars(Hunde$protein) ### einzelvarianzen v1<- vars(Hunde$protein[Hunde$diagnose==1]) v2<- vars(Hunde$protein[Hunde$diagnose==2]) v3<- vars(Hunde$protein[Hunde$diagnose==3]) v4<- vars(Hunde$protein[Hunde$diagnose==4]) v5<- vars(Hunde$protein[Hunde$diagnose==5]) c(v1,v2,v3,v4,v5) v<-c(v1,v2,v3,v4,v5) n<-as.numeric(table(Hunde$diagnose)) ### Varianz innerhalb der Gruppen: weighted.mean(v,n) ### gesmtvarianz vars(Hunde$protein) ### varianzantiel zwischen den Gruppen: vars(Hunde$protein)- weighted.mean(v,n) ### Zur Illustration: m1<- mean(Hunde$protein[Hunde$diagnose==1]) m2<- mean(Hunde$protein[Hunde$diagnose==2]) m3<- mean(Hunde$protein[Hunde$diagnose==3]) m4<- mean(Hunde$protein[Hunde$diagnose==4]) m5<- mean(Hunde$protein[Hunde$diagnose==5]) c(m1,m2,m3,m4,m5) # Variationskoeffizient varianz.voll <- vars(Hunde$protein) strdabw.voll <- sqrt(varianz.voll) variationskoef <- strdabw.voll/mean(Hunde$protein) MW=mean(Hunde$protein) # Vergleich Maßzahlen MW; var(Hunde$protein); sd(Hunde$protein); variationskoef # MAD MAD <- mean(abs(data$dauer- mean(data$dauer))) MAD mad(data$dauer,constant=1) mad(data$dauer,center=mean(data$dauer),constant=1) # Stimmt Jensen-Ungleichung? beacht Division be sd durch n n<- length(data$dauer) MAD < sd(data$dauer)*sqrt((n-1)/n) sd(data$dauer) # Vergleich Maßzahlen MW; varianz; strdabw; variationskoef; MAD # MedAD: abs.abw <- abs(data$dauer - median(data$dauer)) MedAD <- median(abs.abw) MedAD # entsprecheder R befehl mad(data$dauer,constant=1) ################################################################################ # Symmetrie und Schiefe # Schiefe # Hunde-Datensatzes: par(mfrow=c(1,2)) hist(Hunde$protein) # linksssteil hist(log10(Hunde$protein)) # Quartilskoeffizient Protein q<-quantile(log10(Hunde$protein), c(0.25,0.5, 0.75),type=1) q<-quantile(Hunde$protein, c(0.25,0.5, 0.75),type=1) ((q[3]-q[2])- (q[2]-q[1])) /(q[3]-q[1]) ### Wirkung von log-Transfromation logprotein<-log10(Hunde$protein) boxplot(logprotein) hist(logprotein) m3lp <- mean((logprotein - mean(logprotein))^3) m3lp/sqrt(vars(logprotein)^3) ### Schiefe deutlich geringer