施於人,楊 曉,楊慧潔
(重慶理工大學(xué) 工程訓(xùn)練與經(jīng)管實驗中心,重慶 400054)
2017年塞勒因其在行為經(jīng)濟學(xué)領(lǐng)域的貢獻獲得諾貝爾經(jīng)濟學(xué)獎,標(biāo)志著開啟了經(jīng)濟學(xué)研究全新的詮釋范式。行為經(jīng)濟學(xué)和實驗經(jīng)濟學(xué)是密切相關(guān)的經(jīng)濟學(xué)分支。行為經(jīng)濟學(xué)研究往往需要采用實驗方法研究經(jīng)濟社會問題,實驗的設(shè)計、開展是研究者們在研究過程中的必要環(huán)節(jié)和手段。
過去的三四十年中,史密斯(Vernon Smith)、澤爾騰(Reinhard Selten)、普洛特(Charles Plott)等在經(jīng)濟學(xué)實驗的開展、規(guī)范等領(lǐng)域做了大量的研究工作,其研究成果告訴人們采用實驗來研究問題所應(yīng)遵循的基本原則、范式,應(yīng)用方面的研究成果也不斷涌現(xiàn)。國內(nèi)對于實驗方法在社會科學(xué)領(lǐng)域的應(yīng)用也有討論和研究[1-3]。
實驗方法已經(jīng)開始被廣泛應(yīng)用于社會科學(xué)的研究,如會計[4]、市場營銷[5]、公共物品[6]等領(lǐng)域。大部分的研究,實驗的參與者都是來自高校的大學(xué)生,如連洪泉等[7-8]開展的公共品供給研究,汪思綺、陳穎等[9-10]進行的信任博弈研究。它們也常常被用于課堂教學(xué),如H.Holm、P.Nystedt[11]在瑞典Linkoping大學(xué)進行的信任博弈實驗,劉文燕等[12]開展完全競爭市場和完全壟斷市場的實驗。但目前國內(nèi)外研究者在開展研究、教學(xué)的過程中,所使用的實驗平臺或工具并不能完全滿足研究中“便捷、快速、高效”構(gòu)建模型以及方便地滿足其他研究者復(fù)現(xiàn)、共享這些實驗的需求。
最早期開展的實驗研究,不論是張伯倫(Chamberlin)的供給與需求實驗,還是史密斯(Vernon Smith)提煉總結(jié)開展經(jīng)濟學(xué)實驗應(yīng)遵循的實驗設(shè)計五大原則,都主要依賴于紙、筆、撲克牌等工具。
隨著信息技術(shù)的不斷發(fā)展和實驗方法的改進,研究者們開始采用一些通用開發(fā)工具來設(shè)計所需要進行的實驗,如C++、VB。采用通用開發(fā)平臺自己編寫代碼,對于從事經(jīng)濟學(xué)實驗研究的人來說,這并不是一個具備“比較優(yōu)勢”的選擇,且通用開發(fā)平臺不是專為經(jīng)濟學(xué)實驗?zāi)P烷_發(fā)設(shè)計的,在實驗設(shè)計方面效率不高。
Charles Plott等[13]采用Python、.net等開發(fā)工具,建設(shè)了可在線開展實驗的網(wǎng)站,如Veconlab,網(wǎng)站提供了部分經(jīng)典實驗?zāi)P停捎糜谶M行在線實驗教學(xué),但網(wǎng)站無法滿足自定義實驗的設(shè)計、開發(fā),也無法進行自定義實驗的調(diào)試、變更以及定制實驗流程和參數(shù)。
當(dāng)前最常用的開發(fā)工具是1998年由瑞士蘇黎世大學(xué)Fischbacher等使用C++語言設(shè)計研發(fā)的z-Tree,如李賓等[14]在教學(xué)科研中使用的開發(fā)工具。此外,2017年MIT的Daniel Chen等開發(fā)了允許用戶可以創(chuàng)建基于B/S模式的設(shè)計開發(fā)工具——oTree。它們在一定程度上幫助研究者解決了自主設(shè)計實驗的問題,使得研究者能使用相對簡單的程序語句,而不是完全由計算機專業(yè)人員才能使用的開發(fā)語言來完成一個實驗?zāi)P偷脑O(shè)計,并能相對容易地部署、運行,但仍然具有一定的局限性:
1)z-Tree、Otree雖然降低了研究者所需要掌握計算機開發(fā)能力的門檻,但對于完全不熟悉計算機開發(fā)、編程、調(diào)試的研究者而言,它還是相對復(fù)雜。z-Tree內(nèi)嵌的編程語言為C++,oTree則為
Python。
2)z-Tree的主體結(jié)構(gòu)仍基于20世紀(jì)90年代末期的開發(fā)工具所提供,其在運行過程控制、通訊穩(wěn)定性、容錯以及易用性等方面落后于目前開發(fā)工具、組件所能提供的功能。對zTree使用者而言,更無法解決源開發(fā)工具本身所導(dǎo)致的功能缺陷。oTree則需要研究者完成實驗設(shè)計后獨立安裝部署,才能提供互聯(lián)網(wǎng)模式的訪問方式。
3)其他研究者如果想重復(fù)實驗,同樣需要掌握z-Tree、oTree的開發(fā)、調(diào)試技能,才能復(fù)現(xiàn)這些實驗,來完成對研究成果的檢驗。
因此,開發(fā)一種基于云模式的,能為從事實驗經(jīng)濟學(xué)、行為經(jīng)濟學(xué)的研究、教學(xué)人員提供一個可視化、易建模、能復(fù)用的實驗建模開發(fā)工具(后文以“BeTools”指代)是一個現(xiàn)實的需求。從實際應(yīng)用角度看,這類在線開發(fā)工具的實現(xiàn)也具有重要意義及可行性[15]。
云模式是目前許多軟件使用的新型開發(fā)、運行、使用模式,其應(yīng)用領(lǐng)域日益廣泛,如政務(wù)[16]、教育[17]等。在云模式的含義主要在3個層面,即:
IaaS(基礎(chǔ)架構(gòu)即服務(wù))。任何一個系統(tǒng)使用都需要安裝到一定的硬件設(shè)備中,使用必須的操作系統(tǒng)、磁盤存儲和訪問帶寬。對Iaas服務(wù)模式也有要求[18],目前這部分服務(wù),可通過付費給提供云服務(wù)的服務(wù)商,如阿里、華為等即可獲得。
PaaS(平臺即服務(wù))。PaaS提供了基礎(chǔ)架構(gòu),開發(fā)者可以在這個基礎(chǔ)架構(gòu)之上建設(shè)新的應(yīng)用或者擴展已有的應(yīng)用,同時卻不必購買開發(fā)質(zhì)量控制或生產(chǎn)服務(wù)器。例如微軟的Azure(主要用途為計算服務(wù)、數(shù)據(jù)存儲服務(wù))、Amazon、Google。PaaS的架構(gòu)[19]、運作模式[20]也有討論,不過仍不是本文所關(guān)注的,工具開發(fā)者可以通過采用提供類似功能的開源軟件或付費獲得所需的功能服務(wù)。
SaaS(軟件即服務(wù))。SaaS是一種通過互聯(lián)網(wǎng)絡(luò)提供軟件的模式,最終用戶無需購買軟件,而是直接使用提供商基于Web的軟件來完成所需的各項工作和功能。可以將它理解為一種軟件分布模式,在這種模式下,應(yīng)用軟件安裝在云端,用戶可以通過網(wǎng)絡(luò)來使用這些軟件。在這種模式下,提供商在軟件開發(fā)過程中需采用符合這種運行模式的軟件架構(gòu)和部署方式進行開發(fā)和部署。
BeTools工具屬于這一模式中的SaaS,工具的使用、運行,除了BeTools應(yīng)該具備提供的各項功能外,還必須包括IaaS、PaaS服務(wù)商的選擇、維護等必須的基礎(chǔ)設(shè)施和架構(gòu)。同時,SaaS方在提供最終應(yīng)用時,為獲得完整的云運行模式,工具的開發(fā)設(shè)計需要采用符合“云”模式的架構(gòu)和部署方式。
實驗/行為經(jīng)濟學(xué)實驗是經(jīng)濟學(xué)研究者(主持者)在挑選的受試者對象參與下,按照一定的實際規(guī)則并給以一定的物質(zhì)報酬,以仿真方法創(chuàng)造與實際經(jīng)濟相似的一種實驗環(huán)境,不斷改變實驗參數(shù),對得到的實驗數(shù)據(jù)分析整理加工,用以檢驗已有的經(jīng)濟理論及其前提假設(shè)或者發(fā)現(xiàn)新的理論,又或者為一些決策提供理論分析的研究性實驗。實驗均為回合制,在一個回合決策過程中,部分實驗會采用“實時”方式進行決策,基本流程見圖1。

