Daten richtig ausgeben

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

Moderatoren: EDi, jogo

Antworten
mayenne66

Daten richtig ausgeben

Beitrag von mayenne66 »

Hallo, ich hoffe ihr könnt mir helfen.
Ich glaub, ich steh ziemlich auf dem Schlauch :(
Das ist mein Ausschnitt.
Also ich möchte etwas n mal durchlaufen lassen, mache das über eine for-schleife.
Und am Ende soll er mir je den Wert ausgeben.
Ich bekomme tatsächlich auch meine n Werte.
Allerdings nur auf der Konsole nur zusammenfügen lassen sie sich nicht. Wenn ich es einzeln ansprech ist logischerweise nur der letzte Wert drin, da ja durch die schleife überschrieben wird.
Aber ich brauche jeden dieser Werte am besten als Liste oder array.

vielen lieben Dank :)

Code: Alles auswählen

 # bivariate Verteilung mit N(0,1) und N(1,2) Randverteilungen und Clayton Copula
 # Parameter Theta= 0.5, 0.8, 1, 5, 10

 for (i in 1:10) {

 # Copula mit Theta=0.5 generieren
   cop0.5=archmCopula(family="clayton", dim=2, param=0.5) # 0.5
   my.margins=c("norm", "norm")
   my.param=list(list(mean=0, sd=1),list(mean=1, sd=sqrt(2)))

   Bvd0.5=mvdc(copula=cop0.5, margins=my.margins, paramMargins=my.param)
   Bvd0.5

 # simuliere n ZVar
   n=1000
   Bvd0.5.sim=rMvdc(n,Bvd0.5)

 # Anfangswerte festlegen
   start.vals=c(0,1,1,sqrt(2),0.5)
 #names(start.vals)=c("mu1", "sigma1", "mu2", "sigma2", "theta")

 # MLE
 # Copula optimieren/maximieren
   mleBvdc.fit=fitMvdc(Bvd0.5.sim, Bvd0.5, start.vals)
   mleBvdc.fit

 # Ausgabe der geschätzten Variablen
   MLEparam.dach=mleBvdc.fit@estimate
   print(MLEparam.dach[5])
}
[1] 0.5711582
[1] 0.54405
[1] 0.6319878
[1] 0.509551
[1] 0.5511724
[1] 0.5002573
[1] 0.5181772
[1] 0.5090123
[1] 0.4927321
[1] 0.4801617
Zuletzt geändert von jogo am Di Apr 11, 2017 7:58 pm, insgesamt 1-mal geändert.
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Daten richtig ausgeben

Beitrag von jogo »

Hallo mayenne66,

willkommen im Forum!
Mach doch mal folgendes:

Code: Alles auswählen

MLE.dach5 <- function(i) {
  # bivariate Verteilung mit N(0,1) und N(1,2) Randverteilungen und Clayton Copula
  # Parameter Theta= 0.5, 0.8, 1, 5, 10
  # Copula mit Theta=0.5 generieren
  cop0.5=archmCopula(family="clayton", dim=2, param=0.5) # 0.5
  my.margins=c("norm", "norm")
  my.param=list(list(mean=0, sd=1),list(mean=1, sd=sqrt(2)))
  
  Bvd0.5=mvdc(copula=cop0.5, margins=my.margins, paramMargins=my.param)
  Bvd0.5
  
  # simuliere n ZVar
  n=1000
  Bvd0.5.sim=rMvdc(n,Bvd0.5)
  
  # Anfangswerte festlegen
  start.vals=c(0,1,1,sqrt(2),0.5)
  #names(start.vals)=c("mu1", "sigma1", "mu2", "sigma2", "theta")
  
  # MLE
  # Copula optimieren/maximieren
  mleBvdc.fit=fitMvdc(Bvd0.5.sim, Bvd0.5, start.vals)
  mleBvdc.fit
  
  # Ausgabe der geschätzten Variablen
  MLEparam.dach=mleBvdc.fit@estimate
  MLEparam.dach[5]
}
sapply(1:10, MLE.dach5)
Da in der ursprünglichen for-Schleife das i keine Rolle spielt, kannst Du auch:

Code: Alles auswählen

replicate(10, MLE.dach5(42))
rechnen lassen. Oder Du schreibst die Funktionsdefinition um:

Code: Alles auswählen

MLE.dach5 <- function() { # ohne Parameter
  # ... all das Zeug
}
replicate(10, MLE.dach5())
Gruß, Jörg
Antworten