我在Mac OSX Lion上使用pandas 0.11.0(数据处理)进行逻辑回归并statsmodels 0.4.3进行实际回归.
我将运行~2,900种不同的逻辑回归模型,需要将结果输出到csv文件并以特定方式格式化.
目前,我只知道做了print result.summary()哪些打印结果(如下)到shell:
Logit Regression Results
==============================================================================
Dep. Variable: death_death No. Observations: 9752
Model: Logit Df Residuals: 9747
Method: MLE Df Model: 4
Date: Wed, 22 May 2013 Pseudo R-squ.: -0.02672
Time: 22:15:05 Log-Likelihood: -5806.9
converged: True LL-Null: -5655.8
LLR p-value: 1.000
===============================================================================
coef std err z P>|z| [95.0% Conf. Int.]
-------------------------------------------------------------------------------
age_age5064 -0.1999 0.055 -3.619 0.000 -0.308 -0.092
age_age6574 -0.2553 0.053 -4.847 0.000 -0.359 -0.152
sex_female -0.2515 0.044 …Run Code Online (Sandbox Code Playgroud) 我一直在深入研究API,并且已经找到了如何检索不同类型的异方差校正标准误差(通过属性等等)但是,我无法弄清楚如何获得系数的t-测试使用这些更正的标准错误.有没有办法在API中执行此操作,还是必须手动执行此操作?如果是后者,您是否可以就如何使用statsmodels结果建议任何指导? statsmodels.regression.linear_model.RegressionResultsHC0_se
我正在使用 Anaconda 并且我正在尝试逻辑回归。加载训练数据集并执行回归后。然后我收到以下警告消息。
train_cols = data.columns[1:]
logit = sm.Logit(data['harmful'], data[train_cols])
result = logit.fit()
Warning: Maximum number of iterations has been exceeded.
Current function value: 0.000004
Iterations: 35
C:\Users\dell\Anaconda\lib\site-packages\statsmodels\base\model.py:466: ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals"Check mle_retvals", ConvergenceWarning)
Run Code Online (Sandbox Code Playgroud)
为什么我会收到此警告以及如何解决此问题?谢谢!
OLSResults of
df2 = pd.read_csv("MultipleRegression.csv")
X = df2[['Distance', 'CarrierNum', 'Day', 'DayOfBooking']]
Y = df2['Price']
X = add_constant(X)
fit = sm.OLS(Y, X).fit()
print(fit.summary())
Run Code Online (Sandbox Code Playgroud)
将每个属性的P值显示为仅3个小数位.
我需要为每个属性提取p值等Distance,CarrierNum并以科学计数法打印出来.
余可使用提取的系数fit.params[0]或fit.params[1]等
需要获得所有P值.
所有P值为0的意思是什么?
我会使用(Statsmodels)ARIMA来预测系列中的值:
plt.plot(ind, final_results.predict(start=0 ,end=26))
plt.plot(ind, forecast.values)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我想知道问题是关于预测还是预测
我对统计和编程很陌生。我已经自学了一些,但我很难理解p-valueadfuller 测试的概念和其他各种结果。
我正在使用的代码:
(我在 stockoverflow 上找到了这段代码)
import numpy as np
import os
import pandas as pd
import statsmodels.api as sm
import cython
import statsmodels.tsa.stattools as ts
loc = r"C:\Stock Study\Stock Research\Hist Data"
os.chdir(loc)
xl_file1 = pd.ExcelFile("HDFCBANK.xlsx")
xl_file2 = pd.ExcelFile("KOTAKBANK.xlsx")
y1 = xl_file1.parse("Sheet1")
x1 = xl_file2.parse("Sheet1")
x = x1['Close']
y = y1['Close']
def cointegration_test(y, x):
# Step 1: regress on variable on the other
ols_result = sm.OLS(y, x).fit()
# Step 2: obtain the residual (ols_resuld.resid)
# Step 3: apply …Run Code Online (Sandbox Code Playgroud) result = sm.OLS(gold_lookback, silver_lookback ).fit()
Run Code Online (Sandbox Code Playgroud)
得到结果后,我怎样才能得到系数和常数?
换句话说,如果
y = ax + c
如何获得价值a和c?
我意外地注意到,当不适合拦截时,OLS模型由R ^ 2 实现sklearn并statsmodels产生不同的R ^ 2值.否则他们似乎工作正常.以下代码产生:
import numpy as np
import sklearn
import statsmodels
import sklearn.linear_model as sl
import statsmodels.api as sm
np.random.seed(42)
N=1000
X = np.random.normal(loc=1, size=(N, 1))
Y = 2 * X.flatten() + 4 + np.random.normal(size=N)
sklernIntercept=sl.LinearRegression(fit_intercept=True).fit(X, Y)
sklernNoIntercept=sl.LinearRegression(fit_intercept=False).fit(X, Y)
statsmodelsIntercept = sm.OLS(Y, sm.add_constant(X))
statsmodelsNoIntercept = sm.OLS(Y, X)
print(sklernIntercept.score(X, Y), statsmodelsIntercept.fit().rsquared)
print(sklernNoIntercept.score(X, Y), statsmodelsNoIntercept.fit().rsquared)
print(sklearn.__version__, statsmodels.__version__)
Run Code Online (Sandbox Code Playgroud)
打印:
0.78741906105 0.78741906105
-0.950825182861 0.783154483028
0.19.1 0.8.0
Run Code Online (Sandbox Code Playgroud)
差异来自哪里?
问题不同于不同的线性回归系数与statsmodels和sklearn,因为那里sklearn.linear_model.LinearModel(有截距)适合X准备的statsmodels.api.OLS.
问题不同于 Statsmodels:计算拟合值和R平方, 因为它解决了两个Python包( …
python linear-regression python-3.x scikit-learn statsmodels
我试图绘制我的实际时间序列值和预测值,但它给了我这个错误:
ValueError:视图限制最小值-36816.95989583333小于1并且是无效的Matplotlib日期值.如果将非日期时间值传递给具有日期时间单位的轴,则通常会发生这种情况
我正在使用statsmodels适合数据的arima模型.
这是我的数据样本:
datetime value
2017-01-01 00:00:00 10.18
2017-01-01 00:15:00 10.2
2017-01-01 00:30:00 10.32
2017-01-01 00:45:00 10.16
2017-01-01 01:00:00 9.93
2017-01-01 01:15:00 9.77
2017-01-01 01:30:00 9.47
2017-01-01 01:45:00 9.08
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
mod = sm.tsa.statespace.SARIMAX(
subset,
order=(1, 1, 1),
seasonal_order=(1, 1, 1, 12),
enforce_stationarity=False,
enforce_invertibility=False
)
results = mod.fit()
pred_uc = results.get_forecast(steps=500)
pred_ci = pred_uc.conf_int(alpha = 0.05)
# Plot
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(1, 1, 1)
ax.plot(subset,color = "blue")
ax.plot(pred_uc.predicted_mean, color="black", alpha=0.5, label='SARIMAX')
plt.show()
Run Code Online (Sandbox Code Playgroud)
知道如何解决这个问题吗?
statsmodels ×10
python ×9
pandas ×2
scikit-learn ×2
anaconda ×1
arima ×1
datetime ×1
math ×1
matplotlib ×1
python-2.7 ×1
python-3.x ×1
regression ×1
statistics ×1
warnings ×1