Stichprobe

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Antworten
saskiasal47

Stichprobe

Beitrag von saskiasal47 »

Hallo ihr Lieben,

ich bräuchte mal wieder eure Hilfe bei einer Aufgabe :roll:

Der Programm soll eine Stichprobe von Zufallszahlen vom Umfang n=10 aus einer t-Verteilung mit Freiheitsgrad v=3 erzeugen. Es soll geprüft werden, ob die Nullhypothese "Die Stichprobe ist normalverteilt" bei einen Signifikanzniveau alpha=0,1 abgelehnt werden kann. Der Test soll mit dem PPCC,Shapiro-Wilk, Shapiro-Francia und Kolmogoroff-S. durchgeführt werden.

1. Programm soll Prozedur 1000 mal wiederholen und dabei für jeden der drei Tests die Zahl der fälle ermitteln, bei denen die Null-Hypothese fälschlicherweise nicht abgelehnt wird (Fehler 2.Art). Aus Prozentualen Anteil dieses Fehlers die Teststärke des jeweilige Verfahrens berechnen und die Ergebnisse übersichtlich in der Konsole ausgeben.

2.Stichprobenumfang schrittweise von n=10 auf n=30 erhöhen (in 5. Stufen). Jedes Mal die in 1. geschilderte Prozedur dabei durchführen.

3.Programm 4. Mal durchführen. Verändern Sie bei jeder Ausführung die Zahl der Freiheitsgrade v für die t-Verteilung aus der die Stichprobe gezogen wurde. Verwenden Sie dafür v=3,5,9,29.

Bis Aufgabe 2. habe ich denke ich soweit alles, nur bei Aufgabe 3 stehe ich leider ein wenig auf dem Schlauch :(

Code: Alles auswählen

n1<-c(seq(10,30,by=5))
alpha<-0.1
vl<-1000
rs<-vector(length=vl)
sw<-vector(length=vl)
sf<-vector(length=vl)
ks<-vector(length=vl)

#Daten[n]<-500
#PPCC,Shapiro-Wilk,Shapiro-Francia,Kolmogoroff-Smirnoff Test´s durchführen

for (n in n1)  {
  for (i in 1:vl){
Daten<-rt(n, df=3)
rs[i]<-cor(qnorm(ppoints(n)),sort(Daten))
sf[i]<-shapiro.test(Daten)$p.value
sw[i]<-shapiro.test(Daten)$p.value
ks[i]<-ks.test(Daten,"pnorm")$p.value
            }
print(paste("Umfang",n))
print("PPCC-Test")
n.less<-sum(rs<0.934)
print(paste("Anzahl Ablehnungen:",n.less),quote=F)
beta<-sum(rs>=0.934)/vl*100
print(paste("Fehler 2.Art",beta,"Teststärke",100-beta),quote=F)

print("Shapiro-Wilk-Test")
sw[i]<-shapiro.test(Daten)$p.value
n.less<-sum(sw<alpha)
print(paste("Anzahl Ablehnungen:",n.less),quote=F)
beta<-sum(rs>=alpha)/vl*100
print(paste("Fehler 2.Art",beta,"Teststärke",100-beta),quote=F)

print("Shapiro-Francia")
n.less<-sum(sf<alpha)
print(paste("Anzahl Ablehnungen:",n.less),quote=F)
beta<-sum(rs>=alpha)/vl*100
print(paste("Fehler 2.Art",beta,"Teststärke",100-beta),quote=F)

print("Kolomogorov-Smirnov-Test")
n.less<-sum(ks<alpha)
print(paste("Anzahl Ablehnungen:",n.less),quote=F)
beta<-sum(ks>=alpha)/vl*100
print(paste("Fehler 2.Art",beta,"Teststärke",100-beta),quote=F)
}
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Stichprobe

Beitrag von bigben »

Hallo Du Liebe,,

sag mal, wie kann es sein, dass Du das alles programmiert hast, aber nicht weißt, an welcher Stelle die t-Verteilung abgefragt wird und wo da die ZAhl der Freiheitsgrade steht?

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
saskiasal47

Re: Stichprobe

Beitrag von saskiasal47 »

Hallo mein Lieber,

Ich habe das Programm mit einem Kommilitonen zusammen geschrieben und wollte mich gerne an der letzten Aufgabe nochmal selber versuchen um zu üben ( es soll nämlich auch Leute gehen, denen liegt sowas überhaupt nicht aber dafür habe sie andere Stärken;)) Auf jeden Fall vielen Dank für deine Hilfe und deinen hilfreichen Kommentar.

Liebe Grüße
saskiasal47

Re: Stichprobe

Beitrag von saskiasal47 »

Und wo die Zahl der Freiheitsgrade steht usw weiß ich, allerdings habe ich immer meine Probleme mit der Programmierung von Schleifen.
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Stichprobe

Beitrag von bigben »

Man wird ja noch fragen dürfen, woran es hängt. Von einer Schleife stand da ja erstmal noch nichts. Wenn es um eine for-Schleife geht, dann brauchst Du eine Laufvariable. Da es hier um die verschiedenen v für die t-Verteilung geht, schlage ich vt vor. Wenn vt nun der Reihe nach die vier Werte durchlaufen soll, dann sieht die Schleife etwa so aus:

Code: Alles auswählen

for(vt in c(3,5,9,29)){
  print(vt)
}
Anstelle der print-Anweisung stellst Du Deinen Code in die geschweiften Klammern und anstelle des festen Wertes für die Freiheitsgrade schreibst Du vt in den Aufruf des Zufallsgenerators für die t-Verteilung.

Hilft das?

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten