小编Cle*_*leb的帖子

如何将由statsmodels的VAR函数拟合的对数差异数据转换回实际值

我遵循有关VAR模型的statsmodel教程,并对获得的结果有疑问(我的整个代码都可以在本文结尾处找到)。

原始数据(存储在中mdata)显然是不稳定的,因此需要进行转换,方法是使用以下行:

data = np.log(mdata).diff().dropna()
Run Code Online (Sandbox Code Playgroud)

如果然后绘制原始数据(mdata)和转换后的数据(data),则该图如下所示:

在此处输入图片说明

然后使用拟合对数差异数据

model = VAR(data)
results = model.fit(2)
Run Code Online (Sandbox Code Playgroud)

然后,如果将原始的对数差数据与拟合值作图,则会得到如下图:

在此处输入图片说明

我的问题是我如何才能得到相同的图,但对于没有对数差异的原始数据。如何将由拟合值确定的参数应用于这些原始数据?有没有一种方法可以使用我获得的参数将拟合的对数差异数据转换回原始数据,如果可以,该如何完成?

这是我的完整代码和获得的输出:

import pandas
import statsmodels as sm
from statsmodels.tsa.api import VAR
from statsmodels.tsa.base.datetools import dates_from_str
from statsmodels.tsa.stattools import adfuller
import numpy as np
import matplotlib.pyplot as plt

mdata = sm.datasets.macrodata.load_pandas().data

dates = mdata[['year', 'quarter']].astype(int).astype(str)
quarterly = dates["year"] + "Q" + dates["quarter"]

quarterly = dates_from_str(quarterly)

mdata = mdata[['realgdp', 'realcons', 'realinv']]
mdata.index = pandas.DatetimeIndex(quarterly)
data = np.log(mdata).diff().dropna()

f, …
Run Code Online (Sandbox Code Playgroud)

python statistics var pandas statsmodels

4
推荐指数
1
解决办法
3473
查看次数

使用正则表达式选择数据

我有这样的数据帧

import pandas as pd

df = pd.DataFrame({'a': ['abc', 'r00001', 'r00010', 'rfoo', 'r01234', 'r1234'], 'b': range(6)})

        a  b
0     abc  0
1  r00001  1
2  r00010  2
3    rfoo  3
4  r01234  4
5   r1234  5
Run Code Online (Sandbox Code Playgroud)

我现在想要选择此数据框的所有列,其中列中的条目以后跟五个数字a开头r.

从这里我学会了如果r没有数字就开始这样做:

print df.loc[df['a'].str.startswith('r'), :]

        a  b
1  r00001  1
2  r00010  2
3    rfoo  3
4  r01234  4
5   r1234  5
Run Code Online (Sandbox Code Playgroud)

像这样的东西

print df.loc[df['a'].str.startswith(r'[r]\d{5}'), :]
Run Code Online (Sandbox Code Playgroud)

当然不行.如何正确地做到这一点?

python regex pandas

4
推荐指数
2
解决办法
524
查看次数

如何将某些系数约束的多项式拟合?

使用NumPy polyfit(或类似的东西)是否有一种简单的方法来获得将一个或多个系数限制为特定值的解决方案?

例如,我们可以使用以下公式找到普通的多项式拟合:

x = np.array([0.0, 1.0, 2.0, 3.0,  4.0,  5.0])
y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
z = np.polyfit(x, y, 3)
Run Code Online (Sandbox Code Playgroud)

屈服

array([ 0.08703704, -0.81349206,  1.69312169, -0.03968254])
Run Code Online (Sandbox Code Playgroud)

但是,如果我想要最合适的多项式,其中第三个系数(在上述情况下z[2])要求为1,该怎么办?还是我需要从头开始编写配件?

python numpy curve-fitting scipy polynomials

4
推荐指数
2
解决办法
3862
查看次数

我编写了一个代码来计算两个Pandas系列之间的相关性.你能告诉我我的代码有什么问题吗?

以下是代码:

import numpy as np
import pandas as pd

def correlation(x, y):
    std_x = (x - x.mean())/x.std(ddof = 0)
    std_y = (y - y.mean())/y.std(ddof = 0)
    return (std_x * std_y).mean

a = pd.Series([2, 4, 5, 7, 9])
b = pd.Series([12, 10, 9, 7, 3])
ca = correlation(a, b)
print(ca)
Run Code Online (Sandbox Code Playgroud)

它不返回相关的值,而是返回一个带有键的系列0 ,1, 2, 3, 4, 5和值-1.747504, -0.340844, -0.043282, -0.259691, -2.531987.

请帮我理解这背后的问题.

python python-3.x pandas

4
推荐指数
1
解决办法
268
查看次数

在(单击)角度5中包含两个函数

我想在点击时包含两个功能

<li class="active" (click) ="routeTransaction(), activateClass(classChange)" *ngIf="permissionKeys.indexOf('TRANSACTIONS')>-1" [ngClass]="{'liactive': classChange}" >
    <a >
      <i class="glyphicon glyphicon-cog"></i>
          <span>Transaction</span>
    </a>
</li>
Run Code Online (Sandbox Code Playgroud)

这是一个错误; 怎么能修好?

angular

4
推荐指数
2
解决办法
986
查看次数

如何使用正则表达式提取子字符串?

我确实在这样的查询中遇到过字符串

o = 'some interesting {foo123:bar_675:get_me.xyz} string'
Run Code Online (Sandbox Code Playgroud)

我想从大括号内的部分中提取最后一个冒号之后的部分,所以在这种情况下get_me.xyz.

我知道正则表达式\{.*:(.*)\}可以工作(在 Python 中测试):

import re

o = 'some interesting {foo123:bar_675:get_me.xyz} string'
re.findall('\{.*:(.*)\}', o)
Run Code Online (Sandbox Code Playgroud)

将返回

['get_me.xyz']
Run Code Online (Sandbox Code Playgroud)

我现在如何在查询中使用这个正则表达式?

我试过

SELECT (regex(?o, "\{.*:(.*)\}") as ?substring) ?o  
WHERE { 
  ?s ?p ?o .   
}
Run Code Online (Sandbox Code Playgroud)

但这总是会引发错误

Parse error on line 6:
...SELECT (regex(?o, "\{.*:(.*)\}") as ?
---------------------^
Expecting 'IRIREF', 'PNAME_NS', 'VAR', '(', 'INTEGER', '!', '-', 'FUNC_ARITY0', 'FUNC_ARITY1', 'FUNC_ARITY2', 'IF', 'BOUND', 'BNODE', 'EXISTS', 'COUNT', 'FUNC_AGGREGATE', 'GROUP_CONCAT', 'DECIMAL', 'DOUBLE', 'true', 'false', 'STRING_LITERAL1', 'STRING_LITERAL2', 'STRING_LITERAL_LONG1', 'STRING_LITERAL_LONG2', …
Run Code Online (Sandbox Code Playgroud)

regex sparql

4
推荐指数
1
解决办法
2556
查看次数

如何从多索引数据框中返回多个级别/组的值?

这是我的多索引数据框:

# Index Levels
outside = ['G1','G1','G1','G2','G2','G2']
inside = [1,2,3,1,2,3]
hier_index = list(zip(outside,inside))
hier_index = pd.MultiIndex.from_tuples(hier_index)
df = pd.DataFrame(np.random.randn(6,2),index=hier_index,columns=['A','B'])
df.index.names = ['Group','Num']
df
Run Code Online (Sandbox Code Playgroud)

数据框如下所示:

                  A           B
Group   Num     
G1      1     0.147027  -0.479448
        2     0.558769   1.024810
        3    -0.925874   1.862864
G2      1    -1.133817   0.610478
        2     0.386030   2.084019
        3    -0.376519   0.230336
Run Code Online (Sandbox Code Playgroud)

我想要实现的是返回Group G1and G2, Num 1and 中的值,3如下所示:

G1     1     0.147027   -0.479448
       3    -0.925874    1.862864
G2     1    -1.133817    0.610478
       3    -0.376519    0.230336
Run Code Online (Sandbox Code Playgroud)

我试过了

df.loc[['G1','G2']].loc[[1,3]]
Run Code Online (Sandbox Code Playgroud)

但它什么也没显示。

然后我试过了

df.xs([['G1','G2'],[1,3]]) 
Run Code Online (Sandbox Code Playgroud)

但它返回 …

python multi-index dataframe pandas

4
推荐指数
2
解决办法
373
查看次数

如何根据其他几列填充一列?

我有两个这样的数据框:

import pandas as pd
import numpy as np

df1 = pd.DataFrame(
    {
        'A': list('aaabdcde'),
        'B': list('smnipiuy'),
        'C': list('zzzqqwll')
    }
)

df2 = pd.DataFrame(
    {
        'mapcol': list('abpppozl')
    }
)

   A  B  C
0  a  s  z
1  a  m  z
2  a  n  z
3  b  i  q
4  d  p  q
5  c  i  w
6  d  u  l
7  e  y  l

  mapcol
0      a
1      b
2      p
3      p
4      p
5      o
6      z
7 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

4
推荐指数
2
解决办法
179
查看次数

如何填充NAN“忽略”索引?

我有两个这样的数据框:

import pandas as pd
import numpy as np

df1 = pd.DataFrame(
    {
        'A': list('abdcde'),
        'B': ['s', np.nan, 'h', 'j', np.nan, 'g']
    }
)

df2 = pd.DataFrame(
    {
        'mapcol': list('abpppozl')
    }
)

   A    B
0  a    s
1  b  NaN
2  d    h
3  c    j
4  d  NaN
5  e    g

  mapcol
0      a
1      b
2      p
3      p
4      p
5      o
6      z
7      l
Run Code Online (Sandbox Code Playgroud)

我现在想,以填补Bdf1使用的值df2['mapcol'],但是没有使用的实际指标,但-在这种情况下-只是前两个项目df2['mapcol']。因此,而不是b和 …

python dataframe pandas fillna

4
推荐指数
1
解决办法
101
查看次数

可以在 Enum 中添加自定义错误以显示有效值吗?

假设我有

from enum import Enum

class SomeType(Enum):
    TYPEA = 'type_a'
    TYPEB = 'type_b'
    TYPEC = 'type_c'
Run Code Online (Sandbox Code Playgroud)

如果我现在这样做

SomeType('type_a')
Run Code Online (Sandbox Code Playgroud)

我会得到

<SomeType.TYPEA: 'type_a'>
Run Code Online (Sandbox Code Playgroud)

正如预期的那样。当我做

SomeType('type_o')
Run Code Online (Sandbox Code Playgroud)

我会收到

ValueError:“type_o”不是有效的 SomeType

这也是预料之中的。

我的问题是:可以以某种方式轻松自定义错误,以便它显示所有有效类型吗?所以,就我而言,我希望

ValueError:“type_o”不是有效的 SomeType。有效类型为“type_a”、“type_b”、“type_c”。

python enums

4
推荐指数
1
解决办法
1078
查看次数