听起来您没有
X向两个过程提供相同的回归矩阵(但请参见下文)。这是一个示例,向您显示需要为sklearn和statsmodel使用哪些选项才能产生相同的结果。
import numpy as npimport statsmodels.api as smfrom sklearn.linear_model import LinearRegression# Generate artificial data (2 regressors + constant)nobs = 100 X = np.random.random((nobs, 2)) X = sm.add_constant(X)beta = [1, .1, .5] e = np.random.random(nobs)y = np.dot(X, beta) + e# Fit regression modelsm.OLS(y, X).fit().params>> array([ 1.4507724 , 0.08612654, 0.60129898])LinearRegression(fit_intercept=False).fit(X, y).coef_>> array([ 1.4507724 , 0.08612654, 0.60129898])
正如评论者所建议的那样,即使您给两个程序相同的X,X可能也没有完整的列排名,并且它们的sm /
sk可能在后台采取了(不同的)动作来使OLS计算得以通过(即删除不同的列)。
我建议您使用
pandas并
patsy注意以下事项:
import pandas as pdfrom patsy import dmatricesdat = pd.read_csv('wow.csv')y, X = dmatrices('levels ~ week + character + guild', data=dat)
或者,可以使用
statsmodels公式界面:
import statsmodels.formula.api as smfdat = pd.read_csv('wow.csv')mod = smf.ols('levels ~ week + character + guild', data=dat).fit()
编辑:此示例可能有用:http
:
//statsmodels.sourceforge.net/devel/example_formulas.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)