圖1 實驗/行為經(jīng)濟學(xué)實驗的基本流程
設(shè)定角色和實驗參數(shù)。用來規(guī)定實驗環(huán)境,即受試者在什么樣的環(huán)境下完成決策。角色是指參與實驗的受試者是具備相同的實驗屬性還是具備不同的實驗屬性。
受試者分組/匹配。主持者將所有參與實驗的受試者根據(jù)隨機或者固定匹配的方式分成若干組,分組和匹配方式會影響受試者的決策策略。
受試者決策。受試者收到主持者的開始實驗指令后,根據(jù)實驗規(guī)則進行實驗決策。
計算實驗結(jié)果。每輪實驗完成后,系統(tǒng)根據(jù)實驗參數(shù)、受試者決策行為等數(shù)據(jù)參照特定的模型算法完成計算。
根據(jù)角色和每個角色受試者決策次數(shù)、決策順序及決策影響關(guān)系,可以對實驗進行如下分類,見表1。其中:并發(fā)決策是指受試者在實驗過程中同時提交決策;順序決策是指受試者在實驗過程中先后提交決策;實時決策是指實驗過程中,只要當(dāng)前輪次未結(jié)束,受試者可以隨時、反復(fù)、多次提交決策。

表1 實驗/行為經(jīng)濟學(xué)實驗?zāi)P偷姆诸?/p>
BeTools的設(shè)計理念是分層設(shè)計,服務(wù)是模塊化的。在Betools中,根據(jù)提供功能的公共、共用屬性,將功能細(xì)分為基礎(chǔ)層、平臺層和應(yīng)用層。基礎(chǔ)層提供基本功能需求支撐,如通信服務(wù)、邏輯服務(wù)、數(shù)據(jù)服務(wù)等功能需求;平臺層提供共用函數(shù)及公共服務(wù);應(yīng)用層給出模型開發(fā)功能,并將模型設(shè)計后部署、開展實驗的部分(在線實驗系統(tǒng))獨立出來,一體化解決“實驗?zāi)P驮O(shè)計—部署—開展”所有環(huán)節(jié),總體架構(gòu)如圖2所示。

