The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
Anytime-Valid replacements for base R’s lm and aov functions (with additional robust standard error functionality).
https://arxiv.org/abs/2210.08589.
Contributors: - Michael Lindon (michael.s.lindon@gmail.com)
::install_github("michaellindon/avlm")
devtools
# Generate Data
set.seed(1)
= 100
n = scale(replicate(3, rnorm(n)), center = TRUE, scale = FALSE)
X = sample(c(0, 1), size = n, replace = TRUE)
trt = 1 + 0*X[,1] + 0*X[,2] + 1.4*X[,3] + 2.3*trt + 2*X[,1]*trt + 3*X[,2]*trt + 0*X[,3]*trt + 1*rnorm(n)
y = data.frame(X)
df $trt = trt
df$y = y
df
# Tune g to minimize the width of the confidence interval at n
= 0.05
alpha = ncol(model.matrix(y ~ . + trt * ., data = df))
number_of_coefficients = optimal_g(n, number_of_coefficients, alpha)
g_star
# Summary
= lm(y ~ . + trt * ., data = df)
classic_fit = av(classic_fit, g = g_star)
av_fit summary(av_fit)
confint(av_fit)
Call:
lm(formula = y ~ . + trt * ., data = df)
Residuals:
Min 1Q Median 3Q Max
-3.00823 -0.56961 0.07473 0.78458 1.92584
Coefficients:
Estimate Std. Error t value p value
(Intercept) 0.91630 0.15864 5.776 9.77e-06 ***
X1 -0.12768 0.18087 -0.706 1
X2 -0.14966 0.18283 -0.819 1
X3 1.30556 0.15941 8.190 8.07e-10 ***
trt 2.32245 0.21566 10.769 3.19e-14 ***
X1:trt 2.29985 0.24141 9.527 3.98e-12 ***
X2:trt 3.31166 0.23251 14.243 < 2e-16 ***
X3:trt 0.08015 0.21122 0.379 1
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.065 on 92 degrees of freedom
Multiple R-squared: 0.9164, Adjusted R-squared: 0.91
F-statistic: 144 on 7 and 92 DF, p-value: < 2.2e-16
Anytime-Valid: TRUE
2.5 % 97.5 %
(Intercept) 0.4238730 1.4087195
X1 -0.6890957 0.4337358
X2 -0.7171420 0.4178268
X3 0.8107460 1.8003705
trt 1.6530529 2.9918408
X1:trt 1.5505190 3.0491788
X2:trt 2.5899720 4.0333555
X3:trt -0.5754734 0.7357662
You can use robust standard errors with HC0, HC1, HC2 and HC3. ## Code
av_fit = av(classic_fit, g=g_star, vcov_estimator = "HC0")
summary(av_fit)
confint(av_fit)
Call:
lm(formula = y ~ . + trt * ., data = df)
Residuals:
Min 1Q Median 3Q Max
-3.00823 -0.56961 0.07473 0.78458 1.92584
Coefficients:
Estimate Std. Error t value p value
(Intercept) 0.91630 0.15234 6.015 4.00e-06 ***
X1 -0.12768 0.15327 -0.833 1
X2 -0.14966 0.17150 -0.873 1
X3 1.30556 0.13238 9.862 1.07e-12 ***
trt 2.32245 0.20302 11.439 2.54e-15 ***
X1:trt 2.29985 0.21114 10.893 1.99e-14 ***
X2:trt 3.31166 0.20403 16.232 < 2e-16 ***
X3:trt 0.08015 0.18154 0.441 1
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Multiple R-squared: 0.9164, Adjusted R-squared: 0.91
F-statistic: 1496 on 7 and 92 DF, p-value: < 2.2e-16
Anytime-Valid: TRUE
Robust Standard Error Type: HC0
2.5 % 97.5 %
(Intercept) 0.4434498 1.3891427
X1 -0.6034239 0.3480640
X2 -0.6819698 0.3826546
X3 0.8946528 1.7164637
trt 1.6922727 2.9526209
X1:trt 1.6444954 2.9552024
X2:trt 2.6783800 3.9449474
X3:trt -0.4833522 0.6436451
classic_aov <- aov(Sepal.Length ~ Species, data = iris)
av_aov = av(classic_aov)
summary(av_aov)
Df Sum Sq Mean Sq F value p value
Species 2 63.21 31.606 119.3 <2e-16 ***
Residuals 147 38.96 0.265
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Anytime-Valid: TRUE
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.