用阶乘函数factorial()求排列组合之和

时间:2022-09-08 21:33:39

前段时间要做一个模型,初始的解释变量有90个(不含因变量),需要给客户讲解我们的模型思路。

在谈到这个模型的缺点时,我说我们做了一个计算上的妥协,并没有计算所有解释变量的组合所构成的模型(Greedy research 如果没记错的话,这是机器学习里的一个说法)。

客户问,为什么不尝试计算所有可能性呢,那样不是可以更直接的得出一个结果吗?

于是我写了一个小function,用于计算所有可能性的计算量。


理论基础是排列组合。不排序的情况下,从m个元素里抽取其中n个的组合量是m!/[(m-n)!*n!]

那么90个自变量可能构成的模型组合数量有用阶乘函数factorial()求排列组合之和个。

依据这个,以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的范围设置为数字向量,这样可以实现更多的自定义。