Biogeme是一个开源Python包,用于一般参数模型的极大似然估计,特别是离散选择模型(logit模型、潜在分类模型等)。它依赖于Python语言中的Pandas数据分析模块。
Biogeme的安装方法有许多,主要为通过pip安装以及通过Anaconda进行安装,今天我来介绍运用Pycharm中软件包管理器来安装Biogeme。
打开Pycharm,点击【文件】→【设置】→【项目】→【Python解释器】进入解释器管理界面。如下图1所示:
进入管理界面点击“+”号,进入软件包管理界面,搜索“Biogeme”并进行安装,如下图2所示,等待安装完成即可:
在利用Biogeme标定参数时,我大致将过程分为五大步骤:
下面我们将以logit模型为例,分开来介绍每个步骤。该模型开发者文档见下方链接。其他模型的开发者文档也可查见,这里不多做赘述。
http://geme.epfl.ch/sphinx/models.html
在Biogeme中logit模型如下所示:
(代写文章:微信:13258028938)其中,a表示在本次选择中,该选项是否存在,在程序中我们用av表示;V表示广义费用公式。
第一步:加载Biogeme包,并读取数据,添加变量
利用import加载pandas和Biogeme,并用pandas中读取CSV文件的函数将数据存储进pandas数据结构中。而后利用biogeme.database.Database()方法将数据读入biogeme的数据库里,并根据每一列的列标题(第一行的信息)来命名全局变量。具体操作方式如下图3所示:
第二步:定义待求参数
在离散选择模型中,一般使用广义费用的概念,将费用、时间等影响因素通过一定的系数转化为广义费用,公式如下所示,x表示影响因素,β表示该影响因素的系数。对于不同的个人或群体来说,每项影响因素前系数的大小反映了他们对于该影响因素的敏感程度。因此我们需要根据所获得的数据来标定每项因素前的系数β和特征常数c。
于是在程序中,我们需要定义每项因子前的系数,如图4所示。其中,Beta()为定义参数的函数方法,即广义费用中的各影响因子前面的系数β。函数输入的第一项为影响因素x的名称,第二项为初值,第三项为下界,第四项为上界(无上下界的话可以用“None”),第五项表示该选择是否有特征常数c()。一般而言n个选择肢条件下有(代写文章:微信:13258028938)n-1项存在特征常量,有1项不存在特征常量:
第三步:定义广义费用公式
第三步就是要建立广义费用的公式。广义费用一般形式如下所示:
通过前面定义的各项参数β、常数项c以及变量名(注意:变量名在第一步中已经批量声明为全局global变量,无需再次定义。变量名称与CSV文件第一行的名称对应),建立各选项的广义费用如下图5:
第四步:将选项和广义费用公式建立对应关系,并选择离散选择模型建模
需要将结果列(选项一般用1、2、3、4……表示)、广义费用表达式与每个选项建立对应关系,如图6所示,av表示本次选择中是否存在该选项:
之后需要选择一个离散选择模型进行建模,这里我们使用logit模型,如图7所示,Results表示选择结果一列:
第五步:利用模型求解,并展示结果
以下代码可以直接应用,一般不用修改,如图8所示:
在标定完成后,结果一般储存在“mdata”网页文件中,这个名字可以在上述第五步中自定义。文件如图9所示:
点击打开,可以看到如下图10所示的报告。最需要注意的是“Rho-square-bar for the init. model”,该项表示调整后的拟合优度,一般在0.2~0.4之间,若不满足,一般需要更换模型或者更换影响因素。
之后需要分析每一项影响因素的有效程度,一般所用的评价指标为p值。 p值小于0.05,则表示该影响因素能显著影响最后的结果。结果如下图11所示,可以将p值大于0.05的影响因素去掉,再进行计算:(代写文章:微信:13258028938)
注意:β值十分接近于0的影响因素也可以去掉。
上述程序主要根据北交大“出行行为分析与建模”课程的演示程序修改而来。一方面笔者认为在科研生活中Biogeme软件包是一个十分有用的工具,需要记录下使用方法以备今后查看;另一方面笔者在运用上还不太熟练,只能照本宣科,这里抛砖引玉,希望有这方面的大佬能多多指导交流。
抖音账号:文章写作知识屋 代写文章微信:13258028938 抖音账号:文章写作知识屋