To make a long story short I was doing some in-sample testing in which some
dynamically created regressors would end up either all true or all false
based on the validation portion. In my case a new mainframe configuration
(this is a crappy way to handle a level shift but I do what I can.) So here
is the code snippet that finally let me pre-check my regressors and drop any
of them that were all true or all false.

First the automagic STL outlier grabber that caused part of the problem:

############################################################
# tsSource being my time Series source.
# sh2 is a table of all my regessors that have been previously pulled in
# this has historic and future values in it also, it gets sliced later.
# the EOM is the regessor holding weeks that contain an 'End of Month'
#
# This appends the found IOs to the regressor table. Stepwise tends to
# remove them later on. I needed a programtic way of removing useless
# regressors for model verification since I would not know their names
# if any are found
############################################################
tsSourceDiag <- stl(tsSource,s.window="per", robust=TRUE)
#
tsSourceIO <- which(tsSourceDiag $ weights  < 1e-8)
#
# This is how to append run-time regessors
for(z in tsSourceIO) {
tmpname <-paste("PreIO",z,sep="")
#COPY EOM AS A TEMPLATE
sh2[[tmpname]] <- sh2[["EOM"]]
#SET IT ALL TO 0
sh2[[tmpname]][]<-FALSE
#SET The Proper Indice to TRUE
sh2[[tmpname]][z]<- TRUE
}


So to get rid of them (those empty useless regressors) I cooked up this:

###################################################
#Prune Empty Regressors (All false or all true)
# the newmcReg you see is a copy of the sh2 from earlier
# newmcReg = New Model Current Regressors
# sh2 later became cReg.
#
# Yes it makes my eyes bleed. in short we count all the trues
# and all the false and if they happen to be the same number
# as the length we know they are all true or false.
#
# the trick I finally found was that you could in fact -c()
# a list (e.g. ask for everything but the following) but you
# can't apparently do that inline so we just make a list of
# regressors that get shown the door then after hunting
# them down we give em the boot. This mess is soley
# so my in-sample Arima doesn't choke on xreg=newmcReg
# in which one of the newmcReg happen to be all true or false.
#
# God I wish I had taken more then a Trig course. Where was I?
#
# Yes that phantom 'i' you see is that this is all in a big loop
# for 6 possible models
# lm1 = all regressors w/ intercept
# lm2 = lm1 stepwise removal
# lm3 = all regressors wo/ intercept
# lm4 = lm3 stepwise removal
# lm5 = Hand Tuned
# lm6 = lm5 stepwise removal
###################################################
toPurge=c()
for(k in names(newmcReg[[i]])) {
 print (paste("check to see if",k,"is a useless regressors for model",i))
 if(sum(newmcReg[[i]][k][,1])==length(newmcReg[[i]][k][,1])) {
  print(paste("All of",k,"are TRUE"))
  getLost=which(names(newmcReg[[i]])==k)
  toPurge=c(toPurge,getLost)
  print(paste(k, "has been added to the purge list for model", i,"!"))
 }
 if(sum(newmcReg[[i]][k][,1]==FALSE)==length(newmcReg[[i]][k][,1])) {
  print(paste("All of",k,"are FALSE"))
  getLost=which(names(newmcReg[[i]])==k)
  toPurge=c(toPurge,getLost)
  print(paste(k, "has been added to the purge list for model", i,"!"))
 }
}
toPurge
# Do this only if there are any or R will beat you senseless and
# steal all your M&Ms!
if(length(toPurge)!=0) {
names(newmcReg[[i]])
names(newmcReg[[i]][-c(toPurge)])
newmcReg[[i]] <- newmcReg[[i]][-c(toPurge)]
newmfReg[[i]] <- newmfReg[[i]][-c(toPurge)]
names(newmcReg[[i]])
}
######################################################
# End Regressor Pruning
######################################################


Big thanks to the help so far. Now about those darn transfer functions...
hmm and pulse detection...

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to