我试图分析星星的数据.我有明星的时间序列,我想预测他们属于哪个班级(4种不同类型).我有那些明星的时间序列,我想通过去季节化,频率分析和其他可能相关的研究来分析这些时间序列.
对象time_series是一个熊猫DataFrame,包括10列:time_points_b,light_points_b(b代表蓝色)等等......
我首先要研究蓝灯时间序列.
import statsmodels.api as sm;
import pandas as pd
import matplotlib.pyplot as plt
pd.options.display.mpl_style = 'default'
%matplotlib inline
def star_key(slab_id, star_id_b):
return str(slab_id) + '_' + str(star_id_b)
raw_time_series = pd.read_csv("data/public/train_varlength_features.csv.gz", index_col=0, compression='gzip')
time_series = raw_time_series.applymap(csv_array_to_float)
time_points = np.array(time_series.loc[star_key(patch_id, star_id_b)]['time_points_b'])
light_points = np.array(time_series.loc[star_key(patch_id, star_id_b)]['light_points_b'])
error_points = np.array(time_series.loc[star_key(patch_id, star_id_b)]['error_points_b'])
light_data = pd.DataFrame({'time':time_points[:], 'light':light_points[:]})
residuals = sm.tsa.seasonal_decompose(light_data);
light_plt = residuals.plot()
light_plt.set_size_inches(10, 5)
light_plt.tight_layout()
Run Code Online (Sandbox Code Playgroud)
当我应用seasonal_decompose方法时,此代码给出了属性错误:AttributeError:'Int64Index'对象没有属性'inferred_freq'
正如标题所暗示的那样,Pandas中ols命令中的滚动功能选项在statsmodels中迁移到哪里?我似乎找不到它.熊猫告诉我厄运正在起作用:
FutureWarning: The pandas.stats.ols module is deprecated and will be removed in a future version. We refer to external packages like statsmodels, see some examples here: http://statsmodels.sourceforge.net/stable/regression.html
model = pd.ols(y=series_1, x=mmmm, window=50)
Run Code Online (Sandbox Code Playgroud)
事实上,如果你做的事情如下:
import statsmodels.api as sm
model = sm.OLS(series_1, mmmm, window=50).fit()
print(model.summary())
Run Code Online (Sandbox Code Playgroud)
你得到结果(窗口不会影响代码的运行)但你只得到整个时期的回归运行参数,而不是应该应该处理的每个滚动周期的一系列参数.
我在pandas数据帧中有一些不错的数据.我想对它进行简单的线性回归:
使用statsmodels,我执行我的回归.现在,我如何得到我的情节?我尝试过statsmodels的plot_fit方法,但情节有点时髦:
我希望得到一条代表回归实际结果的水平线.
Statsmodels有多种绘制回归的方法(这里有一些关于它们的更多细节),但它们似乎都不是超级简单的"只是在数据上绘制回归线" - plot_fit似乎是最接近的东西.
matplotlib.axes._subplots.AxesSubplot.我可以轻松地将回归线叠加到该图上吗?两个相关问题:
似乎都没有一个好的答案.
按照@IgorRaush的要求
motifScore expression
6870 1.401123 0.55
10456 1.188554 -1.58
12455 1.476361 -1.75
18052 1.805736 0.13
19725 1.110953 2.30
30401 1.744645 -0.49
30716 1.098253 -1.59
30771 1.098253 -2.04
Run Code Online (Sandbox Code Playgroud)
我试过这个,但它似乎不起作用......不确定原因:
如果我这样做,sudo pip3 install statsmodels我会收到错误.我粘贴了下面控制台输出的结尾.我看到一个numpy 1.7警告,但如果我这样做pip3 freeze | grep numpy,我看到我正在使用numpy==1.8.1.
这是输出.有任何想法吗?
/usr/lib/python3/dist-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:15:2: warning: #warning "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
#warning "Using deprecated NumPy API, disable it by " \
^
statsmodels/tsa/kalmanf/kalman_loglike.c: In function ‘__Pyx_TraceSetupAndCall’:
statsmodels/tsa/kalmanf/kalman_loglike.c:7021:17: error: ‘PyFrameObject’ has no member named ‘f_tstate’
(*frame)->f_tstate = PyThreadState_GET();
^
In file included from /usr/lib/python3/dist-packages/numpy/core/include/numpy/ndarrayobject.h:26:0,
from /usr/lib/python3/dist-packages/numpy/core/include/numpy/arrayobject.h:4,
from statsmodels/tsa/kalmanf/kalman_loglike.c:257:
statsmodels/tsa/kalmanf/kalman_loglike.c: At top level:
/usr/lib/python3/dist-packages/numpy/core/include/numpy/__multiarray_api.h:1629:1: warning: ‘_import_array’ defined but not used [-Wunused-function]
_import_array(void) …Run Code Online (Sandbox Code Playgroud) 是否有现有函数来估算Pandas或Statsmodels的固定效应(单向或双向).
以前在Statsmodels中有一个函数,但似乎已经停止了.在Pandas中,有一些叫做的东西plm,但是我无法导入或运行它pd.plm().
我有以下线性回归:
import statsmodels.formula.api as sm
model = sm.ols(formula = 'a ~ b + c', data = data).fit()
Run Code Online (Sandbox Code Playgroud)
我想在这个模型中为b添加二次项.
使用statsmodels.ols有一个简单的方法吗?我应该使用更好的包来实现这个目标吗?
我有DataFrame几个时间序列:
divida movav12 var varmovav12
Date
2004-01 0 NaN NaN NaN
2004-02 0 NaN NaN NaN
2004-03 0 NaN NaN NaN
2004-04 34 NaN inf NaN
2004-05 30 NaN -0.117647 NaN
2004-06 44 NaN 0.466667 NaN
2004-07 35 NaN -0.204545 NaN
2004-08 31 NaN -0.114286 NaN
2004-09 30 NaN -0.032258 NaN
2004-10 24 NaN -0.200000 NaN
2004-11 41 NaN 0.708333 NaN
2004-12 29 24.833333 -0.292683 NaN
2005-01 31 27.416667 0.068966 0.104027
2005-02 28 29.750000 -0.096774 0.085106
2005-03 27 …Run Code Online (Sandbox Code Playgroud) 如何在python中拟合局部加权回归,以便它可用于预测新数据?
有statsmodels.nonparametric.smoothers_lowess.lowess,但它仅返回原始数据集的估计值; 如此看来只做fit和predict在一起,而不是单独作为我的预期.
scikit-learn总是有一个fit方法允许稍后在新数据上使用该对象predict; 但它没有实现lowess.
我想使用logit模型并尝试导入statsmodels库。我的版本:Python 3.6.8
我得到的最好建议是降级scipy,但不清楚如何降级到哪个版本。请帮助解决。 https://github.com/statsmodels/statsmodels/issues/5747
import statsmodels.formula.api as smf
ImportError Traceback (most recent call last)
<ipython-input-52-f897a2d817de> in <module>
----> 1 import statsmodels.formula.api as smf
~/anaconda3/envs/py36/lib/python3.6/site-packages/statsmodels/formula/api.py in <module>
13 from statsmodels.robust.robust_linear_model import RLM
14 rlm = RLM.from_formula
---> 15 from statsmodels.discrete.discrete_model import MNLogit
16 mnlogit = MNLogit.from_formula
17 from statsmodels.discrete.discrete_model import Logit
~/anaconda3/envs/py36/lib/python3.6/site-packages/statsmodels/discrete/discrete_model.py in <module>
43
44 from statsmodels.base.l1_slsqp import fit_l1_slsqp
---> 45 from statsmodels.distributions import genpoisson_p
46
47 try:
~/anaconda3/envs/py36/lib/python3.6/site-packages/statsmodels/distributions/__init__.py in <module>
1 from .empirical_distribution import ECDF, monotone_fn_inverter, StepFunction
----> 2 …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写代码来为库中不同书籍的数量创建置信区间(以及生成信息图).
我的堂兄在小学,每周都会给老师讲一本书.然后他读取并及时返回,以便在下周获得另一个.过了一会儿,我们开始注意到他以前读过的书,随着时间的推移逐渐变得越来越普遍.
假设图书馆中真实的图书数量是N,老师会随机选择一个(有替换),每周给你.如果在第t周,您收到的图书已经读过的次数为x,那么我可以根据https://math.stackexchange.com/questions/生成图书馆图书数量的最大似然估计值.615464/how-many-books-are-a-a-library.
示例:考虑一个包含五本书A,B,C,D和E的图书馆.如果您连续七周收到书籍[A,B,A,C,B,B,D],那么x的值(在每个星期之后,重复的数量将是[0,0,1,1,2,3,3],这意味着在七周之后,您已经收到了三本已经阅读过的书.
为了可视化似然函数(假设我已经理解了什么是正确的)我写了下面的代码,我相信它绘制了似然函数.最大值约为135,这实际上是根据上述MSE链接的最大似然估计.
from __future__ import division
import random
import matplotlib.pyplot as plt
import numpy as np
#N is the true number of books. t is the number of weeks.unk is the true number of repeats found
t = 30
unk = 3
def numberrepeats(N, t):
return t - len(set([random.randint(0,N) for i in xrange(t)]))
iters = 1000
ydata = []
for N in xrange(10,500):
sampledunk = [numberrepeats(N,t) for i in xrange(iters)].count(unk)
ydata.append(sampledunk/iters)
print …Run Code Online (Sandbox Code Playgroud) statsmodels ×10
python ×8
pandas ×6
python-3.x ×3
numpy ×2
regression ×2
deprecated ×1
matplotlib ×1
quadratic ×1
scipy ×1
statistics ×1
time-series ×1