如何捕获 R 中非标准函数的输出?
How to capture output from non-standard function in R?
我正在尝试从 GitHub.
获得的 ur.ls 函数中捕获输出的某些部分
我使用的代码是:
my_test <- ur.ls(y=mydf$x, model = "break", breaks = 2, lags = maxlag, method = "GTOS",pn = 0.1, print.results = "print" )
print(my_test)
给出以下输出:
[[1]]
[[1]]$`t-stat`
[1] -5.529869
[[1]]$`First break`
[1] 35
[[1]]$`Second break`
[1] 55
[[1]]$Runtime
Time difference of 0.07702468 mins
[[2]]
Call:
lm(formula = y.diff ~ 0 + lagmatrix(S.tilde, 1)[, -1] + datmat[,
2:(slag + 2)] + DTt.diff)
Residuals:
Min 1Q Median 3Q Max
-15.1301 -1.7312 0.0684 1.8045 10.3472
Coefficients: (1 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
lagmatrix(S.tilde, 1)[, -1] -0.23512 0.04252 -5.530 5.71e-07 ***
datmat[, 2:(slag + 2)]NoLags NA NA NA NA
datmat[, 2:(slag + 2)]S.tilde.diff.l1 0.21258 0.09923 2.142 0.035797 *
datmat[, 2:(slag + 2)]S.tilde.diff.l2 0.29349 0.10449 2.809 0.006509 **
datmat[, 2:(slag + 2)]S.tilde.diff.l3 0.45070 0.11026 4.088 0.000119 ***
datmat[, 2:(slag + 2)]S.tilde.diff.l4 0.21321 0.13451 1.585 0.117662
datmat[, 2:(slag + 2)]S.tilde.diff.l5 -0.10950 0.11104 -0.986 0.327638
datmat[, 2:(slag + 2)]S.tilde.diff.l6 -0.26316 0.11047 -2.382 0.020050 *
DTt.diff1 -3.48648 1.16726 -2.987 0.003934 **
DTt.diff2 -11.06934 5.14490 -2.152 0.035044 *
DTt.diff3 11.16147 2.60165 4.290 5.87e-05 ***
DTt.diff4 9.94658 5.91986 1.680 0.097575 .
DTt.diff5 -11.26274 2.10680 -5.346 1.17e-06 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 4.34 on 67 degrees of freedom
(7 observations deleted due to missingness)
Multiple R-squared: 0.6446, Adjusted R-squared: 0.5809
F-statistic: 10.13 on 12 and 67 DF, p-value: 5.789e-11
我正在尝试从输出中捕获以下信息:
- t-统计,
- 断点
- lagmatrix(S.tilde, 1)[ -1]
的估计值
- 滞后数
- 休息次数
当然,这可以使用以下方法手动完成:
tstat<- c(-5.529869)
break1<-c(35)
break2<-c(55)
estimate<-c(-0.23512)
nlag<- c(6)
nbreak<- c(2)
但问题是我需要做几个分数,所以这不是很实用。
我首先尝试使用 broom 包使用 tidy 捕获系数,这通常工作得很好,但在这种情况下,tidy 包根本无法识别输出。那就是当我尝试应用它时,我得到:
tidy(my_test)
Error: No tidy method recognized for this list.
在那之后,我设法找到了一种可行的方法,但仅用于捕获 t 统计数据:
tstat<- c(as.numeric(substring((capture.output(print(my_test))[3]),5)))
原则上我可以将其应用于我需要捕获的其他内容,但问题是打印输出中的所有内容都会向上或向下移动,具体取决于我使用的是 1 次还是 2 次中断,此外,滞后次数不断变化。唯一没有改变位置的两件事是开始时的 t-stat 和第一次中断。当从两次中断切换到一次中断时,或根据滞后次数,其他所有内容的位置都会发生变化。
因此,我正在寻找一种方法,即使位置发生变化,也可以动态捕获上述测试的输出。它不一定需要通过 capture.output 函数来完成 - 这只是我设法完成的唯一事情。
dput for my_test:
list(list(`t-stat` = -5.52986939989444, `First break` = 35, `Second break` = 55,
Runtime = structure(0.243574384848277, class = "difftime", units = "mins")),
structure(list(call = lm(formula = y.diff ~ 0 + lagmatrix(S.tilde,
1)[, -1] + datmat[, 2:(slag + 2)] + DTt.diff), terms = y.diff ~
0 + lagmatrix(S.tilde, 1)[, -1] + datmat[, 2:(slag +
2)] + DTt.diff, residuals = c(`8` = 0.872355573916085,
`9` = -0.697717191898609, `10` = -1.2862848943206, `11` = 0.320933377794575,
`12` = -2.40645214393101, `13` = 2.39038766132493, `14` = 1.153249843184,
`15` = -0.39800522090757, `16` = -0.217625238730097, `17` = -2.24998945123775,
`18` = -1.86235465631137, `19` = 1.52748936990644, `20` = 0.722105553225127,
`21` = 1.6896236096191, `22` = 1.21756654083507, `23` = -2.2737081032416,
`24` = -0.0555189856184707, `25` = -1.32745447769992, `26` = -2.69191851601456,
`27` = 0.450323241676394, `28` = -0.619946732648159, `29` = 0.0684171523027832,
`30` = 1.36501867693609, `31` = 7.01636358940376, `32` = 7.45606136222332,
`33` = -0.0603699574229863, `34` = -7.06134338379436, `35` = -3.04120659857061,
`36` = 1.87843876200867e-16, `37` = -1.56067141954618, `38` = -3.98995837788732,
`39` = -2.64034463279261, `40` = 2.46318877060907, `41` = -0.0946579433877879,
`42` = -0.00627968340149751, `43` = -1.12994022351662, `44` = 3.87981944634356,
`45` = 3.3557912879781, `46` = 9.63244802758174, `47` = 5.24100528509744,
`48` = -1.60009293145095, `49` = -5.2376819302277, `50` = -9.38754075959704,
`51` = 10.3471769906691, `52` = -12.1568213639348, `53` = 0.85133551132459,
`54` = 2.24952813266479, `55` = -0.216304186525884, `56` = -3.97245045306514e-16,
`57` = 2.71150736214547, `58` = -3.66810792780268, `59` = 0.358219488791779,
`60` = 1.56109333234247, `61` = -0.753216017616136, `62` = -15.1300849652179,
`63` = 4.61095601773964, `64` = 1.91940902601647, `65` = -3.09550436133278,
`66` = 2.49107250967601, `67` = 3.82885377877594, `68` = 0.787299241035634,
`69` = -5.65977223850224, `70` = -4.46105368830907, `71` = -2.00896053907376,
`72` = -0.983959541709144, `73` = 0.385499753844272, `74` = 1.38470803882371,
`75` = 0.341275340812954, `76` = 0.228639263368348, `77` = -4.17228901167752,
`78` = 1.63431085026858, `79` = 5.33398073977219, `80` = 4.03952947226404,
`81` = 3.63845224619818, `82` = 0.567342464096198, `83` = 3.13210340972586,
`84` = -0.906695505369889, `85` = 4.99623519164391, `86` = -3.1108437307305
), coefficients = structure(c(-0.23511569792016, 0.21258442578596,
0.293489227268745, 0.450696031637051, 0.213211609782706,
-0.109499991050521, -0.263162801329296, -3.48647692130263,
-11.0693444630996, 11.1614685510626, 9.94657879595707, -11.2627444589128,
0.0425174051894693, 0.0992264489202736, 0.104487280919139,
0.110259125401975, 0.134513214269294, 0.111044998102637,
0.110466070195529, 1.16726401701977, 5.1449023295093, 2.60164949654566,
5.91986223733132, 2.10680207458884, -5.52986939989444, 2.14241694728758,
2.80885122750846, 4.08760753356181, 1.5850607015892, -0.986086657854799,
-2.38229531351562, -2.98687946382877, -2.15151692960425,
4.29015075469706, 1.68020443672368, -5.34589584601145, 5.7066830928081e-07,
0.0357972680393423, 0.00650896518048846, 0.000118991853434715,
0.117661531503541, 0.327638306451416, 0.020050387349118,
0.00393444251065558, 0.0350440626131117, 5.87177198313913e-05,
0.0975747763082409, 1.16724779705709e-06), .Dim = c(12L,
4L), .Dimnames = list(c("lagmatrix(S.tilde, 1)[, -1]", "datmat[, 2:(slag + 2)]S.tilde.diff.l1",
"datmat[, 2:(slag + 2)]S.tilde.diff.l2", "datmat[, 2:(slag + 2)]S.tilde.diff.l3",
"datmat[, 2:(slag + 2)]S.tilde.diff.l4", "datmat[, 2:(slag + 2)]S.tilde.diff.l5",
"datmat[, 2:(slag + 2)]S.tilde.diff.l6", "DTt.diff1", "DTt.diff2",
"DTt.diff3", "DTt.diff4", "DTt.diff5"), c("Estimate", "Std. Error",
"t value", "Pr(>|t|)"))), aliased = c(`lagmatrix(S.tilde, 1)[, -1]` = FALSE,
`datmat[, 2:(slag + 2)]NoLags` = TRUE, `datmat[, 2:(slag + 2)]S.tilde.diff.l1` = FALSE,
`datmat[, 2:(slag + 2)]S.tilde.diff.l2` = FALSE, `datmat[, 2:(slag + 2)]S.tilde.diff.l3` = FALSE,
`datmat[, 2:(slag + 2)]S.tilde.diff.l4` = FALSE, `datmat[, 2:(slag + 2)]S.tilde.diff.l5` = FALSE,
`datmat[, 2:(slag + 2)]S.tilde.diff.l6` = FALSE, DTt.diff1 = FALSE,
DTt.diff2 = FALSE, DTt.diff3 = FALSE, DTt.diff4 = FALSE,
DTt.diff5 = FALSE), sigma = 4.34022853989968, df = c(12L,
67L, 13L), r.squared = 0.644573890970572, adj.r.squared = 0.580915483383212,
fstatistic = c(value = 10.1255107596904, numdf = 12,
dendf = 67), cov.unscaled = structure(c(9.59639922665142e-05,
2.20580058347817e-05, -1.86765939916722e-05, -6.97933563296721e-05,
-9.18368279866152e-05, -2.74027448794235e-05, -1.08445650048574e-06,
0.00166049760804861, 0.00505585030558691, -0.00497849874276068,
-0.00336957248783249, 0.00332058543538181, 2.20580058347817e-05,
0.000522672561463745, -0.000170134234480263, -0.000136299258433012,
-0.000156683869192449, 3.20741691986199e-05, 0.000109417994668808,
-0.000340545121006471, 0.000835502882418284, -0.00034262796834208,
-0.00311928203169194, 0.00137747915213809, -1.86765939916722e-05,
-0.000170134234480263, 0.000579564343400617, -0.000118662022760285,
-0.000113907761908382, -7.56369903448711e-05, -1.67418563277836e-05,
-0.000673822989020871, 0.00199348470539279, 0.00202854373119897,
-0.00443981226091342, -0.00134400501096897, -6.97933563296721e-05,
-0.000136299258433012, -0.000118662022760285, 0.000645362742765626,
-5.98565469825177e-05, -3.8229997405084e-05, -0.000146569197018866,
-0.00144027001250464, -0.00434693403705934, 0.004657498011182,
0.00200435070362651, -0.00352774302397917, -9.18368279866152e-05,
-0.000156683869192449, -0.000113907761908382, -5.98565469825177e-05,
0.000960516222555618, -0.000232668650784361, 2.61183442453487e-05,
-0.00216702563816879, -0.010485401200229, 0.00424329320154643,
0.0246863500668702, -0.00150724670465891, -2.74027448794235e-05,
3.20741691986199e-05, -7.56369903448711e-05, -3.8229997405084e-05,
-0.000232668650784361, 0.000654595183149194, -0.000227073038814052,
-0.00050839722994379, -0.00414193034888211, 0.0012164182953312,
-0.0101302132850535, -0.000174392386630977, -1.08445650048574e-06,
0.000109417994668808, -1.67418563277836e-05, -0.000146569197018866,
2.61183442453487e-05, -0.000227073038814052, 0.000647787572328266,
-0.000832648885600449, 0.00184942667154017, -0.00111837128659685,
0.0101221919879007, 0.00341776474899047, 0.00166049760804861,
-0.000340545121006471, -0.000673822989020871, -0.00144027001250464,
-0.00216702563816879, -0.00050839722994379, -0.000832648885600449,
0.0723290896245352, 0.099047414012332, -0.126717608042948,
-0.0879683442319499, 0.0467983613397516, 0.00505585030558691,
0.000835502882418284, 0.00199348470539279, -0.00434693403705934,
-0.010485401200229, -0.00414193034888211, 0.00184942667154017,
0.099047414012332, 1.40517065730678, -0.317384545601921,
-0.294134124076671, 0.205736990719251, -0.00497849874276068,
-0.00034262796834208, 0.00202854373119897, 0.004657498011182,
0.00424329320154643, 0.0012164182953312, -0.00111837128659685,
-0.126717608042948, -0.317384545601921, 0.359312541483163,
0.15130744081174, -0.232250025264234, -0.00336957248783249,
-0.00311928203169194, -0.00443981226091342, 0.00200435070362651,
0.0246863500668702, -0.0101302132850535, 0.0101221919879007,
-0.0879683442319499, -0.294134124076671, 0.15130744081174,
1.86036432914864, -0.0614605342855884, 0.00332058543538181,
0.00137747915213809, -0.00134400501096897, -0.00352774302397917,
-0.00150724670465891, -0.000174392386630977, 0.00341776474899047,
0.0467983613397516, 0.205736990719251, -0.232250025264234,
-0.0614605342855884, 0.235625493888645), .Dim = c(12L,
12L), .Dimnames = list(c("lagmatrix(S.tilde, 1)[, -1]",
"datmat[, 2:(slag + 2)]S.tilde.diff.l1", "datmat[, 2:(slag + 2)]S.tilde.diff.l2",
"datmat[, 2:(slag + 2)]S.tilde.diff.l3", "datmat[, 2:(slag + 2)]S.tilde.diff.l4",
"datmat[, 2:(slag + 2)]S.tilde.diff.l5", "datmat[, 2:(slag + 2)]S.tilde.diff.l6",
"DTt.diff1", "DTt.diff2", "DTt.diff3", "DTt.diff4", "DTt.diff5"
), c("lagmatrix(S.tilde, 1)[, -1]", "datmat[, 2:(slag + 2)]S.tilde.diff.l1",
"datmat[, 2:(slag + 2)]S.tilde.diff.l2", "datmat[, 2:(slag + 2)]S.tilde.diff.l3",
"datmat[, 2:(slag + 2)]S.tilde.diff.l4", "datmat[, 2:(slag + 2)]S.tilde.diff.l5",
"datmat[, 2:(slag + 2)]S.tilde.diff.l6", "DTt.diff1",
"DTt.diff2", "DTt.diff3", "DTt.diff4", "DTt.diff5"))),
na.action = structure(1:7, .Names = c("1", "2", "3",
"4", "5", "6", "7"), class = "omit")), class = "summary.lm"))
这主要是一个子集问题。
tstat = my_test[[1L]][['t-stat']]
## breaks ##
break_names = endsWith(names(my_test[[1L]]), 'break')
nbreak = sum(break_names)
for (i in seq_len(nbreak)) { ## note, I would assign breaks to a list: breaks = my_test[[1L]][break_names]
assign(paste0('break', i), my_test[[1L]][[i + 1L]])
}
estimate = my_test[[2L]][['coefficients']][1L, 1L]
txt = row.names(my_test[[2L]][['coefficients']])
nlag = max(as.integer(regmatches(txt, regexpr("\d*$", txt))), na.rm = TRUE)
唯一不确定的部分是nlag
。它现在很脆弱,因为我不确定它会遵循的规则。但是对于这个数据集,它符合 OP 要求。
我正在尝试从 GitHub.
获得的 ur.ls 函数中捕获输出的某些部分我使用的代码是:
my_test <- ur.ls(y=mydf$x, model = "break", breaks = 2, lags = maxlag, method = "GTOS",pn = 0.1, print.results = "print" )
print(my_test)
给出以下输出:
[[1]]
[[1]]$`t-stat`
[1] -5.529869
[[1]]$`First break`
[1] 35
[[1]]$`Second break`
[1] 55
[[1]]$Runtime
Time difference of 0.07702468 mins
[[2]]
Call:
lm(formula = y.diff ~ 0 + lagmatrix(S.tilde, 1)[, -1] + datmat[,
2:(slag + 2)] + DTt.diff)
Residuals:
Min 1Q Median 3Q Max
-15.1301 -1.7312 0.0684 1.8045 10.3472
Coefficients: (1 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
lagmatrix(S.tilde, 1)[, -1] -0.23512 0.04252 -5.530 5.71e-07 ***
datmat[, 2:(slag + 2)]NoLags NA NA NA NA
datmat[, 2:(slag + 2)]S.tilde.diff.l1 0.21258 0.09923 2.142 0.035797 *
datmat[, 2:(slag + 2)]S.tilde.diff.l2 0.29349 0.10449 2.809 0.006509 **
datmat[, 2:(slag + 2)]S.tilde.diff.l3 0.45070 0.11026 4.088 0.000119 ***
datmat[, 2:(slag + 2)]S.tilde.diff.l4 0.21321 0.13451 1.585 0.117662
datmat[, 2:(slag + 2)]S.tilde.diff.l5 -0.10950 0.11104 -0.986 0.327638
datmat[, 2:(slag + 2)]S.tilde.diff.l6 -0.26316 0.11047 -2.382 0.020050 *
DTt.diff1 -3.48648 1.16726 -2.987 0.003934 **
DTt.diff2 -11.06934 5.14490 -2.152 0.035044 *
DTt.diff3 11.16147 2.60165 4.290 5.87e-05 ***
DTt.diff4 9.94658 5.91986 1.680 0.097575 .
DTt.diff5 -11.26274 2.10680 -5.346 1.17e-06 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 4.34 on 67 degrees of freedom
(7 observations deleted due to missingness)
Multiple R-squared: 0.6446, Adjusted R-squared: 0.5809
F-statistic: 10.13 on 12 and 67 DF, p-value: 5.789e-11
我正在尝试从输出中捕获以下信息:
- t-统计,
- 断点
- lagmatrix(S.tilde, 1)[ -1] 的估计值
- 滞后数
- 休息次数
当然,这可以使用以下方法手动完成:
tstat<- c(-5.529869)
break1<-c(35)
break2<-c(55)
estimate<-c(-0.23512)
nlag<- c(6)
nbreak<- c(2)
但问题是我需要做几个分数,所以这不是很实用。
我首先尝试使用 broom 包使用 tidy 捕获系数,这通常工作得很好,但在这种情况下,tidy 包根本无法识别输出。那就是当我尝试应用它时,我得到:
tidy(my_test)
Error: No tidy method recognized for this list.
在那之后,我设法找到了一种可行的方法,但仅用于捕获 t 统计数据:
tstat<- c(as.numeric(substring((capture.output(print(my_test))[3]),5)))
原则上我可以将其应用于我需要捕获的其他内容,但问题是打印输出中的所有内容都会向上或向下移动,具体取决于我使用的是 1 次还是 2 次中断,此外,滞后次数不断变化。唯一没有改变位置的两件事是开始时的 t-stat 和第一次中断。当从两次中断切换到一次中断时,或根据滞后次数,其他所有内容的位置都会发生变化。
因此,我正在寻找一种方法,即使位置发生变化,也可以动态捕获上述测试的输出。它不一定需要通过 capture.output 函数来完成 - 这只是我设法完成的唯一事情。
dput for my_test:
list(list(`t-stat` = -5.52986939989444, `First break` = 35, `Second break` = 55,
Runtime = structure(0.243574384848277, class = "difftime", units = "mins")),
structure(list(call = lm(formula = y.diff ~ 0 + lagmatrix(S.tilde,
1)[, -1] + datmat[, 2:(slag + 2)] + DTt.diff), terms = y.diff ~
0 + lagmatrix(S.tilde, 1)[, -1] + datmat[, 2:(slag +
2)] + DTt.diff, residuals = c(`8` = 0.872355573916085,
`9` = -0.697717191898609, `10` = -1.2862848943206, `11` = 0.320933377794575,
`12` = -2.40645214393101, `13` = 2.39038766132493, `14` = 1.153249843184,
`15` = -0.39800522090757, `16` = -0.217625238730097, `17` = -2.24998945123775,
`18` = -1.86235465631137, `19` = 1.52748936990644, `20` = 0.722105553225127,
`21` = 1.6896236096191, `22` = 1.21756654083507, `23` = -2.2737081032416,
`24` = -0.0555189856184707, `25` = -1.32745447769992, `26` = -2.69191851601456,
`27` = 0.450323241676394, `28` = -0.619946732648159, `29` = 0.0684171523027832,
`30` = 1.36501867693609, `31` = 7.01636358940376, `32` = 7.45606136222332,
`33` = -0.0603699574229863, `34` = -7.06134338379436, `35` = -3.04120659857061,
`36` = 1.87843876200867e-16, `37` = -1.56067141954618, `38` = -3.98995837788732,
`39` = -2.64034463279261, `40` = 2.46318877060907, `41` = -0.0946579433877879,
`42` = -0.00627968340149751, `43` = -1.12994022351662, `44` = 3.87981944634356,
`45` = 3.3557912879781, `46` = 9.63244802758174, `47` = 5.24100528509744,
`48` = -1.60009293145095, `49` = -5.2376819302277, `50` = -9.38754075959704,
`51` = 10.3471769906691, `52` = -12.1568213639348, `53` = 0.85133551132459,
`54` = 2.24952813266479, `55` = -0.216304186525884, `56` = -3.97245045306514e-16,
`57` = 2.71150736214547, `58` = -3.66810792780268, `59` = 0.358219488791779,
`60` = 1.56109333234247, `61` = -0.753216017616136, `62` = -15.1300849652179,
`63` = 4.61095601773964, `64` = 1.91940902601647, `65` = -3.09550436133278,
`66` = 2.49107250967601, `67` = 3.82885377877594, `68` = 0.787299241035634,
`69` = -5.65977223850224, `70` = -4.46105368830907, `71` = -2.00896053907376,
`72` = -0.983959541709144, `73` = 0.385499753844272, `74` = 1.38470803882371,
`75` = 0.341275340812954, `76` = 0.228639263368348, `77` = -4.17228901167752,
`78` = 1.63431085026858, `79` = 5.33398073977219, `80` = 4.03952947226404,
`81` = 3.63845224619818, `82` = 0.567342464096198, `83` = 3.13210340972586,
`84` = -0.906695505369889, `85` = 4.99623519164391, `86` = -3.1108437307305
), coefficients = structure(c(-0.23511569792016, 0.21258442578596,
0.293489227268745, 0.450696031637051, 0.213211609782706,
-0.109499991050521, -0.263162801329296, -3.48647692130263,
-11.0693444630996, 11.1614685510626, 9.94657879595707, -11.2627444589128,
0.0425174051894693, 0.0992264489202736, 0.104487280919139,
0.110259125401975, 0.134513214269294, 0.111044998102637,
0.110466070195529, 1.16726401701977, 5.1449023295093, 2.60164949654566,
5.91986223733132, 2.10680207458884, -5.52986939989444, 2.14241694728758,
2.80885122750846, 4.08760753356181, 1.5850607015892, -0.986086657854799,
-2.38229531351562, -2.98687946382877, -2.15151692960425,
4.29015075469706, 1.68020443672368, -5.34589584601145, 5.7066830928081e-07,
0.0357972680393423, 0.00650896518048846, 0.000118991853434715,
0.117661531503541, 0.327638306451416, 0.020050387349118,
0.00393444251065558, 0.0350440626131117, 5.87177198313913e-05,
0.0975747763082409, 1.16724779705709e-06), .Dim = c(12L,
4L), .Dimnames = list(c("lagmatrix(S.tilde, 1)[, -1]", "datmat[, 2:(slag + 2)]S.tilde.diff.l1",
"datmat[, 2:(slag + 2)]S.tilde.diff.l2", "datmat[, 2:(slag + 2)]S.tilde.diff.l3",
"datmat[, 2:(slag + 2)]S.tilde.diff.l4", "datmat[, 2:(slag + 2)]S.tilde.diff.l5",
"datmat[, 2:(slag + 2)]S.tilde.diff.l6", "DTt.diff1", "DTt.diff2",
"DTt.diff3", "DTt.diff4", "DTt.diff5"), c("Estimate", "Std. Error",
"t value", "Pr(>|t|)"))), aliased = c(`lagmatrix(S.tilde, 1)[, -1]` = FALSE,
`datmat[, 2:(slag + 2)]NoLags` = TRUE, `datmat[, 2:(slag + 2)]S.tilde.diff.l1` = FALSE,
`datmat[, 2:(slag + 2)]S.tilde.diff.l2` = FALSE, `datmat[, 2:(slag + 2)]S.tilde.diff.l3` = FALSE,
`datmat[, 2:(slag + 2)]S.tilde.diff.l4` = FALSE, `datmat[, 2:(slag + 2)]S.tilde.diff.l5` = FALSE,
`datmat[, 2:(slag + 2)]S.tilde.diff.l6` = FALSE, DTt.diff1 = FALSE,
DTt.diff2 = FALSE, DTt.diff3 = FALSE, DTt.diff4 = FALSE,
DTt.diff5 = FALSE), sigma = 4.34022853989968, df = c(12L,
67L, 13L), r.squared = 0.644573890970572, adj.r.squared = 0.580915483383212,
fstatistic = c(value = 10.1255107596904, numdf = 12,
dendf = 67), cov.unscaled = structure(c(9.59639922665142e-05,
2.20580058347817e-05, -1.86765939916722e-05, -6.97933563296721e-05,
-9.18368279866152e-05, -2.74027448794235e-05, -1.08445650048574e-06,
0.00166049760804861, 0.00505585030558691, -0.00497849874276068,
-0.00336957248783249, 0.00332058543538181, 2.20580058347817e-05,
0.000522672561463745, -0.000170134234480263, -0.000136299258433012,
-0.000156683869192449, 3.20741691986199e-05, 0.000109417994668808,
-0.000340545121006471, 0.000835502882418284, -0.00034262796834208,
-0.00311928203169194, 0.00137747915213809, -1.86765939916722e-05,
-0.000170134234480263, 0.000579564343400617, -0.000118662022760285,
-0.000113907761908382, -7.56369903448711e-05, -1.67418563277836e-05,
-0.000673822989020871, 0.00199348470539279, 0.00202854373119897,
-0.00443981226091342, -0.00134400501096897, -6.97933563296721e-05,
-0.000136299258433012, -0.000118662022760285, 0.000645362742765626,
-5.98565469825177e-05, -3.8229997405084e-05, -0.000146569197018866,
-0.00144027001250464, -0.00434693403705934, 0.004657498011182,
0.00200435070362651, -0.00352774302397917, -9.18368279866152e-05,
-0.000156683869192449, -0.000113907761908382, -5.98565469825177e-05,
0.000960516222555618, -0.000232668650784361, 2.61183442453487e-05,
-0.00216702563816879, -0.010485401200229, 0.00424329320154643,
0.0246863500668702, -0.00150724670465891, -2.74027448794235e-05,
3.20741691986199e-05, -7.56369903448711e-05, -3.8229997405084e-05,
-0.000232668650784361, 0.000654595183149194, -0.000227073038814052,
-0.00050839722994379, -0.00414193034888211, 0.0012164182953312,
-0.0101302132850535, -0.000174392386630977, -1.08445650048574e-06,
0.000109417994668808, -1.67418563277836e-05, -0.000146569197018866,
2.61183442453487e-05, -0.000227073038814052, 0.000647787572328266,
-0.000832648885600449, 0.00184942667154017, -0.00111837128659685,
0.0101221919879007, 0.00341776474899047, 0.00166049760804861,
-0.000340545121006471, -0.000673822989020871, -0.00144027001250464,
-0.00216702563816879, -0.00050839722994379, -0.000832648885600449,
0.0723290896245352, 0.099047414012332, -0.126717608042948,
-0.0879683442319499, 0.0467983613397516, 0.00505585030558691,
0.000835502882418284, 0.00199348470539279, -0.00434693403705934,
-0.010485401200229, -0.00414193034888211, 0.00184942667154017,
0.099047414012332, 1.40517065730678, -0.317384545601921,
-0.294134124076671, 0.205736990719251, -0.00497849874276068,
-0.00034262796834208, 0.00202854373119897, 0.004657498011182,
0.00424329320154643, 0.0012164182953312, -0.00111837128659685,
-0.126717608042948, -0.317384545601921, 0.359312541483163,
0.15130744081174, -0.232250025264234, -0.00336957248783249,
-0.00311928203169194, -0.00443981226091342, 0.00200435070362651,
0.0246863500668702, -0.0101302132850535, 0.0101221919879007,
-0.0879683442319499, -0.294134124076671, 0.15130744081174,
1.86036432914864, -0.0614605342855884, 0.00332058543538181,
0.00137747915213809, -0.00134400501096897, -0.00352774302397917,
-0.00150724670465891, -0.000174392386630977, 0.00341776474899047,
0.0467983613397516, 0.205736990719251, -0.232250025264234,
-0.0614605342855884, 0.235625493888645), .Dim = c(12L,
12L), .Dimnames = list(c("lagmatrix(S.tilde, 1)[, -1]",
"datmat[, 2:(slag + 2)]S.tilde.diff.l1", "datmat[, 2:(slag + 2)]S.tilde.diff.l2",
"datmat[, 2:(slag + 2)]S.tilde.diff.l3", "datmat[, 2:(slag + 2)]S.tilde.diff.l4",
"datmat[, 2:(slag + 2)]S.tilde.diff.l5", "datmat[, 2:(slag + 2)]S.tilde.diff.l6",
"DTt.diff1", "DTt.diff2", "DTt.diff3", "DTt.diff4", "DTt.diff5"
), c("lagmatrix(S.tilde, 1)[, -1]", "datmat[, 2:(slag + 2)]S.tilde.diff.l1",
"datmat[, 2:(slag + 2)]S.tilde.diff.l2", "datmat[, 2:(slag + 2)]S.tilde.diff.l3",
"datmat[, 2:(slag + 2)]S.tilde.diff.l4", "datmat[, 2:(slag + 2)]S.tilde.diff.l5",
"datmat[, 2:(slag + 2)]S.tilde.diff.l6", "DTt.diff1",
"DTt.diff2", "DTt.diff3", "DTt.diff4", "DTt.diff5"))),
na.action = structure(1:7, .Names = c("1", "2", "3",
"4", "5", "6", "7"), class = "omit")), class = "summary.lm"))
这主要是一个子集问题。
tstat = my_test[[1L]][['t-stat']]
## breaks ##
break_names = endsWith(names(my_test[[1L]]), 'break')
nbreak = sum(break_names)
for (i in seq_len(nbreak)) { ## note, I would assign breaks to a list: breaks = my_test[[1L]][break_names]
assign(paste0('break', i), my_test[[1L]][[i + 1L]])
}
estimate = my_test[[2L]][['coefficients']][1L, 1L]
txt = row.names(my_test[[2L]][['coefficients']])
nlag = max(as.integer(regmatches(txt, regexpr("\d*$", txt))), na.rm = TRUE)
唯一不确定的部分是nlag
。它现在很脆弱,因为我不确定它会遵循的规则。但是对于这个数据集,它符合 OP 要求。