第一:感谢您迄今为止提供的巨大帮助!我对在iPython中使用表格格式有疑问。
我目前正在运行以下脚本,以打印增强的Dickey-Fuller(ADF)平稳性测试:
print "Stationarity"
print sm.tsa.stattools.adfuller(df['temperature'], maxlag=None, autolag='BIC', regression='c')
输出是这样的:
Stationarity
(-6.4532219513246361, 1.5054094590984612e-08, 0, 41, {'5%': -2.9351348158036012, '1%': -3.6009833671885199, '10%': -2.6059629803688282}, 1227.2605520289471*)
*(不确定此值为Link to Documentation)
现在,我的问题是:
如何对多个变量自动进行计算?是否可以创建一个包含不同列(df ['variable1'],df ['variable1'],df ['variable1'],df ['variable1']等的列表)的ADF测试每一个项目?
如何将返回的数据放入表结构?像这样:
ADF测试
可变点数t检验p值1%5%10%
温度41 6.4532 1.5054094590984612e-08 -3.600 -2.9351 -2.6059
变量2 ...
变量3 ...
(顺便说一句:如何将“ 1.5054094590984612e-08”转换为准确的数字?)
感谢您的支持!
最佳答案
所以我基本上删除了一些虚拟数据,基本上我为每个col建立一个dict以存储adf测试结果,然后为每个结果构建一个df:
In [12]:
df = pd.DataFrame(index = pd.date_range(start=dt.datetime(2014,1,1), end = dt.datetime(2014,6,1)))
import statsmodels.tsa.stattools as ts
df['a'] = np.random.randint(0,30,len(df.index))
df['b'] = np.random.randint(0,30,len(df.index))
result={}
for col in df:
result[col] = ts.adfuller(df[col], maxlag=None, autolag='BIC', regression='c')
result
Out[12]:
{'a': (-14.5378299332063,
5.2041541962613174e-27,
0,
151,
{'1%': -3.4744158894942156,
'10%': -2.5770812758212358,
'5%': -2.8808783827710589},
983.29106640612281),
'b': (-12.247140023284922,
9.7254933298555022e-23,
0,
151,
{'1%': -3.4744158894942156,
'10%': -2.5770812758212358,
'5%': -2.8808783827710589},
983.89321857804237)}
In [29]:
df_result = pd.DataFrame()
for k,v in result.items():
df_result = df_result.append(pd.DataFrame(
data={'nobs':v[3], 't-test':v[0], 'p-value':v[1], '1%':v[4]['1%'], '5%':v[4]['5%'], '10%':v[4]['10%']},
index=[k]))
df_result.index.name = 'temperature'
df_result
Out[29]:
1% 10% 5% nobs p-value t-test
temperature
a -3.474416 -2.577081 -2.880878 151 5.204154e-27 -14.53783
b -3.474416 -2.577081 -2.880878 151 9.725493e-23 -12.24714
关于python - Python/ Pandas 表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29960345/