我一直在深入研究API,并且已经找到了如何检索不同类型的异方差校正标准误差(通过属性等等)但是,我无法弄清楚如何获得系数的t-测试使用这些更正的标准错误.有没有办法在API中执行此操作,还是必须手动执行此操作?如果是后者,您是否可以就如何使用statsmodels结果建议任何指导? statsmodels.regression.linear_model.RegressionResultsHC0_se
result = sm.OLS(gold_lookback, silver_lookback ).fit()
Run Code Online (Sandbox Code Playgroud)
得到结果后,我怎样才能得到系数和常数?
换句话说,如果
y = ax + c
如何获得价值a和c?
我正在尝试使用OLS实现的predict()功能statsmodels.formula.api.当我将新数据帧传递给函数以获取样本外数据集的预测值时,result.predict(newdf)返回以下错误:'DataFrame' object has no attribute 'design_info'.这是什么意思,我该如何解决?完整的追溯是:
p = result.predict(newdf)
File "C:\Python27\lib\site-packages\statsmodels\base\model.py", line 878, in predict
exog = dmatrix(self.model.data.orig_exog.design_info.builder,
File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 2088, in __getattr__
(type(self).__name__, name))
AttributeError: 'DataFrame' object has no attribute 'design_info'
Run Code Online (Sandbox Code Playgroud)
编辑:这是一个可重复的例子.当我挑选然后取消选择结果对象(我需要在实际项目中执行)时,会出现错误:
import cPickle
import pandas as pd
import numpy as np
import statsmodels.formula.api as sm
df = pd.DataFrame({"A": [10,20,30,324,2353], "B": [20, 30, 10, 1, 2332], "C": [0, -30, 120, 11, 2]})
result = sm.ols(formula="A ~ B + C", …Run Code Online (Sandbox Code Playgroud) 假设我有几个直方图,每个直方图都在不同的 bin位置(在实轴上)进行计数.例如
def generate_random_histogram():
# Random bin locations between 0 and 100
bin_locations = np.random.rand(10,) * 100
bin_locations.sort()
# Random counts between 0 and 50 on those locations
bin_counts = np.random.randint(50, size=len(bin_locations))
return {'loc': bin_locations, 'count':bin_counts}
# We can assume that the bin size is either pre-defined or that
# the bin edges are on the middle-point between consecutive counts.
hists = [generate_random_histogram() for x in xrange(3)]
Run Code Online (Sandbox Code Playgroud)
如何对这些直方图进行标准化,以便获得 PDF,其中每个PDF的积分在给定范围内(例如0和100)加起来为1?
我们可以假设直方图根据预定义的bin大小计算事件(例如10)
我见过的大多数实现都是基于高斯内核(参见scipy …
我试图预测python statsmodels ARIMA包中的时间序列,包含一个外生变量,但无法弄清楚在预测步骤中插入外生变量的正确方法.请参阅此处了解文档.
import numpy as np
from scipy import stats
import pandas as pd
import statsmodels.api as sm
vals = np.random.rand(13)
ts = pd.TimeSeries(vals)
df = pd.DataFrame(ts, columns=["test"])
df.index = pd.Index(pd.date_range("2011/01/01", periods = len(vals), freq = 'Q'))
fit1 = sm.tsa.ARIMA(df, (1,0,0)).fit()
#this works fine:
pred1 = fit1.predict(start=12, end = 16)
print(pred1)
Out[32]:
2014-03-31 0.589121
2014-06-30 0.747575
2014-09-30 0.631322
2014-12-31 0.654858
2015-03-31 0.650093
Freq: Q-DEC, dtype: float64
Run Code Online (Sandbox Code Playgroud)
现在添加一个趋势外生变量
exogx = np.array(range(1,14))
#to make this easy, let's look at …Run Code Online (Sandbox Code Playgroud) 我正在使用scipy.stats.expon.fit(data) 指数分布到我的数据.这似乎返回两个值,我期望一个.在线文档似乎没有说明什么fit()返回,但查看源,我猜它是一个位置和规模参数.您可以0在进行拟合时修复位置参数吗?
我有两个numpy数组light_points和time_points,并希望对这些数据使用一些时间序列分析方法.
然后我尝试了这个:
import statsmodels.api as sm
import pandas as pd
tdf = pd.DataFrame({'time':time_points[:]})
rdf = pd.DataFrame({'light':light_points[:]})
rdf.index = pd.DatetimeIndex(freq='w',start=0,periods=len(rdf.light))
#rdf.index = pd.DatetimeIndex(tdf['time'])
Run Code Online (Sandbox Code Playgroud)
这有效,但没有做正确的事情.实际上,测量不是均匀的时间间隔,如果我只是将time_points pandas DataFrame声明为我的帧的索引,我会收到一个错误:
rdf.index = pd.DatetimeIndex(tdf['time'])
decomp = sm.tsa.seasonal_decompose(rdf)
elif freq is None:
raise ValueError("You must specify a freq or x must be a pandas object with a timeseries index")
ValueError: You must specify a freq or x must be a pandas object with a timeseries index
Run Code Online (Sandbox Code Playgroud)
我不知道如何纠正这个问题.此外,似乎大熊猫TimeSeries已被弃用.
我试过这个:
rdf = pd.Series({'light':light_points[:]})
rdf.index = pd.DatetimeIndex(tdf['time'])
Run Code Online (Sandbox Code Playgroud)
但它给我一个长度不匹配: …
我很乐意在statsmodels中使用线性LASSO回归,因此为了能够使用'公式'表示法来编写模型,这可以在处理许多分类变量及其交互时节省相当多的编码时间.但是,它似乎尚未在统计模型中实现?
我想用 Python 计算(加权)逻辑回归。计算权重以调整样本关于总体的分布。然而,如果我使用权重,结果不会改变。
\nimport numpy as np\nimport pandas as pd \nimport statsmodels.api as sm \nRun Code Online (Sandbox Code Playgroud)\n数据看起来像这样。目标变量是VISIT. 这些特征是除WEIGHT_both(这是我想使用的权重)之外的所有其他变量。
df.head() \n\nWEIGHT_both VISIT Q19_1 Q19_2 Q19_3 Q19_4 Q19_5 Q19_6 Q19_7 Q19_8 ... Q19_23 Q19_24 Q19_25 Q19_26 Q19_27 Q19_28 Q19_29 Q19_30 Q19_31 Q19_32\n0 0.022320 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 ... 4.0 4.0 1.0 1.0 1.0 1.0 2.0 3.0 3.0 2.0\n1 0.027502 1.0 3.0 2.0 2.0 2.0 3.0 4.0 3.0 2.0 ... 3.0 2.0 …Run Code Online (Sandbox Code Playgroud) 使用 ARMA 拟合模型时:
from statsmodels.tsa.arima_model import ARMA
Run Code Online (Sandbox Code Playgroud)
我的控制台中收到警告:
C:\Users\lfc\anaconda3\lib\site-packages\statsmodels\tsa\arima_model.py:472: FutureWarning:
statsmodels.tsa.arima_model.ARMA and statsmodels.tsa.arima_model.ARIMA have been deprecated in favor of statsmodels.tsa.arima.model.ARIMA (note the . between arima and model) and statsmodels.tsa.SARIMAX. These will be removed after the 0.12 release.
statsmodels.tsa.arima.model.ARIMA makes use of the statespace framework and
is both well tested and maintained.
To silence this warning and continue using ARMA and ARIMA until they are
removed, use:
import warnings
warnings.filterwarnings('ignore', 'statsmodels.tsa.arima_model.ARMA',
FutureWarning)
warnings.filterwarnings('ignore', 'statsmodels.tsa.arima_model.ARIMA',
FutureWarning)
warnings.warn(ARIMA_DEPRECATION_WARN, FutureWarning)
Run Code Online (Sandbox Code Playgroud)
如何放弃警告?
python ×10
statsmodels ×10
pandas ×3
scipy ×3
regression ×2
time-series ×2
numpy ×1
pickle ×1
predict ×1
pymc ×1
scikit-learn ×1
weighted ×1