HILFE Hausaufgabe
HILFE Hausaufgabe
Hallo ihr Lieben,
ich habe letzte Woche schon ein Mal um Hilfe gebeten, bin jedoch immer noch völlig hilflos. Ich habe eine Hausaufgabe in der Uni aufbekommen, in die ich schon seit einer Woche etliche Stunden investiert habe und trotzdem auf keinen grünen Zweig komme. Ich glaube mir fehlt für die Programmierung einfach das Verständnis, denn entweder verstehe ich nur die Hälfte der Aufgabe, meine Befehle funktionieren nicht bzw. weiß ich manchmal garnicht welchen Befehl ich anwenden soll oder oder oder...
Langsam bin ich wirklich am verzweifeln, da ich ungern 0 Punkte kassieren würde
Vllt kann mir ja jemand Tipps für den richtigen Lösungsweg geben bzw. mir beim Verständis helfen.
Ich wäre euch unglaublich dankbar!!!
Also hier die Aufgaben:
Schreiben Sie ein funktionsfähiges R-Programm, das die nachfolgend aufgeführten Aufgaben fehlerfrei durchführt. Speichern Sie dieses Programm unter folgenden Dateinamen Aufgabe3a_<Name1>_<Name2>.r Ersetzen Sie dabei <…> durch die jeweiligen Nachnamen der beteiligten Gruppenmitglieder.
Teil 1
1. Wählen Sie aus dem Wertebereich [1,50] drei Werte für den Freiheitsgrad ν der Student- (t-) Verteilung aus, für die sich die Verteilungsfunktionen sichtbar voneinander unterscheiden. Stellen Sie für diese drei ν-Werte den Verlauf der Wahrscheinlichkeitsdichtefunktion in einem gemeinsamen Diagramm dar. Den Bereich der x-Werte, für den Sie die Kurven darstellen, wählen Sie so, dass mindestens das Fünffache der Standardabweichung σ um den Mittelwert herum mit einer ansprechenden Auflösung abgebildet wird. Speichern Sie das Diagramm unter dem Namen Aufgabe3a_Dichtefunktion_<Name1>_<Name2>.jpg in einer Datei.
x<-(1:50)
V1<-pt(x,df=30)
V2<-pt(x,df=5)
V3<-pt(x,df=1)
-> hab jetzt für die Verteilungsfunktion die Freieitsgrade 1,5 und 30 benutzt
D1<-dt(x,df=30)
D2<-dt(x,df=5)
D3<-dt(x,df=1)
-> das müssten ja die Befehle für die Dichtefunktion sein
dann habe ich mich an dem Befehl für das Diagramm versucht:
plot(x,type=1,main=Name des Diagramms oder?,xlab="x-Werte",ylab="y-Werte",xlim=c(Limit bis wann die Achse geht oder?),ylim=c(..siehe xlim),col=farbe[1],lty=strich[1],lwd=2,las=1)
->ist das so korrekt? ich verstehe nicht die Aufgabe mit der Standartabweichung und dem Mittelwert, muss ich das für xlim dann einsetzen?
->und wie lass ich alle Kurven in einem Diagramm verlaufen?
2. Fertigen Sie für die gleichen drei ν-Werte und die gleichen x-Werte ein Diagramm an, in dem die entsprechenden Verteilungsfunktionen als Linienplots dargestellt sind. Speichern Sie das Diagramm unter dem Namen Aufgabe3a_Verteilungsfunktionfunktion_<Name1>_<Name2>.jpg
-> das würde ich denke ich hinbekommen, wenn ich erst Mal wüsste, wie ich das Diagramm von 1 anfertige, bin jedoch natürlich für Tipps offen und freue mich über jede Hilfe
3. Berechnen Sie in Abhängigkeit der gewählten ν-Werte die x-Werte, für die die Verteilungsfunktion die Werte 0.001, 0.01, 0.025, 0.05, 0.1, 0.9, 0.95, 0.975, 0.99 und 0.999 annimmt. Stellen Sie diese Werte (aus dem R-Programm heraus) in einer Tabelle zusammen, deren Spalten die unterschiedlichen ν-Werte und die Zeilen die 10 unterschiedlichen Wahrscheinlichkeiten repräsentieren. Benennen sie die jeweiligen Zeilen (rownames()) und Spalten (colnames()) mit den entsprechenden Werten und speichern sie die Tabelle (Matrix) formatiert in einer Datei mit dem Namen Aufgabe3a_P-Werte_<Name1>_<Name2>.txt ab.
-> hier hab ich garkeine Ahnung wie ich das mache
Schreiben Sie ein weiteres funktionsfähiges R-Programm, das die nachfolgend aufgeführten Aufgaben fehlerfrei durchführt. Speichern Sie dieses Programm unter folgenden Dateinamen Aufgabe3b_<Name1>_<Name2>.r
Teil 2
1. Erzeugen sie 1000 zufällige Stichproben mit zunächst jeweils n=10 Werten aus einer Lognormal-verteilung mit den Parametern μ=0 und σ=1. Bilden Sie von jeder Stichprobe Mittelwert und Standardabweichung und speichern diese Werte sukzessive auf einem passenden Datenvektor.
x<-rnorm(1000,10)
y<-sample(x,10)
-> das kommt bei mir immer was komisches raus, glaube nicht das, das so richtig ist
k<-plnorm(x,meanlog=0, sdlog=1) -> da habe ich die oben genannten Parameter eingesetzt
2. Erzeugen Sie ein Histogramm, dass die relative Häufigkeitsverteilung der 1000 Mittelwerte wiedergibt. Speichern Sie das Diagramm unter dem Namen. Aufgabe3b_Histogramm_<Name1>_<Name2>.jpg in einer Datei. Achten Sie darauf, dass das Diagramm alle für den Betrachter notwendigen Informationen enthält
-> das würde ich denke ich auch noch hinbekommen, wenn ich Aufgabe 1 erstmal richtig verstehen würde
3. Berechnen Sie nun den Mittelwert der 1000 Stichprobenmittel, die Standardabweichung der 1000 Stichprobenmittel, und den Mittelwerte der zuvor berechneten 1000 Stichproben-Standardabweichungen.
-> das würde ich ebenfalls denke ich hinbekommen
4. Geben Sie am Bildschirm folgende fünf Werte mit einer entsprechenden textlichen Identifizierung aus: (1) Mittelwert der Stichprobenmittelwerte, (2) Standardabweichung der Stichprobenmittelwerte, (3) Mittelwert der Stichproben-Standardabweichungen, (4) den unter (3) berechnete Wert dividiert durch Wurzel(n) und die Differenz zwischen (4) und (2).
5. Wiederholen Sie die Schritte (1) bis (4) für die Stichprobenumfänge n=20, 30, 50, 100, 150, 200, 250, 300, 400 und beobachten Sie die Veränderungen. Hinweis: ein guter Programmierer setzt die Wiederholungen mit größer werdenden Stichproben über eine weitere Schleife im Programm um, anstatt das Programm 10 Mal hintereinander auszuführen. Bedenken Sie auch, dass Sie für jeden Stichprobenumfang ein separates Histogramm erzeugen und speichern müssen.
-> mit 4 und 5 tu ich mich auch ein wenig schwer:(
ich wäre so unglaublich dankbar, wenn sich jemand erbarmen würde und mir hilft
Ich Danke schon tausend Mal im voraus!!!
ich habe letzte Woche schon ein Mal um Hilfe gebeten, bin jedoch immer noch völlig hilflos. Ich habe eine Hausaufgabe in der Uni aufbekommen, in die ich schon seit einer Woche etliche Stunden investiert habe und trotzdem auf keinen grünen Zweig komme. Ich glaube mir fehlt für die Programmierung einfach das Verständnis, denn entweder verstehe ich nur die Hälfte der Aufgabe, meine Befehle funktionieren nicht bzw. weiß ich manchmal garnicht welchen Befehl ich anwenden soll oder oder oder...
Langsam bin ich wirklich am verzweifeln, da ich ungern 0 Punkte kassieren würde
Vllt kann mir ja jemand Tipps für den richtigen Lösungsweg geben bzw. mir beim Verständis helfen.
Ich wäre euch unglaublich dankbar!!!
Also hier die Aufgaben:
Schreiben Sie ein funktionsfähiges R-Programm, das die nachfolgend aufgeführten Aufgaben fehlerfrei durchführt. Speichern Sie dieses Programm unter folgenden Dateinamen Aufgabe3a_<Name1>_<Name2>.r Ersetzen Sie dabei <…> durch die jeweiligen Nachnamen der beteiligten Gruppenmitglieder.
Teil 1
1. Wählen Sie aus dem Wertebereich [1,50] drei Werte für den Freiheitsgrad ν der Student- (t-) Verteilung aus, für die sich die Verteilungsfunktionen sichtbar voneinander unterscheiden. Stellen Sie für diese drei ν-Werte den Verlauf der Wahrscheinlichkeitsdichtefunktion in einem gemeinsamen Diagramm dar. Den Bereich der x-Werte, für den Sie die Kurven darstellen, wählen Sie so, dass mindestens das Fünffache der Standardabweichung σ um den Mittelwert herum mit einer ansprechenden Auflösung abgebildet wird. Speichern Sie das Diagramm unter dem Namen Aufgabe3a_Dichtefunktion_<Name1>_<Name2>.jpg in einer Datei.
x<-(1:50)
V1<-pt(x,df=30)
V2<-pt(x,df=5)
V3<-pt(x,df=1)
-> hab jetzt für die Verteilungsfunktion die Freieitsgrade 1,5 und 30 benutzt
D1<-dt(x,df=30)
D2<-dt(x,df=5)
D3<-dt(x,df=1)
-> das müssten ja die Befehle für die Dichtefunktion sein
dann habe ich mich an dem Befehl für das Diagramm versucht:
plot(x,type=1,main=Name des Diagramms oder?,xlab="x-Werte",ylab="y-Werte",xlim=c(Limit bis wann die Achse geht oder?),ylim=c(..siehe xlim),col=farbe[1],lty=strich[1],lwd=2,las=1)
->ist das so korrekt? ich verstehe nicht die Aufgabe mit der Standartabweichung und dem Mittelwert, muss ich das für xlim dann einsetzen?
->und wie lass ich alle Kurven in einem Diagramm verlaufen?
2. Fertigen Sie für die gleichen drei ν-Werte und die gleichen x-Werte ein Diagramm an, in dem die entsprechenden Verteilungsfunktionen als Linienplots dargestellt sind. Speichern Sie das Diagramm unter dem Namen Aufgabe3a_Verteilungsfunktionfunktion_<Name1>_<Name2>.jpg
-> das würde ich denke ich hinbekommen, wenn ich erst Mal wüsste, wie ich das Diagramm von 1 anfertige, bin jedoch natürlich für Tipps offen und freue mich über jede Hilfe
3. Berechnen Sie in Abhängigkeit der gewählten ν-Werte die x-Werte, für die die Verteilungsfunktion die Werte 0.001, 0.01, 0.025, 0.05, 0.1, 0.9, 0.95, 0.975, 0.99 und 0.999 annimmt. Stellen Sie diese Werte (aus dem R-Programm heraus) in einer Tabelle zusammen, deren Spalten die unterschiedlichen ν-Werte und die Zeilen die 10 unterschiedlichen Wahrscheinlichkeiten repräsentieren. Benennen sie die jeweiligen Zeilen (rownames()) und Spalten (colnames()) mit den entsprechenden Werten und speichern sie die Tabelle (Matrix) formatiert in einer Datei mit dem Namen Aufgabe3a_P-Werte_<Name1>_<Name2>.txt ab.
-> hier hab ich garkeine Ahnung wie ich das mache
Schreiben Sie ein weiteres funktionsfähiges R-Programm, das die nachfolgend aufgeführten Aufgaben fehlerfrei durchführt. Speichern Sie dieses Programm unter folgenden Dateinamen Aufgabe3b_<Name1>_<Name2>.r
Teil 2
1. Erzeugen sie 1000 zufällige Stichproben mit zunächst jeweils n=10 Werten aus einer Lognormal-verteilung mit den Parametern μ=0 und σ=1. Bilden Sie von jeder Stichprobe Mittelwert und Standardabweichung und speichern diese Werte sukzessive auf einem passenden Datenvektor.
x<-rnorm(1000,10)
y<-sample(x,10)
-> das kommt bei mir immer was komisches raus, glaube nicht das, das so richtig ist
k<-plnorm(x,meanlog=0, sdlog=1) -> da habe ich die oben genannten Parameter eingesetzt
2. Erzeugen Sie ein Histogramm, dass die relative Häufigkeitsverteilung der 1000 Mittelwerte wiedergibt. Speichern Sie das Diagramm unter dem Namen. Aufgabe3b_Histogramm_<Name1>_<Name2>.jpg in einer Datei. Achten Sie darauf, dass das Diagramm alle für den Betrachter notwendigen Informationen enthält
-> das würde ich denke ich auch noch hinbekommen, wenn ich Aufgabe 1 erstmal richtig verstehen würde
3. Berechnen Sie nun den Mittelwert der 1000 Stichprobenmittel, die Standardabweichung der 1000 Stichprobenmittel, und den Mittelwerte der zuvor berechneten 1000 Stichproben-Standardabweichungen.
-> das würde ich ebenfalls denke ich hinbekommen
4. Geben Sie am Bildschirm folgende fünf Werte mit einer entsprechenden textlichen Identifizierung aus: (1) Mittelwert der Stichprobenmittelwerte, (2) Standardabweichung der Stichprobenmittelwerte, (3) Mittelwert der Stichproben-Standardabweichungen, (4) den unter (3) berechnete Wert dividiert durch Wurzel(n) und die Differenz zwischen (4) und (2).
5. Wiederholen Sie die Schritte (1) bis (4) für die Stichprobenumfänge n=20, 30, 50, 100, 150, 200, 250, 300, 400 und beobachten Sie die Veränderungen. Hinweis: ein guter Programmierer setzt die Wiederholungen mit größer werdenden Stichproben über eine weitere Schleife im Programm um, anstatt das Programm 10 Mal hintereinander auszuführen. Bedenken Sie auch, dass Sie für jeden Stichprobenumfang ein separates Histogramm erzeugen und speichern müssen.
-> mit 4 und 5 tu ich mich auch ein wenig schwer:(
ich wäre so unglaublich dankbar, wenn sich jemand erbarmen würde und mir hilft
Ich Danke schon tausend Mal im voraus!!!
Re: HILFE Hausaufgabe
Hier mal was zu 1.
2. ist analog.
3. ich denke hier ist qt() gefragt. q steht für quantile
Teil 2:
1. rlnorm() zieht dir Werte aus der log-normal verteilung. replicate() ist auch nützlich. genauso wie apply() und mean() und sd()
2. hist()
3. mean(), sd(9
4. print()?
5. alles wie oben, nur in eine Schleife, also ungefähr so:
for(n in c(20, 30, 40)) {
rlnorm(n, 0, 10)
}
ich würde anstatt ne Schleife lapply nehmen...
Code: Alles auswählen
# dfs
dfs <- c(30, 10, 3)
# calc sd from t
sds <- sqrt(dfs / (dfs-2))
# limit for plotting as 5 * sds / 2
lim <- max(sds) * 5 / 2
curve(dt(x, 30), from = -lim, to = lim)
curve(dt(x, 10), from = -lim, to = lim, add = TRUE, col = 'red')
curve(dt(x, 3), from = -lim, to = lim, add = TRUE, col = 'blue')
legend('topleft',
col = c('black', 'red', 'blue'),
lty = 1,
legend = c('t(30)', 't(10)', 't(3)')
)
3. ich denke hier ist qt() gefragt. q steht für quantile
Teil 2:
1. rlnorm() zieht dir Werte aus der log-normal verteilung. replicate() ist auch nützlich. genauso wie apply() und mean() und sd()
2. hist()
3. mean(), sd(9
4. print()?
5. alles wie oben, nur in eine Schleife, also ungefähr so:
for(n in c(20, 30, 40)) {
rlnorm(n, 0, 10)
}
ich würde anstatt ne Schleife lapply nehmen...
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: HILFE Hausaufgabe
Ein riesen Dankeschön für die schnelle Antwort und die Hilfe! das hat mich schon deutlich voran gebracht!
Das habe ich jetzt für 1.3
ist das einigermaßen korrekt? die Tabelle sieht mir ein wenig merkwürdig aus
Das habe ich jetzt für 1.3
ist das einigermaßen korrekt? die Tabelle sieht mir ein wenig merkwürdig aus
Code: Alles auswählen
Q1<-quantile(30, probs = c(0.001,0.01,0.025,0.05,0.1,0.9,0.95,0.975,0.99,0.999) )
Q2<-quantile(10, probs = c(0.001,0.01,0.025,0.05,0.1,0.9,0.95,0.975,0.99,0.999) )
Q3<-quantile(3, probs = c(0.001,0.01,0.025,0.05,0.1,0.9,0.95,0.975,0.99,0.999) )
data.frame(Q1,Q2,Q3)
Re: HILFE Hausaufgabe
und das habe ich zu 2.1
aber das kann doch nicht richtig sein... wie gebe ich denn den Befehl ein, dass ich 1000 Stichproben mit jeweil 10 Werten möchte? dazu finde ich bei google usw. einfach nichts... oder stehe ich auf dem Schlauch und verstehe die Aufgabe falsch?
Code: Alles auswählen
rlnorm(1000,meanlog = 0, sdlog = 1)
Re: HILFE Hausaufgabe
Code: Alles auswählen
replicate(1000, rlnorm(10, meanlog = 0, sdlog = 1))
Code: Alles auswählen
### Teil 2
set.seed(42)
n <- 10
Proben <- replicate(1000, rlnorm(n, meanlog = 0, sdlog = 1))
m <- colMeans(Proben) # Mittelwerte
s <- apply(Proben, 2, sd) # Standardabweichungen
hist(m, freq=FALSE) # noch Infos anbringen: "rel. Häufigk. der 1000 Mittelwerte"
paste0("(1) Mittelwert der Stichprobenmittelwerte: ", mean(m))
paste0("(2) Standardabweichung der Stichprobenmittelwerte: ", sd(m))
paste0("(3) Mittelwert der Stichproben-Standardabweichungen: ", mean(s))
paste0("(4) den unter (3) berechnete Wert dividiert durch Wurzel(n): ", mean(s)/sqrt(1000),
" und die Differenz zwischen (4) und (2): ", mean(s)/sqrt(n) - sd(m))
Code: Alles auswählen
### Teil 2
set.seed(42)
# Stichprobenumfänge
N <- c(10, 20, 30, 50, 100, 150, 200, 250, 300, 400)
par(mfrow=c(5,2))
for (n in N) {
Proben <- replicate(1000, rlnorm(n, meanlog = 0, sdlog = 1))
m <- colMeans(Proben) # Mittelwerte
s <- apply(Proben, 2, sd) # Standardabweichungen
hist(m, freq=FALSE, main=paste0("n=", n, ", rel. Häufigk. der Mittelw."))
print(paste0("### n= ", n))
print(paste0("(1) Mittelwert der Stichprobenmittelwerte: ", mean(m)))
print(paste0("(2) Standardabweichung der Stichprobenmittelwerte: ", sd(m)))
print(paste0("(3) Mittelwert der Stichproben-Standardabweichungen: ", mean(s)))
print(paste0("(4) den unter (3) berechnete Wert dividiert durch Wurzel(n): ", mean(s)/sqrt(1000),
" und die Differenz zwischen (4) und (2): ", mean(s)/sqrt(n) - sd(m)))
}
Gruß, Jörg
Re: HILFE Hausaufgabe
erst mal ein riesen großes dankeschön für dich hilfe
aber was muss ich verändern, damit ich nicht alle Diagramme auf einem Blatt habe sondern seperat?
aber was muss ich verändern, damit ich nicht alle Diagramme auf einem Blatt habe sondern seperat?
Re: HILFE Hausaufgabe
dann hilft nur das Ablegen in jeweils einzelnen Dateien:
in der Schleife.
Code: Alles auswählen
png(filename=sprintf("Histo%03d.png", n), width = 800, height = 800)
hist(m, freq=FALSE, main=paste0("n=", n, ", rel. Häufigk. der Mittelw."))
dev.off()
Re: HILFE Hausaufgabe
die Diagramme durchlaufen quasi nur ein Mal die Schleife aber werden mir danach nicht mehr angezeigt,damit ich sie abspeichern kann:(
Re: HILFE Hausaufgabe
Jörg ist Dir einen Schritt voraus: Du brauchst die Diagramme nicht mehr speichern - sie sind nach dieser Schleife bereits gespeichert. Eigentlich müsstest Du die ganzen Bilddateien im Ordner Deines Programms finden, wenn Du Jörgs letzten Code in die for-Schleife eingebaut hast.
LG,
Bernhard
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: HILFE Hausaufgabe
hier nochmal komplett:
und bevor Du lange nach den Dateien suchen musst:
Gruß, Jörg
Code: Alles auswählen
### Teil 2
set.seed(42)
# Stichprobenumfänge
N <- c(10, 20, 30, 50, 100, 150, 200, 250, 300, 400)
for (n in N) {
Proben <- replicate(1000, rlnorm(n, meanlog = 0, sdlog = 1))
m <- colMeans(Proben) # Mittelwerte
s <- apply(Proben, 2, sd) # Standardabweichungen
png(filename=sprintf("Histo%03d.png", n), width = 800, height = 800)
hist(m, freq=FALSE, main=paste0("n=", n, ", rel. Häufigk. der Mittelw."))
dev.off()
print(paste0("### n= ", n))
print(paste0("(1) Mittelwert der Stichprobenmittelwerte: ", mean(m)))
print(paste0("(2) Standardabweichung der Stichprobenmittelwerte: ", sd(m)))
print(paste0("(3) Mittelwert der Stichproben-Standardabweichungen: ", mean(s)))
print(paste0("(4) den unter (3) berechnete Wert dividiert durch Wurzel(n): ", mean(s)/sqrt(1000),
" und die Differenz zwischen (4) und (2): ", mean(s)/sqrt(n) - sd(m)))
}
Code: Alles auswählen
# In welchem Verzeichnis finde ich die Grafikdateien?
getwd()