Sie sind auf Seite 1von 4

### 7.ff Uebungen - Einstieg R ################################ #Daten holen setwd("F:/CAU_Lehre/12SoSe/statistik/daten") #setwd("F:/2011_statistik/daten") pfeile<-read.csv2("pfeiledat.

csv") ############################################## #Datenberblick ls() str(pfeile) ############################################## #Daten rekodieren #die Variable art beinhaltet viele Varianten, diese werden nach Pfeilspitzen und Querschneidern gruppiert pfeile$typ<-trunc(pfeile$art/10) # Die ganzzahlige Variablen werden in Faktoren (Nominalskala) umgewandelt und mi t Etiketten versehen pfeile$typ <- factor(pfeile$typ, labels=c('Vorarbeit','Pfeilspitze','Querschneid er')) pfeile$art <- factor(pfeile$art, labels=c('Vorarbeit', 'allg. Dreieckig', 'gerad e Basis', 'konkave Basis', 'konvexe Basis', 'geflgelt', 'rhombisch', 'Schftungsker ben', 'gestielt', 'langoval', 'amorph', 'Querschn. trapezf.', 'Querschn. triangu l.', 'Querschn. rechteckig', 'Querschn. sonstige')) # Die Fundorte (fo) wwerden ohne Etikett konvertiert, das Ergebnis wird nachfolg end geprft pfeile$fo <- factor(pfeile$fo) is.factor(pfeile$fo) ### 8. Uebung (verndert) deskriptive Statistik, Grafik######################## #Wie sehen die Daten aus? Wie sind die Daten verteilt? #Allgemeiner berblick mit Rcmdr # Statistik --> Deskriptive Statistik --> Aktive Datenmatrix # Statistik --> Deskriptive Statistik --> Zusammenfassung nummerischer Variablen # oder summary(pfeile) #eventuell fllt Ihnen auf, dass Massstab doch besser in einen factor gendert werde n sollte table(pfeile$typ) # gezhlte Hufigkeiten 100*table(pfeile$typ)/sum(table(pfeile$typ)) # und das sind ? ... Prozent ####################################################### #Histogramm (hist) fr stetige Zahlen, Balkendiagramm (barplot) fr gezhlte Merkmale # automatische Syntax von Rcmdr hist(pfeile$maxb, scale="frequency", breaks="Sturges", col="darkgray") # bevor wir mit hist weiter machen schnell noch ein barplot zu den Typen barplot(pfeile$typ) # ja, es gibt eine Fehlermeldung: 'height' muss ein Vektor oder eine Matrix sein # eine nominal skalierte Variable jetzt doch ein Vektor? Wir vermuten Arbeitstei lung, der eine zhlt die Flle und barplot 'malt'. also: barplot(table(pfeile$typ)) # Befehl nachbauen und verndern hist(pfeile$maxb) hist(pfeile$maxb, main="neolithische Pfeilspitzen", xlab="max. Breite (mm)", yla b="Anzahl") #"eine gute Anzahl der Klassen ergibt sich aus der Wurzel der Menge der Beobacht ungen." hist(pfeile$maxl, breaks=sqrt(length(pfeile$maxl)), main="neolithische Pfeilspit

