前段时间要做一个模型,初始的解释变量有90个(不含因变量),需要给客户讲解我们的模型思路。
在谈到这个模型的缺点时,我说我们做了一个计算上的妥协,并没有计算所有解释变量的组合所构成的模型(Greedy research 如果没记错的话,这是机器学习里的一个说法)。
客户问,为什么不尝试计算所有可能性呢,那样不是可以更直接的得出一个结果吗?
于是我写了一个小function,用于计算所有可能性的计算量。
理论基础是排列组合。不排序的情况下,从m个元素里抽取其中n个的组合量是m!/[(m-n)!*n!]
那么90个自变量可能构成的模型组合数量有个。
依据这个,以R自带的阶乘函数factorial()为基础来写自定义函数:
model.quant<-function(){ summy<-0 for (i in 1:90){ a <- factorial(90)/(factorial(90-i)*factorial(i)) #m!/[(m-n)!*n!] summy<-summy+a } print(summy) }
此处没有设置参数,可将i的范围设置为数字向量,这样可以实现更多的自定义。