如何从 Pandas 中的 OLS 摘要中提取特定值?
How to extract a particular value from the OLS-summary in Pandas?
是否可以从pandas中的线性回归总结中得到其他值(目前我只知道一种获取beta和截距的方法)?我需要得到 R 平方。
以下是手册摘录:
In [244]: model = ols(y=rets['AAPL'], x=rets.ix[:, ['GOOG']])
In [245]: model
Out[245]:
-------------------------Summary of Regression Analysis--------------------- ----
Formula: Y ~ <GOOG> + <intercept>
Number of Observations: 756
Number of Degrees of Freedom: 2
R-squared: 0.2814
Adj R-squared: 0.2805
Rmse: 0.0147
F-stat (1, 754): 295.2873, p-value: 0.0000
Degrees of Freedom: model 1, resid 754
-----------------------Summary of Estimated Coefficients------------------------
Variable Coef Std Err t-stat p-value CI 2.5% CI 97.5%
--------------------------------------------------------------------------------
GOOG 0.5442 0.0317 17.18 0.0000 0.4822 0.6063
intercept 0.0011 0.0005 2.14 0.0327 0.0001 0.0022
---------------------------------End of Summary---------------------------------
谢谢
尝试:
print model.r2
例如:
import pandas as pd
from pandas import Panel
from pandas.io.data import DataReader
import scikits.statsmodels.api as sm
symbols = ['MSFT', 'GOOG', 'AAPL']
data = dict((sym, DataReader(sym, "yahoo")) for sym in symbols)
panel = Panel(data).swapaxes('items', 'minor')
close_px = panel['Close']
# convert closing prices to returns
rets = close_px / close_px.shift(1) - 1
model = pd.ols(y=rets['AAPL'], x=rets.ix[:, ['GOOG']])
print model.r2
Docs handling the results of the regression - 这将允许您从回归结果中提取一些值:
# Given
model = ols(y=rets['AAPL'], x=rets.ix[:, ['GOOG']]).fit()
在r-squared
的情况下使用:
# retrieving model's r-squared value
model.rsquared
并且在 p-values
的情况下使用:
# return p-values and corresponding coefficients in model
model.pvalues
更多参数(fvalues
ess
)请参考doc
是否可以从pandas中的线性回归总结中得到其他值(目前我只知道一种获取beta和截距的方法)?我需要得到 R 平方。 以下是手册摘录:
In [244]: model = ols(y=rets['AAPL'], x=rets.ix[:, ['GOOG']])
In [245]: model
Out[245]:
-------------------------Summary of Regression Analysis--------------------- ----
Formula: Y ~ <GOOG> + <intercept>
Number of Observations: 756
Number of Degrees of Freedom: 2
R-squared: 0.2814
Adj R-squared: 0.2805
Rmse: 0.0147
F-stat (1, 754): 295.2873, p-value: 0.0000
Degrees of Freedom: model 1, resid 754
-----------------------Summary of Estimated Coefficients------------------------
Variable Coef Std Err t-stat p-value CI 2.5% CI 97.5%
--------------------------------------------------------------------------------
GOOG 0.5442 0.0317 17.18 0.0000 0.4822 0.6063
intercept 0.0011 0.0005 2.14 0.0327 0.0001 0.0022
---------------------------------End of Summary---------------------------------
谢谢
尝试:
print model.r2
例如:
import pandas as pd
from pandas import Panel
from pandas.io.data import DataReader
import scikits.statsmodels.api as sm
symbols = ['MSFT', 'GOOG', 'AAPL']
data = dict((sym, DataReader(sym, "yahoo")) for sym in symbols)
panel = Panel(data).swapaxes('items', 'minor')
close_px = panel['Close']
# convert closing prices to returns
rets = close_px / close_px.shift(1) - 1
model = pd.ols(y=rets['AAPL'], x=rets.ix[:, ['GOOG']])
print model.r2
Docs handling the results of the regression - 这将允许您从回归结果中提取一些值:
# Given
model = ols(y=rets['AAPL'], x=rets.ix[:, ['GOOG']]).fit()
在r-squared
的情况下使用:
# retrieving model's r-squared value
model.rsquared
并且在 p-values
的情况下使用:
# return p-values and corresponding coefficients in model
model.pvalues
更多参数(fvalues
ess
)请参考doc