zen", xlab="max. Lnge (mm)", ylab="Anzahl", col="darkgrey") # Wegen der Wurzel sieht die x-Achse "unschn" aus. Wir bernehmen die Schrittweite und das Maximum fr eine Sequenz. hist(pfeile$maxl, breaks=seq(0,70,2), main="neolithische Pfeilspitzen", xlab="ma x. Lnge (mm)", ylab="Anzahl", col="darkgrey") # Testen sie mal andere Startwerte und Klassenweiten, z.B. auch 2.5 ######################################################## #Mae vergleichen #Scatterplot in Rcmdr Grafiken --> Streudiagramm scatterplot(maxl~maxb | typ, reg.line=lm, smooth=TRUE, boxplots='xy', span=0.5, by.groups=TRUE, data=pfeile) ############################################ # Datensatz teilen bzw. reduzieren #Die Vorabeiten liegen zwischen Pfeilspitzen und Querschneidern und stren das Bil d, wir bilden also einen Teildatensatz pfeile <- subset(pfeile, typ!="Vorarbeit") #Pfeildatensatz ohne Vorarbeiten. pfeile$typ <- factor(pfeile$typ, levels=c('Pfeilspitze','Querschneider')) #Rekod ieren der Variable Typ # Wir bauen den Scatterplot nach und testen einige Parameter ('Scatterplot' wird mit Rcmdr erst geladen!) scatterplot(pfeile$maxl~pfeile$maxb | pfeile$typ, main="neolithische Pfeilspitze n", xlab="max. Breite (mm)", ylab="max. Lnge (mm)") scatterplot(maxl~maxb | typ, data=pfeile, main="neolithische Pfeilspitzen", xlab ="max. Breite (mm)", ylab="max. Lnge (mm)", reg.line=F, smooth=F, pch=c(2,6), col =c("red","red","blue", "green")) # Wir sehen, Querschneider sind deutlich krzer aber nur bedingt schmaler (Die Aus reier werden als Fehlbestimmungen erkannt und "in den Skat gedrckt"). # Die Lnge erkrt sich aus der Lage lngs bzw. quer zur Grundform. Die identische Bre ite nicht, also wohl beabsichtigt. # Die Querschneider streuen auch weniger, sie sind also weniger variabel oder po sitiv formuliert besonders normiert. # Die Boxplots am Rand inspiriern uns zu zwei weiteren Darstellungsmglichkeit. boxplot(maxl~typ, ylab="max. Lnge (mm)", xlab="Typ", data=pfeile) boxplot(gewicht~typ, ylab="max. Lnge (mm)", xlab="Typ", data=pfeile) # Aus interesse lesen wir mal, was boxplot noch so liefert 'help(boxplot)' und e rgnzen: boxplot(maxl~typ, ylab="max. Lnge (mm)", xlab="Typ", data=pfeile, notch=TRUE) #Die Unterschiede sind offensichtlich, bedrfen keiner statistischen Prfung und las sen sich aus der Herstellung erklren. Spannend ist eigentlich erst die Konsequenz . ###9. Uebung Statistische Signifikanz, nicht parametrische Tests ############### ################# # Statistische Signifikanz auf identische Verteilungen # Frage: Gibt es Querschneider weil die gute Rohmaterialversorgung erst die notw endige Mindestbreite von Klingen als Grundform erlaubt? # Wir prfen also, ob die Querschneiderlnge signifikant ber der Pfeilspitzenbreite l iegt und erstellen die Variable BreiteGrundform. #Erst die Variable mit fehlenden Werten, dann die Zuweisung fr Pfeilspitzen, dann fr den Rest (alles Querschneider). Um die Syntax zu verstehen setzen Sie mal nur folgendes ab: pfeile$typ [pfeile$typ=="Pfeilspitze"] pfeile$breite.g<-NA pfeile$breite.g [pfeile$typ=="Pfeilspitze"] <- pfeile$maxb [pfeile$typ=="Pfeilsp itze"] pfeile$breite.g [pfeile$typ!="Querschneider"] <- pfeile$maxl [pfeile$typ!="Quers

