编辑过的

如何使用Python中的广义矩方法找出OpTim_METHOD=‘’的选项?我的一位同事告诉我,单纯形法对我的问题有好处.如何找到它的名称以及其他可用优化器方法的名称?当我放入‘Simex’时,我得到一个错误‘ValueError:Optimizer方法不可用’.

import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.sandbox.regression.gmm import GMM

rand_array = np.random.rand(150, 7)
yvar=rand_array[:, [0,1]]
zvar=rand_array[:, [2,3,4]]
xvar=rand_array[:, [5,6]]
xvar=sm.add_constant(xvar)

class GMMREM (GMM):

    def momcond(self, params):
        b0, b1, b2, b3, b4,m0, m1, m2, m3 = params
        x = self.exog
        z = self.instrument
        y=  self.endog

        error1 = x[:,0]*(y[:,0]-b0-b1*y[:,1]-b2*z[:,0]-b3*z[:,1]-b4*x[:,1])
        error2 = y[:,1]*(y[:,0]-b0-b1*y[:,1]-b2*z[:,0]-b3*z[:,1]-b4*x[:,1])
        error3 = z[:,0]*(y[:,0]-b0-b1*y[:,1]-b2*z[:,0]-b3*z[:,1]-b4*x[:,1])
        error4 = z[:,1]*(y[:,0]-b0-b1*y[:,1]-b2*z[:,0]-b3*z[:,1]-b4*x[:,1])
        error5 = x[:,1]*(y[:,0]-b0-b1*y[:,1]-b2*z[:,0]-b3*z[:,1]-b4*x[:,1])

        error6= z[:,2]*(y[:,0]-b0-b1*y[:,1]-b2*z[:,0]-b3*z[:,1])

        error7 = x[:,0]*(y[:,1]-m0-m1*y[:,0]-m2*z[:,2]-m3*x[:,1])
        error8 = y[:,0]*(y[:,1]-m0-m1*y[:,0]-m2*z[:,2]-m3*x[:,1])
        error9 = z[:,2]*(y[:,1]-m0-m1*y[:,0]-m2*z[:,2]-m3*x[:,1])
        error10= x[:,1]*(y[:,1]-m0-m1*y[:,0]-m2*z[:,2]-m3*x[:,1])
   
        error11 = z[:,0]*(y[:,1]-m0-m1*y[:,0]-m2*z[:,2])-m3*x[:,1]
        error12= z[:,1]*(y[:,1]-m0-m1*y[:,0]-m2*z[:,2])-m3*x[:,1]
    
        return np.column_stack((error1, error2, error3, error4, error5, error6, error7, error8, error9, error10, error11, error12))

model1 = GMMREM(yvar, xvar, zvar, k_moms=12, k_params=9)
b0 = [.01, .08, -.02, 0, 0,.01, 1.7, .05, 0]
res1 = model1.fit(b0, maxiter=100, optim_method='simplex', wargs=dict(centered=False))
print(res1.summary())

推荐答案

Only a selection of scipy optimizers are available in GMM fit.
Here is the list in the code https://github.com/statsmodels/statsmodels/blob/main/statsmodels/sandbox/regression/gmm.py#L738

GMM.fit不经历继承的LikelihoodModel.fit,因此并不是所有的Scipy优化器都可用.

注: Generic GMM需要一个用于平滑函数的通用非线性优化器,可在scipy.Optimize中找到. 只有线性模型LinearIVGMM的GMM有一种特殊的fit方法,它使用线性代数作为显式解.

Python相关问答推荐

如何终止带有队列的Python进程?+ 队列大小的错误?

拆分pandas列并创建包含这些拆分值计数的新列

比较两个二元组列表,NP.isin

我在使用fill_between()将最大和最小带应用到我的图表中时遇到问题

带条件计算最小值

海运图:调整行和列标签

如何使用根据其他值相似的列从列表中获取的中间值填充空NaN数据

从一个系列创建一个Dataframe,特别是如何重命名其中的列(例如:使用NAs/NaN)

删除marplotlib条形图上的底边

计算天数

使用Python查找、替换和调整PDF中的图像'

在用于Python的Bokeh包中设置按钮的样式

BeautifulSoup-Screper有时运行得很好,很健壮--但有时它失败了::可能这里需要一些更多的异常处理?

Pandas 数据帧中的枚举,不能在枚举列上执行GROUP BY吗?

如何使用matplotlib查看并列直方图

浏览超过10k页获取数据,解析:欧洲搜索服务:从欧盟站点收集机会的微小刮刀&

如何写一个polars birame到DuckDB

Pythonquests.get(Url)返回Colab中的空内容

上传文件并使用Panda打开时的Flask 问题

递归链表反转与打印语句挂起