bs() 输出时间序列解释

问题描述

为简单起见,请考虑以下 df:

enter prod.1 <- as.numeric(c(sample(0:25,10,replace = TRUE)))
prod.2 <-  as.numeric(c(sample(0:25,replace = TRUE)))  
prod.3 <-  as.numeric(c(sample(0:25,replace = TRUE))) 
df <- as.data.frame(rbind( prod.1,prod.2,prod.3))
colnames(df) <- c("day.1","day.2","day.3","day.4","day.5","day.6","day.7","day.8","day.9","day.10") 
View(df)
df<- unlist(df)
library(splines)
bs(df,knots=3,degree = 3)

我明白了

                  1          2          3            4
day.11  0.142857143 0.40816327 0.37026239 0.0787172012
day.12  0.000000000 0.00000000 0.00000000 1.0000000000
day.13  0.042328042 0.24792139 0.47251917 0.2372314005
day.21  0.002232143 0.04655612 0.32147413 0.6297376093
day.22  0.010333995 0.11633125 0.43104990 0.4422848504
day.23  0.338624339 0.45956160 0.18831660 0.0134974625
day.31  0.042328042 0.24792139 0.47251917 0.2372314005
day.32  0.000000000 0.00000000 0.00000000 1.0000000000
day.33  0.005291005 0.07860922 0.38559551 0.5305042652
day.41  0.060267857 0.29272959 0.46041363 0.1865889213
day.42  0.000000000 0.00000000 0.00000000 0.0000000000
day.43  0.005291005 0.07860922 0.38559551 0.5305042652
day.51  0.837962963 0.12037037 0.00462963 0.0000000000
day.52  0.060267857 0.29272959 0.46041363 0.1865889213
day.53  0.005291005 0.07860922 0.38559551 0.5305042652
day.61  0.082671958 0.33541194 0.43819512 0.1437209805
day.62  0.661375661 0.30234316 0.03617320 0.0001079797
day.63  0.017857143 0.15816327 0.45954810 0.3644314869
day.71  0.226851852 0.45370370 0.28240741 0.0370370370
day.72  0.000000000 0.00000000 0.00000000 0.0000000000
day.73  0.226851852 0.45370370 0.28240741 0.0370370370
day.81  0.000000000 0.00000000 0.00000000 1.0000000000
day.82  0.082671958 0.33541194 0.43819512 0.1437209805
day.83  0.661375661 0.30234316 0.03617320 0.0001079797
day.91  0.837962963 0.12037037 0.00462963 0.0000000000
day.92  0.010333995 0.11633125 0.43104990 0.4422848504
day.93  0.110036376 0.37440949 0.40757444 0.1079796998
day.101 0.338624339 0.45956160 0.18831660 0.0134974625
day.102 0.142857143 0.40816327 0.37026239 0.0787172012
day.103 0.142857143 0.40816327 0.37026239 0.0787172012
attr(,"degree")
[1] 3
attr(,"knots")
[1] 3
attr(,"Boundary.knots")
[1]  0 24
attr(,"intercept")
[1] FALSE
attr(,"class")
[1] "bs"     "basis"  "matrix"

我是 B 样条曲线和时间序列的新手。但正如我到目前为止在网上学到的那样,使用 B 样条技术,我将把我的 10 天间隔分成例如 4 个部分(因此 3 个结(假设它已经将第 1 天和第 10 天视为结束结)),并找到最好的每个部分的三次多项式,并随着我的时间获得我的数据的平滑曲线。
我一直在看例子,我看到了一些我不明白的东西。
如果我的 x 轴是时间(每天到第 10 天),那么我的 y 轴只能是数据集的行之一。 然后当我将单行数据集提供给 bs() 时,r 给了我一个错误。如果我给它我的所有数据集,它会给我上面的结果。
我看到我得到 1 到 4 件。但是为什么我会在第 11 天到第 103 天收到所有这些行?这个 bs() 函数输出数字在这里是什么意思? 我正在关注 https://github.com/RoryMichelen/Medium-Articles/commit/1003ae4a20057c9e3a95c8dc5da707d0c5765107 第 118 行,他有一个与我的格式相同的数据集。他正在对从 0 到 1 的数字序列运行 bs(),length.out = ncol(dataset)。 我不确定这里发生了什么。我不想标准化我的数据。我只想要我的数据的样条曲线。 虽然我在网上尝试了我的 ts 示例,但我找不到与我类似的数据集格式。 如果您能帮助我解释此输出,我将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)