chneider"] boxplot(breite.g~typ, notch=T, ylab="Breite der Grundform (mm)", xlab="Typ", dat a=pfeile) # Ist nicht identisch, berlappt sich aber deutlich und der Median scheint hnlich. Also die Quartile abrufen. Weil ich faul bin nehme ich den gleichen Befehl (Pfei l nach oben) und ergnze die Bedingung "plot=False". boxplot(breite.g~typ, ylab="Breite der Grundform (mm)", xlab="Typ", data=pfeile, plot =F) #Die Rckgabe liefert: $stats = Matrix der Grenzwerte (1,5 x Interquartil, 25%, 50 %, 75%, 1,5 x Interquartil, $n Anzahl der Messwerte, $conf gibt einen approx. Ve trauensbereich fr den Median an (s. help(boxplot.stats) und wird mit notch=True v isualisiert, $out ist die Liste der Ausreier, $group die Gruppe des jeweiligen Au sreiers, $names die Faktorstufen von typ. #????????????????????????????????? # Beschreiben Sie die Grafik, nennen Sie die wichtigen Daten. Welche archologisch en Schlsse ziehen Sie? #????????????????????????????????? ########################################### # Wir brauche also auch hier Tests, um Aussagen ber die Wahrscheinlichkeit treffe n zu knnen. # Wie immer gibt es Regeln. Im Mend des RCmdr finden wir erst Statistik --> Mitte lwert vergleichen, weiter unten --> Nichtparametrische Tests. Die Tests zum Mitt elwert werden auch als Parametrische Tests bezeichnet. # Auf welche Mae zielt der Boxplot ab? # Also erstmal die nicht parametrischen Tests, die auch nicht parameterfrei sind . ######################### # Mann-Whitney-U-Test # Voraussetzung: mindestens eine Variable intervall oder ordinalskaliert, die Gr uppierungsvariable ist nominal skaliert. # Die nach Rngen sortierten Daten werden miteinander verglichen (Wer hat mehr Rnge des anderen unter sich?) # Was passiert bei Pfeilspitzen = 364 und Querschneider = 741? # Wie ziehen also eine zufllige Stichprobe von jeweils 100 Merkmalsausprgungen smplpfeil<-sample(pfeile$breite.g[pfeile$typ=="Pfeilspitze"],100) smplquer<-sample(pfeile$breite.g[pfeile$typ!="Pfeilspitze"],100) smplpfeiltyp<-sample(1,100,replace=T) smplquertyp<-sample(2,100,replace=T) smplpfeile<-rbind(cbind(smplpfeil, smplpfeiltyp), cbind(smplquer, smplquertyp)) wilcox.test(smplpfeile[,1]~smplpfeile[,2]) # Wir haben trotzdem Zweifel, ob wir das Ergebnis richtig lesen? Gut, dann prfen wir mit einer Testvariable, bei der wir ein eindeutiges Ergebnis erwarten: smpltest<-rbind(cbind(rnorm(50, mean=0, sd=1),sample(1,50,replace=T)),cbind(rnor m(50, mean=0, sd=1),sample(2,50,replace=T))) wilcox.test(smpltest[,1]~smpltest[,2]) ############################################## # Nun zu den parametrischen Tests, die den Mittelwert vergleichen. # Grundstzlich gilt: Je qualittvoller die Daten und der dafr geeignete Test, desdo hochwertiger - nicht unbedingt besser - ist das Testergebnis (eindeutig positiv korreliert ;-). # Sie erinnern sich, wir beschreiben eine Verteilung mit dem arithmetische Mitte l und der Standardabweichung, wenn beide reprsentativ fr die Grundgesamtheit der b etrachteten Merkmalsausprgungen sind, also Normalverteilt. # Diesmal wollen wir die maximale Breite der Geschosse vergleichen, also die Bas isbreite der Pfeilspitzen und die Schneidenbreite der Querschneiden.

# Vorab drei Grafiken fr einen ertsen visuellen Eindruck qq.plot(pfeile$maxb, dist= "norm", labels=FALSE) qq.plot(pfeile$maxb [pfeile$typ!="Pfeilspitze"], dist= "norm", labels=FALSE) x11() qq.plot(pfeile$maxb [pfeile$typ!="Querschneider"], dist= "norm", labels=FALSE) #Kolmogorov-Smirnov-Test auf Normalverteilung ks.test (na.omit(pfeile$maxb), "pnorm", mean(na.omit(pfeile$maxb)), sd(na.omit(p feile$maxb))) ks.test (na.omit(pfeile$maxb[pfeile$typ!="Pfeilspitze"]), "pnorm", mean(na.omit( pfeile$maxb[pfeile$typ!="Pfeilspitze"])), sd(na.omit(pfeile$maxb[pfeile$typ!="Pf eilspitze"]))) ks.test (na.omit(pfeile$maxb[pfeile$typ!="Querschneider"]), "pnorm", mean(na.omi t(pfeile$maxb[pfeile$typ!="Querschneider"])), sd(na.omit(pfeile$maxb[pfeile$typ! ="Querschneider"]))) # Mit den sehr niedrigen p-Werten ist das Ergebnis eindeutig, die Nullhypothes " die Verteilungen sind normalverteilt" hate eine geringe Wahrscheinlichkeit und i st abzulehnen. # Nur mal zum Test und zum Verstehen des Ergebnisses ks.test(rnorm(100, mean=0, sd=1), "pnorm", mean=0, sd=1) # Alternativ ####################### #Codesammlung #hist(pfeile$maxl, freq=F scale="density", breaks=seq(0,70,2), main="neolithisch e #Pfeilspitzen", xlab="max. Lnge (mm)", ylab="Anzahl", col="darkgrey", ylim=c(0, .08)) #lines(density(na.omit(pfeile1$maxl)), lwd=2, col=rgb(255,0,0,100,maxColorValue= 255)) #lines(density(na.omit(pfeile2$maxl)), lwd=2, col=rgb(0,0,255,100,maxColorValue= 255)) pfeile1 <- subset(pfeile, typ=="Pfeilspitze") #weitere Datenmatrix mit Pfeilspit zen pfeile2 <- subset(pfeile, typ=="Querschneider") # weitere Datenmatrix mit Quersc hneidern library(relimp, pos=4) showData(pfeile, placement='-20+200', font=getRcmdr('logFont'), maxwidth=80, maxheight=30)