小编Tho*_*wne的帖子

将滚动窗口回归应用于R中的XTS系列

我有5个货币对的1033每日返回点,我想在其上运行滚动窗口回归,但rollapply不适用于我定义的使用lm()的函数.这是我的数据:

> head(fxr)
                 USDZAR        USDEUR       USDGBP        USDCHF        USDCAD
2007-10-18 -0.005028709 -0.0064079963 -0.003878743 -0.0099537170 -0.0006153215
2007-10-19 -0.001544470  0.0014275520 -0.001842564  0.0023058211 -0.0111410271
2007-10-22  0.010878027  0.0086642116  0.010599365  0.0051899551  0.0173792230
2007-10-23 -0.022783987 -0.0075236355 -0.010804304 -0.0041668499 -0.0144788687
2007-10-24 -0.006561223  0.0008545792  0.001024275 -0.0004261666  0.0049525483
2007-10-25 -0.014788901 -0.0048523001 -0.001434280 -0.0050425302 -0.0046422944

> tail(fxr)
                 USDZAR       USDEUR       USDGBP       USDCHF        USDCAD
2012-02-10  0.018619309  0.007548205  0.005526184  0.006348533  0.0067151342
2012-02-13 -0.006449463 -0.001055966 -0.002206810 -0.001638002 -0.0016995755
2012-02-14  0.006320364  0.006843933  0.006605875  0.005992935  0.0007001751
2012-02-15 -0.001666872  0.004319096 -0.001568874  0.003686840 -0.0015009759
2012-02-16  0.006419616 -0.003401364 -0.005194817 -0.002709588 …
Run Code Online (Sandbox Code Playgroud)

regression r xts

9
推荐指数
1
解决办法
6796
查看次数

与Numpy不同,熊猫似乎并不喜欢记忆的进步

Pandas似乎缺少一个R风格的矩阵级滚动窗口函数(rollapply(..., by.column = FALSE)),只提供基于矢量的版本.因此,我尝试遵循这个问题,并且它可以复制的示例很好地工作,但DataFrame即使使用(看似相同的)底层Numpy数组,它也无法与pandas一起使用.

人工问题复制:

import numpy as np
import pandas as pd
from numpy.lib.stride_tricks import as_strided

test = [[x * y for x in range(1, 10)] for y in [10**z for z in range(5)]]
mm = np.array(test, dtype = np.int64)
pp = pd.DataFrame(test).values
Run Code Online (Sandbox Code Playgroud)

mmpp外观是相同的:

在此输入图像描述

numpy直接派生矩阵给了我我想要的完美:

as_strided(mm, (mm.shape[0] - 3 + 1, 3, mm.shape[1]), (mm.shape[1] * 8, mm.shape[1] * 8, 8))
Run Code Online (Sandbox Code Playgroud)

也就是说,它在3d矩阵中给出了3个步幅,每个3行,允许我对一次向下移动一行的子矩阵执行计算.

在此输入图像描述

