Re: [R] farimaSim
Hansi Weissensteiner wrote: Hello! I installed the fSeries package to get some farima time-series which i tried with farimaSim, but unfortunately i got always an error. I tried it this way: farimaSim(n = 1000, model = list(ar = 0.5, d = 0.3, ma = 0.1), method=freq) Error in farimaSim(n = 1000, model = list(ar = 0.5, d = 0.3, ma = 0.1), : ... used in an incorrect context In the function definition of farimaSim the dots argument is missing. Replace or overwrite farimaSim by the following function. I have to aplogize for any inconveniances caused by this bug. The bug will be fixed in the next version of Rmetrics. Diethelm Wuertz farimaSim = function(n = 1000, model = list(ar = c(0.5, -0.5), d = 0.3, ma = 0.1), method = c(freq, time), ...) ^^ Insert the dots { # A function implemented by Diethelm Wuertz # Description: # Simulates a FARMA Time Series Process # Note: # Splus-Like argument list # Example: # armaSim(model = list(ar = c(0.5, -0.5), d = 0.2, ma = 0.1)) # armaSim(model = list(d = 0.2, ma = 0)) # armaSim(model = list(d = 0.2)) # FUNCTION: # Settings: innov = NULL n.start = 100 start.innov = NULL rand.gen = rnorm # Simulate: if (!is.list(model)) stop(model must be list) if (is.null(innov)) innov = rand.gen(n, ...) n = length(innov) if (is.null(start.innov)) start.innov = rand.gen(n, ...) n.start = length(start.innov) # AR PART: p = length(model$ar) if (p == 1 model$ar == 0) p = 0 if (p) { minroots = min(Mod(polyroot(c(1, -model$ar if (minroots = 1) stop(ar part of model is not stationary) } # MA PART: q = length(model$ma) if (q == 1 model$ma == 0) q = 0 if (n.start p + q) stop(burn-in must be as long as ar + ma) # DIFFERENCING: ## if (model$d 0) stop(d must be positive ) dd = length(model$d) if (dd) { # FRACDIFF if dd is a non-integer value: d = model$d if (d != round(d) ) { TSMODEL = FRACDIFF } else { TSMODEL = ARIMA } } else { d = 0 TSMODEL = ARIMA } # ARMA: if (TSMODEL == ARIMA) { stop(d is a short range model) } if (TSMODEL == FRACDIFF) { if (p == 0) model$ar = 0 if (q == 0) model$ma = 0 mu = 0 # Use Fortran Routine from R's contributed fracdiff package: # This is a BUILTIN function ... x = .Fortran(fdsim, as.integer(n), as.integer(p), as.integer(q), as.double(model$ar), as.double(model$ma), as.double(model$d), as.double(mu), as.double(rnorm(n + q)), x = double(n + q), as.double(.Machine$double.xmin), as.double(.Machine$double.xmax), as.double(.Machine$double.neg.eps), as.double(.Machine$double.eps), PACKAGE = fSeries)$x[1:n] } # Return Value: ans = as.ts(x) attr(ans, model) = model ans } The result will be: farimaSim(n = 1000, model = list(ar = 0.5, d = 0.3, ma = 0.1), method=freq) Time Series: Start = 1 End = 1000 Frequency = 1 [1] 3.2301357515 2.7050870252 3.4878581467 4.1825601460 5.1286599175 [6] 5.5220029973 5.1488261085 5.9423142081 3.5078481961 2.1189096844 [11] 2.5885700846 2.2224732255 3.0389690791 2.8123050401 2.6096020908 [16] 2.3095398924 1.4900953088 2.6017795027 3.5148157279 3.4317135045 ... [991] -0.5745174996 0.9022402358 -0.5675451281 1.4723458150 2.2187064082 [996] 1.6818662030 0.3170217298 0.9290833661 0.5800528928 -1.6796471062 attr(,model) attr(,model)$ar [1] 0.5 attr(,model)$d [1] 0.3 attr(,model)$ma [1] 0.1 Some ideas? Regards, ___ _ /_|_| Hansi Weissensteiner /o\__/O\= [EMAIL PROTECTED] __ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html __ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] farimaSim
Note that if the only difference is the addition of ... to the formal arguments then you can just do this once in your session before using farimaSim: formals(farimaSim) - c(formals(farimaSim), alist(... = )) Now farimaSim will have ... as an argument. e.g. formals(farimaSim) - c(formals(farimaSim), alist(... = )) args(farimaSim) function (n = 1000, model = list(ar = c(0.5, -0.5), d = 0.3, ma = 0.1), method = c(freq, time), ...) On 7/31/05, Diethelm Wuertz [EMAIL PROTECTED] wrote: Hansi Weissensteiner wrote: Hello! I installed the fSeries package to get some farima time-series which i tried with farimaSim, but unfortunately i got always an error. I tried it this way: farimaSim(n = 1000, model = list(ar = 0.5, d = 0.3, ma = 0.1), method=freq) Error in farimaSim(n = 1000, model = list(ar = 0.5, d = 0.3, ma = 0.1), : ... used in an incorrect context In the function definition of farimaSim the dots argument is missing. Replace or overwrite farimaSim by the following function. I have to aplogize for any inconveniances caused by this bug. The bug will be fixed in the next version of Rmetrics. Diethelm Wuertz farimaSim = function(n = 1000, model = list(ar = c(0.5, -0.5), d = 0.3, ma = 0.1), method = c(freq, time), ...) ^^ Insert the dots { # A function implemented by Diethelm Wuertz # Description: # Simulates a FARMA Time Series Process # Note: # Splus-Like argument list # Example: # armaSim(model = list(ar = c(0.5, -0.5), d = 0.2, ma = 0.1)) # armaSim(model = list(d = 0.2, ma = 0)) # armaSim(model = list(d = 0.2)) # FUNCTION: # Settings: innov = NULL n.start = 100 start.innov = NULL rand.gen = rnorm # Simulate: if (!is.list(model)) stop(model must be list) if (is.null(innov)) innov = rand.gen(n, ...) n = length(innov) if (is.null(start.innov)) start.innov = rand.gen(n, ...) n.start = length(start.innov) # AR PART: p = length(model$ar) if (p == 1 model$ar == 0) p = 0 if (p) { minroots = min(Mod(polyroot(c(1, -model$ar if (minroots = 1) stop(ar part of model is not stationary) } # MA PART: q = length(model$ma) if (q == 1 model$ma == 0) q = 0 if (n.start p + q) stop(burn-in must be as long as ar + ma) # DIFFERENCING: ## if (model$d 0) stop(d must be positive ) dd = length(model$d) if (dd) { # FRACDIFF if dd is a non-integer value: d = model$d if (d != round(d) ) { TSMODEL = FRACDIFF } else { TSMODEL = ARIMA } } else { d = 0 TSMODEL = ARIMA } # ARMA: if (TSMODEL == ARIMA) { stop(d is a short range model) } if (TSMODEL == FRACDIFF) { if (p == 0) model$ar = 0 if (q == 0) model$ma = 0 mu = 0 # Use Fortran Routine from R's contributed fracdiff package: # This is a BUILTIN function ... x = .Fortran(fdsim, as.integer(n), as.integer(p), as.integer(q), as.double(model$ar), as.double(model$ma), as.double(model$d), as.double(mu), as.double(rnorm(n + q)), x = double(n + q), as.double(.Machine$double.xmin), as.double(.Machine$double.xmax), as.double(.Machine$double.neg.eps), as.double(.Machine$double.eps), PACKAGE = fSeries)$x[1:n] } # Return Value: ans = as.ts(x) attr(ans, model) = model ans } The result will be: farimaSim(n = 1000, model = list(ar = 0.5, d = 0.3, ma = 0.1), method=freq) Time Series: Start = 1 End = 1000 Frequency = 1 [1] 3.2301357515 2.7050870252 3.4878581467 4.1825601460 5.1286599175 [6] 5.5220029973 5.1488261085 5.9423142081 3.5078481961 2.1189096844 [11] 2.5885700846 2.2224732255 3.0389690791 2.8123050401 2.6096020908 [16] 2.3095398924 1.4900953088 2.6017795027 3.5148157279 3.4317135045 ... [991] -0.5745174996 0.9022402358 -0.5675451281 1.4723458150 2.2187064082 [996] 1.6818662030 0.3170217298 0.9290833661 0.5800528928 -1.6796471062 attr(,model) attr(,model)$ar [1] 0.5 attr(,model)$d [1] 0.3 attr(,model)$ma [1] 0.1 Some ideas? Regards, ___ _ /_|_| Hansi Weissensteiner /o\__/O\= [EMAIL PROTECTED] __ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html __ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html __ R-help@stat.math.ethz.ch mailing list
[R] farimaSim
Hello! I installed the fSeries package to get some farima time-series which i tried with farimaSim, but unfortunately i got always an error. I tried it this way: farimaSim(n = 1000, model = list(ar = 0.5, d = 0.3, ma = 0.1), method=freq) Error in farimaSim(n = 1000, model = list(ar = 0.5, d = 0.3, ma = 0.1), : ... used in an incorrect context Some ideas? Regards, ___ _ /_|_| Hansi Weissensteiner /o\__/O\= [EMAIL PROTECTED] __ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Re: [R] farimaSim
Hansi == Hansi Weissensteiner [EMAIL PROTECTED] on Tue, 26 Jul 2005 17:40:45 +0200 writes: Hansi Hello! I installed the fSeries package to get some Hansi farima time-series which i tried with farimaSim, but Hansi unfortunately i got always an error. I tried it this Hansi way: farimaSim(n = 1000, model = list(ar = 0.5, d = 0.3, ma = 0.1), method=freq) Hansi Error in farimaSim(n = 1000, model = list(ar = 0.5, d Hansi = 0.3, ma = 0.1), : ... used in an incorrect context Hansi Some ideas? Yes, the function farimaSim() is bogous, pretty obviously if you look at it. I've wondered for a while if we (R developers) shouldn't improve R CMD check so as to require that every exported function in a package must have at least one running example. For the farimaSim(), there is no call possible without an error message. Package 'fracdiff', though much older, has a working fracdiff.sim() function. Martin Maechler, ETH Zurich __ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html