早上好,
我已经学习了两三个月的Python,但现在发现我的2.7安装存在一些问题,因为我已经研究过像nltk这样的模块.
但是,当我想使用帮助("模块")列出模块时,我有一个主要错误,我认为解释的问题是:
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg/setuptools/command/install_scripts.py:3: UserWarning: Module numpy was already imported from /Library/Python/2.7/site-packages/numpy-override/numpy/__init__.pyc, but /Library/Python/2.7/site-packages/numpy-1.8.0.dev_5c944b9_20120828-py2.7-macosx-10.8-x86_64.egg is being added to sys.path
from pkg_resources import Distribution, PathMetadata, ensure_directory
Run Code Online (Sandbox Code Playgroud)
我还收到与已弃用的模块有关的以下错误:
/Library/Python/2.7/site-packages/statsmodels-0.5.0-py2.7-macosx-10.8-intel.egg/scikits/statsmodels/__init__.py:2: UserWarning: scikits.statsmodels namespace is deprecated and will be removed in 0.5, please use statsmodels instead
Run Code Online (Sandbox Code Playgroud)
我仍然试图抓住路径并想知道是否有人可以帮助我避免将来出现这个问题.谢谢.
我正在尝试使用python来计算响应数组和一组预测变量数组之间的多元线性回归和多重相关.我看到了计算多元线性回归的非常简单的例子,这很容易.但是如何计算与statsmodels的多重相关?或与其他任何东西,作为替代.我想我可以使用rpy和R,但如果可能的话,我宁愿留在python中.
编辑[澄清]:考虑如下所述的情况:http://sphweb.bumc.bu.edu/otlt/MPH-Modules/BS/BS704-EP713_MultivariableMethods/ 我想计算预测变量的多个相关系数,除了回归系数和其他回归参数
我正在关注statsmodels教程
配有OLS型号
formula = 'S ~ C(E) + C(M) + X'
lm = ols(formula, salary_table).fit()
print lm.summary()
Run Code Online (Sandbox Code Playgroud)
预测值通过以下方式提供:
lm.predict({'X' : [12], 'M' : [1], 'E' : [2]})
结果作为单值数组返回.
是否有一种方法可以返回statsmodels中预测值(预测区间)的置信区间?
谢谢.
我对python和pandas(使用SAS作为我的主力分析平台)相当新,所以如果已经被问到/已经回答过,我会事先道歉.(我搜索了文档以及这个网站搜索答案,但还没找到.)
我有一个包含受访者级别调查数据的数据框(称为resp).我想对其中一个字段(称为anninc [年收入的简称])执行一些基本的描述性统计.
resp["anninc"].describe()
Run Code Online (Sandbox Code Playgroud)
这给了我基本的统计数据:
count 76310.000000
mean 43455.874862
std 33154.848314
min 0.000000
25% 20140.000000
50% 34980.000000
75% 56710.000000
max 152884.330000
dtype: float64
Run Code Online (Sandbox Code Playgroud)
但是有一个问题.鉴于样本是如何构建的,需要对响应数据进行权重调整,以便在执行分析时不会将每个数据视为"相等".我在数据框中有另一列(称为tufnwgrp),表示在分析期间应应用于每条记录的权重.
在我之前的SAS生活中,大多数proc都有选项来处理具有这样权重的数据.例如,标准proc单变量给出相同的结果看起来像这样:
proc univariate data=resp;
var anninc;
output out=resp_univars mean=mean median=50pct q1=25pct q3=75pct min=min max=max n=count;
run;
Run Code Online (Sandbox Code Playgroud)
使用加权数据的相同分析看起来像这样:
proc univariate data=resp;
var anninc;
weight tufnwgrp;
output out=resp_univars mean=mean median=50pct q1=25pct q3=75pct min=min max=max n=count
run;
Run Code Online (Sandbox Code Playgroud)
对于像describe()等方法,pandas中是否有类似的加权选项?
计量经济学背景
Fama Macbeth回归指的是针对面板数据运行回归的过程(其中存在N个不同的个体并且每个个体对应于多个周期T,例如日,月,年).所以总共有N x T obs.请注意,如果面板数据不平衡,则可以.
Fama Macbeth回归是首先对每个时期进行跨部门的回归,即在给定的时间段内将N个人聚集在一起.为t = 1,...做这个.因此总共运行T回归.然后我们有每个自变量的时间序列系数.然后我们可以使用系数的时间序列进行假设检验.通常我们将平均值作为每个自变量的最终系数.我们使用t-stats来测试重要性.
我的问题
我的问题是在熊猫中实现这一点.从大熊猫的源代码中,我注意到有一个名为的过程fama_macbeth.但我找不到任何关于此的文件.
操作也可以轻松完成groupby.目前我这样做:
def fmreg(data,formula):
return smf.ols(formula,data=data).fit().params[1]
res=df.groupby('date').apply(fmreg,'ret~var1')
Run Code Online (Sandbox Code Playgroud)
这是有效的,res是一个由系数索引date的系列和系列的值params[1],它是系数var1.但现在我想拥有更多自变量,我需要提取所有这些自变量的系数,但我无法弄清楚.我试过这个
def fmreg(data,formula):
return smf.ols(formula,data=data).fit().params
res=df.groupby('date').apply(fmreg,'ret~var1+var2+var3')
Run Code Online (Sandbox Code Playgroud)
这不行.期望的结果是,res是由索引的数据帧date,以及数据帧的每列应包含各变量的系数intercept,var1,var2和var3.
我也检查过statsmodels,他们也没有这样的内置程序.
是否有任何包可以产生出版品质的回归表?就像outreg2在Stata和texregR?谢谢你的帮助!
我有一个CSV文件,其中包含近5年的平均温度。使用seasonal_decomposefrom函数分解后statsmodels.tsa.seasonal,得到以下结果。确实,结果没有显示任何季节性!但是,我看到sin趋势很明显!我想知道为什么会这样,我该如何纠正呢?谢谢。
nresult = seasonal_decompose(nseries, model='additive', freq=1)
nresult.plot()
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是,R tseries::adf.test()和Python的statsmodels.tsa.stattools.adfuller()
结果完全不同.
adf.test()显示它是静止的(p <0.05),同时adfuller()显示它是非静止的(p> 0.05).
以下代码有什么问题吗?
在R和Python中测试固定时间序列的正确过程是什么?
谢谢.
R代码:
> rd <- read.table('Data/TS.csv', sep = ',', header = TRUE)
> inp <- ts(rd$Sales, frequency = 12, start = c(1965, 1))
> inp
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1965 154 96 73 49 36 59 95 169 210 278 298 245
1966 200 118 90 79 78 91 167 169 289 347 375 …Run Code Online (Sandbox Code Playgroud) 我尝试通过sm.tsa.statespace.SARIMAX拟合Autoregression。但是我遇到警告,然后我想为此模型设置频率信息。谁曾经遇到过,您能帮我吗?
fit1 = sm.tsa.statespace.SARIMAX(train.Demand, order=(1, 0, 0),
enforce_stationarity=False,
enforce_invertibility=False).fit()
y_hat['AR'] = fit1.predict(start="1975-01-01", end="1975-12-01", dynamic=True)
plt.figure(figsize=(16,8))
plt.plot( train['Demand'], label='Train')
plt.plot(test['Demand'], label='Test')
plt.plot(y_hat_avg['AR'], label='AR')
plt.legend(loc='best')
plt.show()
C:\Users\thach.le\Anaconda3\lib\site-packages\statsmodels-0.8.0-py3.6-win-
amd64.egg\statsmodels\tsa\base\tsa_model.py:165: ValueWarning: No frequency
information was provided, so inferred frequency MS will be used.
% freq, ValueWarning)
Run Code Online (Sandbox Code Playgroud)
谢谢
在使用UnobservedComponentsfrom 拟合本地级模型之后statsmodels,我们试图找到用结果模拟新时间序列的方法.就像是:
import numpy as np
import statsmodels as sm
from statsmodels.tsa.statespace.structural import UnobservedComponents
np.random.seed(12345)
ar = np.r_[1, 0.9]
ma = np.array([1])
arma_process = sm.tsa.arima_process.ArmaProcess(ar, ma)
X = 100 + arma_process.generate_sample(nsample=100)
y = 1.2 * x + np.random.normal(size=100)
y[70:] += 10
plt.plot(X, label='X')
plt.plot(y, label='y')
plt.axvline(69, linestyle='--', color='k')
plt.legend();
Run Code Online (Sandbox Code Playgroud)
ss = {}
ss["endog"] = y[:70]
ss["level"] = "llevel"
ss["exog"] = X[:70]
model = UnobservedComponents(**ss)
trained_model = model.fit()
Run Code Online (Sandbox Code Playgroud)
在trained_model给定外生变量的情况下,是否可以用来模拟新的时间序列X[70:]?正如我们所拥有的那样arma_process.generate_sample(nsample=100),我们想知道我们是否可以做类似的事情:
trained_model.generate_random_series(nsample=100, exog=X[70:]) …Run Code Online (Sandbox Code Playgroud) python ×10
statsmodels ×10
pandas ×2
r ×2
time-series ×2
arima ×1
correlation ×1
deprecated ×1
frequency ×1
matplotlib ×1
numpy ×1
scipy ×1
statistics ×1