小编J.R*_*.R.的帖子

使用 auto.arima 在 R 中预测多个时间序列

我的数据集有以下 3 列:

date client_id sales
01/01/2012 client 1 $1000
02/01/2012 client 1 $900
...
...
12/01/2014 client 1 $1000
01/01/2012 client 2 $300
02/01/2012 client 2 $450
...
..
12/01/2014 client 2 $375
Run Code Online (Sandbox Code Playgroud)

等等其他 98 个客户(每个客户每月 24 个数据点)

我有多个客户(大约 100 个)...每个客户的数据采用时间序列格式(每月 24 个数据点)

如何使用 R 中的 auto.arima 自动预测所有 100 个客户的销售额?有 by 语句选项吗?还是我必须使用循环?

谢谢

r time-series

5
推荐指数
1
解决办法
6590
查看次数

在 sql-server-2016 的输出表中保留来自 data.frame 的列名

我有一张桌子sql-server-2016

CREATE TABLE #tempData (A int not null) 
 INSERT INTO #tempData   VALUES (0);
GO
Run Code Online (Sandbox Code Playgroud)

现在我可以调用我的 R 脚本,将表作为输入数据(包括列名):

EXECUTE  sp_execute_external_script
                @language = N'R'
              , @script = N'
                        df <- InputDataSet
                        df$B <- 1L'
              , @input_data_1 = N'SELECT * FROM #tempData'
              , @output_data_1_name = N'df'
WITH RESULT SETS (
    (A int not null, B int not null)
);
Run Code Online (Sandbox Code Playgroud)

返回:

A   B
0   1
Run Code Online (Sandbox Code Playgroud)

正如预期的那样。但是我可以在不指定名称{A,B} 的情况下执行相同操作吗,即它将data.frame直接使用来自 的名称。

sql-server r sql-server-2016

5
推荐指数
1
解决办法
1046
查看次数

列出k数的所有排列,取自0:k,总和为k

这个问题与另一个问题R:sample()密切相关.我想在R中找到一种方法来列出k个数的所有排列,其总和为k,其中每个数字从0:k中选择.如果k = 7,我可以从0,1,...,7中选择7个数字.一个可行的解决方案是0,1,2,3,1,0,0另一个是1,1,1,1,1,1,1.我不想生成所有排列,因为如果k大于7,则会爆炸.

当然在k = 7的例子中我可以使用以下内容:

perms7<-matrix(numeric(7*1716),ncol=7) 
count=0
for(i in 0:7)
    for(j in 0:(7-i))
        for(k in 0:(7-i-j))
            for(l in 0:(7-i-j-k))
                for(n in 0:(7-i-j-k-l))
                    for(m in 0:(7-i-j-k-l-n)){
                            res<-7-i-j-k-l-n-m
                            count<-count+1
                            perms7[count,]<-c(i,j,k,l,n,m,res)
                        }
head(perms7,10)  
Run Code Online (Sandbox Code Playgroud)

但是,如何在不必编写(k-1)循环的情况下概括这种方法来解释任何k?我试图想出一个递归方案:

perms7<-matrix(numeric(7*1716),ncol=7) #store solutions (adjustable size later)
k<-7 #size of interest
d<-0 #depth
count=0 #count of permutations
rec<-function(j,d,a){
    a<-a-j #max loop
    d<-d+1 #depth (posistion)
    for(i in 0:a ) {
        if(d<(k-1)) rec(i,d,a)
        count<<-count+1
        perms7[count,d]<<-i
        perms7[count,k]<<-k-sum(perms7[count,-k])
    }
}
rec(0,0,k)
Run Code Online (Sandbox Code Playgroud)

但是卡住了,我不太确定这是正确的方法.想知道是否有任何"魔术"R功能,这个(虽然非常具体)问题或仅仅是它的一部分.

在k = 7的情况下,所有2.097.152排列和1.716总和为k = 7可以通过以下方式找到:

library(gtools)
k=7
perms <- …
Run Code Online (Sandbox Code Playgroud)

recursion loops r permutation

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