L-V模型的參數(shù)計(jì)算

??L-V模型的全稱(chēng)為L(zhǎng)otka-Volterra模型,其本質(zhì)為借鑒生物種群理論,對(duì)可以抽象為種群的事物之間的競(jìng)爭(zhēng)與合作關(guān)系進(jìn)行量化研究,在學(xué)術(shù)研究中比較常應(yīng)用,原理不是本文研究重點(diǎn),如需要弄懂原理建議各位去知網(wǎng)查看相關(guān)文章。目前并沒(méi)有哪個(gè)工具可以提供快速方便的L-V模型參數(shù)計(jì)算包,因此很多研究者在采用這個(gè)模型后參數(shù)的計(jì)算成為一個(gè)大問(wèn)題,筆者結(jié)合目前最熱門(mén)的語(yǔ)言之一python給出了L-V模型參數(shù)的計(jì)算方法,只要修改讀入文件的路徑就可以計(jì)算出相關(guān)的參數(shù),代碼可以粘貼復(fù)制直接使用,希望對(duì)于一些出入門(mén)的研究者有所幫助。代碼如下:

import pandas as pd#沒(méi)有這個(gè)包 pip install安裝
import numpy as np#同上
a=pd.read_csv('/Users/elliot/Desktop/container.csv',encoding='gbk')#路徑可以修改,具體應(yīng)用時(shí)改為你的基礎(chǔ)數(shù)據(jù)存放位置。
a=a.set_index(['時(shí)間'])
listofa=np.array(a)

#一級(jí)差分的計(jì)算函數(shù),實(shí)際上對(duì)于數(shù)據(jù)分析行業(yè)從業(yè)者,也可以用此計(jì)算環(huán)比增長(zhǎng)。當(dāng)然熟練pandas的看官,可以很方便的用pandas進(jìn)行計(jì)算。
def llcha(x):
    n = len(x)
    y=[]
    for i in range(n-1):
        y.append(x[i+1] - x[i])
    return y
#y = llcha(listofa[:,0])

#計(jì)算中位值,對(duì)于灰色預(yù)測(cè),這個(gè)函數(shù)也是可以使用的。
def llmid(x):
    m,n = np.shape(x)
    ytmp = np.zeros((n,m-1))
    for i in range(n):
       for j in range(m-1):
           ytmp[i,j] = (x[j,i]+x[j+1,i])/2 
    return ytmp  

#權(quán)重計(jì)算函數(shù),key控制計(jì)算位置,與L-V計(jì)算公式本身特征有關(guān)
def weights(ytmp,key):
    m,n = np.shape(ytmp)
    weights = np.zeros((n,m))
    for i in range(n):     
            weights[i,0] = ytmp[key,i]
            for j in range(1,m):
                if j < key:
                    weights[i,j] = ytmp[key,i] * ytmp[j-1,i]
                elif j >= key:
                    weights[i,j] = ytmp[key,i] * ytmp[j,i]
    return weights

#參數(shù)計(jì)算函數(shù),采用了最小二乘法
def optcanshu(x):
    ytmp = llmid(x)
    n = np.shape(x)[1]
    canshuset=[]
    for i in range(n):
        yn = llcha(x[:,i])
        yn = np.mat(yn)
        weightstest = weights(ytmp,i)
#       print(weightstest)
        weightstest = np.mat(weightstest)
        canshu = (weightstest.T * weightstest).I*weightstest.T*yn.T
        #最小二乘法推導(dǎo)到最后就是這個(gè)公式,其實(shí)線(xiàn)形回歸參數(shù)求解也用的這個(gè)公式。
        #print(canshu)
        canshuset.append(canshu)
    return canshuset

#輸出最終的參數(shù)值
canshuset = optcanshu(listofa) 
#在annaconda的spyder中這個(gè)可以以變量的形式保存,類(lèi)似于matlab,所以推薦使用。同時(shí)也推薦jupyter作為腳本編輯器。
#ytmp = llmid(listofa)
#weight1 = weights(ytmp,2)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在C語(yǔ)言中,五種基本數(shù)據(jù)類(lèi)型存儲(chǔ)空間長(zhǎng)度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來(lái)閱讀 4,032評(píng)論 0 2
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,142評(píng)論 0 2
  • 靈感是個(gè)很殘酷的東西,它就像你打游戲掉落的稀有裝備,你眼下不趕緊撿起來(lái),掉線(xiàn)以后,再爆到它的概率微乎其微。 怎么說(shuō)...
    我是魚(yú)嗶嗶閱讀 382評(píng)論 -1 0
  • “ 涼風(fēng)有信,秋葉無(wú)邊,虧我碼字的心情好比度日如年,雖然我不是文科出生,文筆一流,可是我有愛(ài)思考的大腦,和超好用的...
    職也閱讀 598評(píng)論 2 1
  • 【導(dǎo)圖解說(shuō)】這張圖是把分析及boIs的應(yīng)用合成一起。這是我畫(huà)的第70張圖。通過(guò)70幅導(dǎo)圖的訓(xùn)練,讓自己深深的體驗(yàn)到...
    亞洲高手閱讀 386評(píng)論 2 2

友情鏈接更多精彩內(nèi)容