但是熊猫派生的版本(相同的调用mm替换为pp):

 as_strided(pp, (pp.shape[0] - 3 …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy dataframe pandas

8
推荐指数
1
解决办法
690
查看次数

有效地为每个坏值将n个单元格向右延伸n个单元格

假设我有一个长度为30的数组,其中包含4个错误值.我想为那些不好的值创建一个掩码,但由于我将使用滚动窗口函数,我还希望在每个坏值被标记为坏之后有一定数量的后续索引.在下面,n = 3:

在此输入图像描述

我想尽可能高效地执行此操作,因为此例程将在包含数十亿个数据点的大型数据系列上运行多次.因此,我需要尽可能接近numpy矢量化解决方案,因为我想避免python循环.

为了避免重新输入,这里是数组:

import numpy as np
a = np.array([4, 0, 8, 5, 10, 9, np.nan, 1, 4, 9, 9, np.nan, np.nan, 9,\
              9, 8, 0, 3, 7, 9, 2, 6, 7, 2, 9, 4, 1, 1, np.nan, 10])
Run Code Online (Sandbox Code Playgroud)

python numpy bigdata

8
推荐指数
2
解决办法
777
查看次数

如何在Elixir中按关键字拆分列表

假设我有一个单词列表,其中一个关键字,在这种情况下是"停止",划分完整的句子:

["Hello", "from", "Paris", "stop", "Weather", "is", "sunny", "stop", "Missing", "you", "stop"]
Run Code Online (Sandbox Code Playgroud)

我想变成:

[["Hello", "from", "Paris"], ["Weather", "is", "sunny"], ["Missing", "you"]]
Run Code Online (Sandbox Code Playgroud)

我知道我可以用String.split的字符串做到这一点,但理想情况下我想学习如何用基本的功能结构解决上述问题,比如[head | tail]等的递归,但我无法弄清楚在哪里去开始如何累积中间列表.

elixir

8
推荐指数
2
解决办法
591
查看次数

scipy linregress功能错误的标准错误返回?

我有一个奇怪的情况与scipy.stats.linregress似乎返回一个不正确的标准错误:

from scipy import stats
x = [5.05, 6.75, 3.21, 2.66]
y = [1.65, 26.5, -5.93, 7.96]
gradient, intercept, r_value, p_value, std_err = stats.linregress(x,y)
>>> gradient
5.3935773611970186
>>> intercept
-16.281127993087829
>>> r_value
0.72443514211849758
>>> r_value**2
0.52480627513624778
>>> std_err
3.6290901222878866
Run Code Online (Sandbox Code Playgroud)

Excel返回以下内容:

 slope: 5.394

 intercept: -16.281

 rsq: 0.525

 steyX: 11.696
Run Code Online (Sandbox Code Playgroud)

steyX是excel的标准误差函数,返回11.696而不是scipy的3.63.谁知道这里发生了什么?在python中获得回归的标准错误的任何替代方法,而不是去Rpy

python regression scipy

7
推荐指数
2
解决办法
3658
查看次数

在Elixir中,为什么不使用case语句而不是多个函数重载?

我正在学习Elixir并且有点困惑为什么我们必须使用相同函数的多个定义进行分支,而不是使用case语句.以下是来自Elixir in Action的第一版第81页的示例,用于计算文件中的行:

defmodule LinesCounter do
  def count(path) do
    File.read(path)
    |> lines_num
  end

  defp lines_num({:ok, contents}) do
    contents
    |> String.split("\n")
    |> length
  end

  defp lines_num({:error, _}), do: "error"
 end 
Run Code Online (Sandbox Code Playgroud)

所以我们有两个defp lines_num实例来处理以下情况:ok和:error.但是,以下是不是做同样的事情,可以说是更清洁,更简洁,只使用一个函数而不是三个?

defmodule LinesCounterCase do
  def count(file) do
    case File.read(file) do
      {:ok, contents} -> contents |> String.split("\n") |> length
      {:error, _} -> "error"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

两者的工作方式相同.

我不想学习不正确的习语,因为我开始了Elixir的旅程,所以澄清以这种方式使用case语句的缺点,就是我在寻找的东西.

elixir

7
推荐指数
1
解决办法
2955
查看次数

如何向NUMPY数组添加行和列?

您好我有1000个数据系列,每个系列有1500个点.

它们形成一个(1000x1500)大小的Numpy数组,使用np.zeros((1500,1000))创建,然后填充数据.

现在如果我希望阵列增长到1600 x 1100呢?我是否必须使用hstack和vstack添加数组,还是有更好的方法?

我希望不要更改数组中1000x1500片段中的数据,基本上只添加空白数据(零)添加到底部和右侧.

谢谢.

python arrays numpy reshape

6
推荐指数
2
解决办法
1万
查看次数

删除R数据帧中的周末数据

从下面的数据框中可以看出,RBloomberg返回了周末日期的NA.

如果是周末,我想删除整行.我该怎么做?

我不想使用na.omit,因为这可能会删除工作日行,如果/当我在数据中获得NA时出于正当理由.

   ticker       date yld_ytm_mid
1    R206 2011-05-11       6.946
2    R206 2011-05-12       6.969
3    R206 2011-05-13       7.071
4    R206 2011-05-14          NA
5    R206 2011-05-15          NA
6    R201 2011-05-11       7.201
7    R201 2011-05-12       7.213
8    R201 2011-05-13       7.323
9    R201 2011-05-14          NA
10   R201 2011-05-15          NA
11   R157 2011-05-11       7.611
12   R157 2011-05-12       7.622
13   R157 2011-05-13       7.718
14   R157 2011-05-14          NA
15   R157 2011-05-15          NA
16   R203 2011-05-11       8.165
17   R203 2011-05-12       8.170
18   R203 2011-05-13       8.279
19   R203 …
Run Code Online (Sandbox Code Playgroud)

r date weekend

6
推荐指数
2
解决办法
9280
查看次数

as.Date()不尊重POSIXct时区

好吧所以这里是一个微妙的"怪癖"在r as.Date函数转换为带有时区的POSIXct,我想知道它是否是一个bug.

> as.POSIXct("2013-03-29", tz = "Europe/London")
[1] "2013-03-29 GMT"
> as.Date(as.POSIXct("2013-03-29", tz = "Europe/London"))
[1] "2013-03-29"
Run Code Online (Sandbox Code Playgroud)

到目前为止没有问题,但.....

> as.POSIXct("2013-04-01", tz = "Europe/London")
[1] "2013-04-01 BST"
> as.Date(as.POSIXct("2013-04-01", tz = "Europe/London"))
[1] "2013-03-31"
Run Code Online (Sandbox Code Playgroud)

有谁见过这个?这是一个错误还是另一个怪癖?愚人节?

datetime r date posixct

6
推荐指数
1
解决办法
453
查看次数

为什么我不能直接打包xts?

> x <- data.frame(a = rnorm(10), b = rnorm(10), c = rnorm(10))
> x
             a          b            c
1  -1.09651022 -0.7416278  0.209405373
2   1.53644398 -0.9463432  0.374955227
3   1.71132675 -0.3828052  2.024143398
4  -1.10622882 -0.3599187 -0.808780103
5  -0.49616562  0.7061180  0.644142118
6  -1.75452442  0.3890812 -0.623815889
7   0.06315648  0.5103820 -1.501873998
8   0.64856129 -1.0973679  1.432024595
9  -0.62828873 -0.3159317  0.183674189
10 -0.82657934  1.6376569 -0.003601196
> rownames(x) <- as.Date(Sys.Date() - 9:0)
> x
                     a          b            c
2013-06-07 -1.09651022 -0.7416278  0.209405373
2013-06-08  1.53644398 -0.9463432  0.374955227
2013-06-09  1.71132675 -0.3828052  2.024143398 …
Run Code Online (Sandbox Code Playgroud)

r xts

6
推荐指数
1
解决办法
1397
查看次数

标签 统计

python ×4

r ×4

numpy ×3

arrays ×2

date ×2

elixir ×2

regression ×2

xts ×2

bigdata ×1

dataframe ×1

datetime ×1

pandas ×1

posixct ×1

reshape ×1

scipy ×1

weekend ×1