summaryrefslogtreecommitdiff
path: root/R/iv.R
diff options
context:
space:
mode:
authorSuraj Yerramilli2016-02-13 18:26:29 +0530
committerSuraj Yerramilli2016-02-13 18:26:29 +0530
commit8b7f7f92b633584310e8661fdf00004efe29289a (patch)
tree48bd29cf55e19d60f01db845a49336b710785478 /R/iv.R
parent1242ed4d247a9447db66278a72b5187cc034592a (diff)
downloadSysID-R-code-8b7f7f92b633584310e8661fdf00004efe29289a.tar.gz
SysID-R-code-8b7f7f92b633584310e8661fdf00004efe29289a.tar.bz2
SysID-R-code-8b7f7f92b633584310e8661fdf00004efe29289a.zip
code for first three stages in the iv4 algo
Diffstat (limited to 'R/iv.R')
-rw-r--r--R/iv.R20
1 files changed, 20 insertions, 0 deletions
diff --git a/R/iv.R b/R/iv.R
index 9257766..8cf70c6 100644
--- a/R/iv.R
+++ b/R/iv.R
@@ -46,4 +46,24 @@ iv <- function(z,order=c(0,1,0),x=NULL){
estpoly(sys = model,
stats=list(vcov = vcov, sigma = sqrt(sigma2),df = df),
fitted.values=ypred,residuals=e,call=match.call(),input=u)
+}
+
+#' @export
+iv4 <- function(z,order=c(0,1,0)){
+ y <- outputData(z); u <- inputData(z); N <- dim(y)[1]
+ na <- order[1];nb <- order[2]; nk <- order[3]
+ nb1 <- nb+nk-1 ; n <- max(na,nb1); df <- N-na-nb
+
+ # Steps 1-2
+ mod_iv1 <- iv(z,order)
+ A <- signal::Ma(c(1,mod_iv1$sys$A))
+ B <- signal::Ma(c(rep(0,nk),mod_iv1$sys$B))
+
+ # Step 3 (AR Modeling)
+ w <- matrix(as.numeric(signal::filter(A,y)) -
+ as.numeric(signal::filter(B,u)))
+ mod_ar <- ar(w,aic = F,order=na+nb)
+ L <- signal::Ma(c(1,-mod_ar$ar))
+
+ # Step 4
} \ No newline at end of file