圖2 實驗開發(fā)工具(BeTools)系統(tǒng)架構(gòu)
基礎(chǔ)層各類組件采用第三方公司提供,它們需要被合理地選型、部署。
MySQL數(shù)據(jù)庫提供數(shù)據(jù)存儲和管理服務(wù)。
RabbitMQ提供消息隊列服務(wù),用于保證實驗過程少掉線、少斷線。此外,因為它具備集群方式部署模式,可以實現(xiàn)各微服務(wù)之間的消息異步,系統(tǒng)可以將實驗過程中數(shù)據(jù)的持久化存儲操作提取出來進行異步處理,這將大大節(jié)省服務(wù)器的請求響應(yīng)時間,最終保證在相同數(shù)量的受試者參與實驗時能提供更高的數(shù)據(jù)交換穩(wěn)定性。
通信技術(shù)SingalR集成了數(shù)種常見的消息傳輸方式,如long polling、WebScoket,并提供相應(yīng)的Api供開發(fā)人員選擇如何調(diào)用,幫助其快速地實現(xiàn)客戶端與服務(wù)器端相互間的實時通信。它使得實驗進行中主持者和受試者可以及時交換信息,保障在線實驗的流暢性。
選擇Redis與KV存儲(RocksDB)相融合,以取代常用的關(guān)系型數(shù)據(jù)庫。由于每個實驗在參數(shù)數(shù)據(jù)、決策數(shù)據(jù)、結(jié)果數(shù)據(jù)等方面差異明顯,相比關(guān)系型數(shù)據(jù)庫,這樣組合可以提高Betools組件的靈活性以及提高實驗過程數(shù)據(jù)高頻讀寫的速度。
邏輯服務(wù)提供用戶自定義模型算法。采用以Python為腳本語言進行研發(fā)設(shè)計,為研究者提供“傻瓜式”用戶自定義計算邏輯入口。
平臺層及應(yīng)用層功能則根據(jù)本文所描述的功能需求進行設(shè)計。
基于云模式的經(jīng)濟學(xué)實驗開發(fā)工具的主要目的是滿足研究者能方便、快捷地構(gòu)建實驗?zāi)P统绦颍焖俨渴痖_展實驗,收集實驗數(shù)據(jù)。完成的實驗?zāi)P湍芊奖愕乇恢貜?fù)使用。在功能設(shè)計上,其具備如下特點:
1)模板化。提供“模板”方式構(gòu)建實驗?zāi)P汀<锤鶕?jù)實驗角色、受試者決策特征,選擇一類模板,可自動生成完成該類實驗的整體流程和框架,實驗設(shè)計者只需要對模板中各環(huán)節(jié)進行微調(diào)、修改,即可完成實驗?zāi)P蜆?gòu)建。如圖3。

