Matlab的glmfit
在哪些方面的实现方式与Python statsmodels'GLM.fit()
不同?
以下是我的数据集结果的比较: 这表示从运行GLM适合生成的图209权重:
V
:( 100000,209)预测变量(设计矩阵)
y
:( 100000,1)响应变量
平方误差总和:18.140615678
为什么这些不同?首先,这是Matlab中的一个具体示例:
yin = horzcat(y,ones(size(y)));
[weights_mat, d0, st0]=glmfit(V, yin,'binomial','probit','off',[],[],'off');
让我们尝试Python中的等价物:
import statsmodels.api as sm
## set up GLM
y = np.concatenate((y, np.ones( [len(y),1] )), axis=1)
sm_probit_Link = sm.genmod.families.links.probit
glm_binom = sm.GLM(sm.add_constant(y), sm.add_constant(V_design_matrix), family=sm.families.Binomial(link=sm_probit_Link))
# statsmodels.GLM format: glm_binom = sm.GLM(data.endog, data.exog, family)
## Run GLM fit
glm_result = glm_binom.fit()
weights_py = glm_result.params
## Compare the difference
weights_mat_import = Matpy.get_output('w_output.mat', 'weights_mat') # imports matlab variables
print SSE(weights_mat_import, weights_python)
matlab中的glmfit:
[b,dev,stats] = glmfit(X,y,distr)
用Python(documentation)设置GLM.fit():
glm_model = sm.GLM(endog, exog, family=None, offset=None, exposure=None, missing='none', **kwargs)
glm_model.fit(start_params=None, maxiter=100, method='IRLS', tol=1e-08, scale=None, cov_type='nonrobust', cov_kwds=None, use_t=None, **kwargs)
我们如何使用Statsmodels获取Matlab glmfit
结果?
谢谢!