Package: wammodels
WAMMODELSLa libreria permite a los usuarios obtener combinaciones óptimas de variables y obtener resultados precisos de manera rápida y eficiente.Actualmente soporta:Busqueda de combinaciones optimasCreacion de descomposición manual.Instalacion:pip install wammodelsImportancion de Clases:Las clases que posee la libreria wammodels son:fromwammodels.global_funcimport*fromwammodels.combinationimportCombinationfromwammodels.descompimportDescompglobal_func: Clase que posee funciones que nos ayudara a la creacion de combinaciones y la creacion de nuestra descomposicion:adstock(list,adstock_rate)adbudg(list,rho=0,v=1,p=1,beta=1,alpha=0)creation_seasonalities(data,start_range)wmadstock_rate(*args):wmv(*args):wmrho(*args):wmdiff(*args):wmlag(*args):wmcoef(*args):wmcontrib(*args):wmcomb(*args):wmvar(*args):test_comb(comb):CombinationEn este ejemplo vamos a usar la claseCombinationpara obtener un modelo basado en una busqueda de combinaciones las cuales nosotros le estamos proporcionando:#Importamos nuestras clasesfromwammodels.global_funcimport*fromwammodels.combinationimportCombination#Creamos nuestra formulaformula=[[y],[data.INVN,wmcomb(wmadstock_rate(0.05,0.50,0.06),wmcoef("+"))],[data.INVR,wmcomb(wmadstock_rate(0.05),wmv(1.0,4.5,0.05),wmrho(4000,30000000,2000),wmcontrib(0.10,0.20))],[data.ENE,wmcomb(wmlag(1,4,2))],[data.FEB,wmcomb(wmdiff(1,4,2))],[data.MAR],]#Enviamos nuestra formula a nuestra claseget_combination=Combination(formula)get_combination.search_combinations()Explicacion:Creamos un array donde vamos a ingresar nuestras variables, comenzando con la variableY,
La variabledata.INVNy la variabledata.INVRle agregamos la funcionwmcombque es una funcion unica para la busqueda de combinaciones y dentro de esa funcion colocamos otras funciones como :wmadstock_rate: Como podemos observer en la funcion le indicamos 3 numeros ,(0.05,0.50,0.06)esto quiere decir que la variabledata.INVNno va a tener unwmadstock_ratefijo como la variabledata.INVRde lo contrario va a modificar los valores entre:min : 0.05 - max: 0.50 con saltos de 0.06wmv , wmrho: Estas 2 funciones se usan para obtener eladbudgsiempre se tienen que poner las 2 funciones, de lo contrario dara error. Como se puede observar usa el mismo metodo demin - max - saltoque la funcionwmadstock_ratewmcoef: Esta funcion se encarga en seleccionar la variable transformada cuando su coefciente sea positivowmcoef( "+")asi mismo le podemos indicar que sea negativowmcoef("-")wmcontrib:  Esta funcion usa un rango demin - maxindificando al algoritmo que cuando esa variable tenga una contribucion dentro de ese rango la dara como efectiva.wmlag y wmdiff: Estas 2 funciones usan el mismo metodo de la funcionwmadstock_rate,min - max - saltolo unico diferente es que sus valores son numeros enteros.Teniendo nuestra formula lista procedemos a enviar la formula a la claseCombination-Combination(formula)luego de enviar nuestra formula ejecutamos la funcionsearch_combinations()la cual es la encargada de buscar las combinaciones y el modelo perfecto basado en la formula que hicimos.Nota1: Las variables pueden tener valores fijos o con sus respectivos argumentos.Nota2: Siempre que deseemos agregar una de estas funciones tenemos que colocar la funcion wmcomb y dentro de esa funcion agregar las funciones mencionadas.Funcion search_combinations()Esta funcion permite ajustar nuestra busqueda con ciertos argumentos como son:max_comb / default = 1 :El algoritmo se detiene cuando tenga x cantidad de modelos perfectos basados en nuestra formula realizada.pvalor /default = 0.11:Nos ayuda a obtener los modelos que sus variables no superen el pvalor ingresadotime_stop default = None :Nos permite agregar un tiempo maximo de busqueda , cuando el tiempo llegue a su limite el algoritmo se detiene y dejara de buscar.method = "default":Esta variable es muy importante ya que nuestro algoritmo cuenta con 2 algoritmos de busqueda("default")y("cross")el default es recomendable cuando tenemos pocas variables no quiere decir que no funcione con una formula con muchas variables y combinaciones, Puede funcionar perfectamente. El metodo cross es un algoritmo de ** "Busqueda Random Combinacion Cruzada"** , este metodo es entrenado para que busque por sectores eso implica que el algoritmo sea mas ordenado a la hora de buscar combinaciones , el algoritmo cross cuenta con 6 subprocesos dado que tiene 6 subprocesos es recomendable darle como tiempo de busqueda un minimo de 30 minutos para formulas con muchas combinaciones y variables.Ejemplos:Ejemplo 1 :Usa el metodo"cross"Cuando encuentre3 combinacioneso llegue a30 minutosde busqueda se detenga, lo primero que suceda.get_combination=Combination(formula)get_combination.search_combinations(max_comb=3,method="cross",time_stop=60*30)Ejemplo 2:Usa el metodo"default"Cuando encuentre3 combinacionesy todas las variables tengan unpvalor <= 0.08se detenga.get_combination=Combination(formula)get_combination.search_combinations(max_comb=3,pvalor=0.08)Ejemplo 3:Usa el metodo"cross"Le estamos diciendo que todas las variables deben de tener unpvalor <= 0.20y que se detenga a cumplir los30 minutosget_combination=Combination(formula)get_combination.search_combinations(method="cross",time_stop=60*30,pvalor=0.20)Basado en esos ejemplos podemos jugar con las diferentes variables como son el method , time_stop, pvalor y max_comb dependiendo nuestra necesidad.Funcion get_var_all()Esta funcion se usara una ves terminada la busqueda y permite obtener las combinaciones que nuestro algoritmo encontroget_combination=Combination(formula_comb)get_combination.search_combinations(max_comb=3,method="cross")get_combination.get_var_all(0)Cuando ejecutamos esta funcion nos mostrara como resultado 2 dataframe, el valor 0 dentro de la funcion get_var_all(0) es la combinacion que queremos obtener. Si colocamos 1 nos traera la siguiente combinacion.El primer dataframe mostrara el R2 ajustado y el DurbinEl segundo nos mostrara un dataframe indicando que combinaciones encontro y agregando los valores decontribucion,coefypvalor(La imagen muestra una combinacion de una formula que tenia 18 variables.)Si a nuestra funcionget_var_all()le agregamos la variabletable="df"nos mostrara un dataframe diferenteget_combination=Combination(formula_comb)get_combination.search_combinations(max_comb=3)get_combination.get_var_all(0,table="df")