圖3 BeTools提供的設(shè)計模板
2)界面設(shè)計“所見即所得”。摒棄界面設(shè)計采用數(shù)值定位、屏幕區(qū)塊分隔的控制形式,在實驗者、受試者使用的用戶交互界面,采用“組件庫”+“拖曳”的方式完成。
3)流程控制圖形化。對于實驗過程中受試者的決策行為、實驗過程控制、結(jié)果計算采用流程的方式進行顯示和控制,實驗設(shè)計者通過定義流程節(jié)點、流程走向,而不是代碼方式來控制實驗流程,以解決不同實驗流程的多樣性及受試者決策行為多樣性的實驗設(shè)計需求。
4)計算邏輯圖形化。實驗過程中計算邏輯的實現(xiàn),結(jié)合流程控制、圖形控制的方式進行。從工具實現(xiàn)角度看,計算邏輯的實現(xiàn)形式包括編程語言、偽代碼、自然語言、流程圖等。編程語言計算機可以識別,但是對于最終用戶而言難度大,表述困難。偽代碼和自然語言容易解讀,但是難以形成規(guī)范化表述,容易形成歧義,無法滿足算法定義的要求。流程圖是以圖形的形式表述算法,一方面清晰明了容易解讀,另一方面在實現(xiàn)上容易規(guī)范,且實驗開發(fā)工具本身需要提供流程定義和控制,因此計算邏輯部分可借助流程圖的形式來完成。在控制過程中,將數(shù)據(jù)、運算符號、控制語句等以標(biāo)簽的形式進行顯示,采用標(biāo)簽形式代表程序中一個語法或控制。用戶通過標(biāo)簽組合形成計算邏輯的算法流程,各類變量以“標(biāo)簽”的方式提供使用,計算過程通過“拖曳”計算符、變量標(biāo)簽、流程控制標(biāo)簽,組合成“計算式”,完成計算邏輯。系統(tǒng)根據(jù)標(biāo)簽將計算邏輯轉(zhuǎn)換成對應(yīng)的編程語言控制,形成計算機可以識別的算法。
5)云模式。提供實驗數(shù)據(jù)的Excel格式導(dǎo)出以及在線發(fā)布、使用。使得研究者設(shè)計的實驗?zāi)P涂梢砸绘I式在線“共享”模型和實驗過程數(shù)據(jù),以便于其他研究者復(fù)用、驗證。
同現(xiàn)有的實驗?zāi)P烷_發(fā)工具相比,BeTools具備如下功能特點,BeTools在α測試階段的使用情況表明:在模型設(shè)計及實驗開展效率上,較zTree、oTree有明顯提高,在模型、實驗數(shù)據(jù)的重復(fù)使用和共享方面,優(yōu)勢明顯:
1)開發(fā)工具的學(xué)習(xí)掌握。時間從zTree、oTree需要的約2~4周縮減到1~3 d(有一定編程基礎(chǔ)),或從1~3個月縮減到3~5 d(無編程基礎(chǔ))。
2)模型設(shè)計。周期從zTree、oTree所需的2~3周縮減到1~3 d。
3)模型部署、開展實驗。周期從zTree、oTree所需的2~3 d變?yōu)樵O(shè)計完成即可實驗。
4)模型復(fù)用及實驗共享。從每次復(fù)用均需在新環(huán)境中重新調(diào)試,變?yōu)橐绘I設(shè)定即可生效。
主要實驗?zāi)P烷_發(fā)工具功能對比見表2。

表2 主要實驗?zāi)P烷_發(fā)工具功能對比
在行為經(jīng)濟學(xué)及實驗方法可能成為現(xiàn)有經(jīng)濟學(xué)研究替代范式的今天,“趁手”的實驗?zāi)P驮O(shè)計、實驗工具是在這一研究領(lǐng)域快速發(fā)展的必需品。在BeTools的設(shè)計、開發(fā)與實現(xiàn)中堅持“云模式、模塊化、圖形化”的需求導(dǎo)向,通過“云模式”,解決了模型升級、部署、共享、復(fù)用的需求,通過“模塊化、圖形化”,降低使用者設(shè)計開發(fā)模型的計算機能力門檻,提高設(shè)計效率,能極大提高研究者開展實驗研究的工作成效。當(dāng)然,在系統(tǒng)的易用性、可操作性方面,還有很多值得改進和提升的空間。