微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在pyomo中使用mle进行参数估计

如何解决在pyomo中使用mle进行参数估计

我想使用 pyomo 从行为数据集估计 RL 模型的参数。

#dummy data
dis_data =  pd.DataFrame([0,1,1],columns=['reward'])
dis_data['Expt']=str(1)
dis_data = dis_data.set_index('Expt')


def max_likelihood_four(x,data):
    lr=x.lr
    sigma=x.sigma
    time = data.shape[0]
    v = np.zeros(([2,time]))
    pr = np.zeros(([2,time]))+0.5
    pr_log = np.zeros(([time]))

    for t in range(time-1):

        pr[1,t] =  1 / (1 + np.exp(-(v[1,t] - v[0,t])/ sigma))
        pr[0,t] = 1-pr[1,t]

        outcome=int(data.ix[t,'reward'])
        v[choice,t + 1] = v[choice,t] + lr * (outcome - v[choice,t])
        v[1 - choice,t + 1] = v[1 - choice,t]

        pr_log[t] = np.log(pr[choice,t])
        # print(i)
    return -np.sum(pr_log)
def pyomo_fit1(df):

    mdl = ConcreteModel()
    mdl.lr    = Var(initialize=np.random.random(1),bounds=(0,1))
    mdl.sigma = Var(initialize=np.random.random(1),10))

    
    residuals = max_likelihood_four(mdl,df)

    mdl.obj = Objective(expr=residulas,sense=minimize)
    SolverFactory('ipopt').solve(mdl)
    return [mdl.lr,mdl.sigma]

parameter_values_1,r1 = pyomo_fit1(dis_data)

我收到此错误

“无法将标量组件 'sigma' 视为索引组件”

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。