Extraer valores del coeficiente de regresión

Tengo un modelo de regresión para algunos datos de series de tiempo que investigan la utilización de medicamentos. El objective es ajustar una spline a una serie temporal y calcular un 95% de IC, etc. El modelo es el siguiente:

id <- ts(1:length(drug$Date)) a1 <- ts(drug$Rate) a2 <- lag(a1-1) tg <- ts.union(a1,id,a2) mg <-lm (a1~a2+bs(id,df=df1),data=tg) 

El resultado de resumen de mg es:

 Call: lm(formula = a1 ~ a2 + bs(id, df = df1), data = tg) Residuals: Min 1Q Median 3Q Max -0.31617 -0.11711 -0.02897 0.12330 0.40442 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 0.77443 0.09011 8.594 1.10e-11 *** a2 0.13270 0.13593 0.976 0.33329 bs(id, df = df1)1 -0.16349 0.23431 -0.698 0.48832 bs(id, df = df1)2 0.63013 0.19362 3.254 0.00196 ** bs(id, df = df1)3 0.33859 0.14399 2.351 0.02238 * --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Estoy usando el valor Pr(>|t|) de a2 para probar si los datos bajo investigación están autocorrelacionados.

¿Es posible extraer este valor de Pr(>|t|) (en este modelo 0.33329) y almacenarlo en un escalar para realizar una prueba lógica?

Alternativamente, ¿se puede resolver usando otro método?

Un objeto summary.lm almacena estos valores en una matrix llamada 'coefficients' . Entonces, se puede acceder al valor que está buscando con:

 a2Pval <- summary(mg)$coefficients[2, 4] 

O, de forma más general / legible, coef coef(summary(mg))["a2","Pr(>|t|)"] . Vea aquí por qué se prefiere este método.

La broom paquete es útil aquí (usa el formato “ordenado”).

tidy(mg) proporcionará un data.came de formato agradable con coeficientes, t estadísticas, etc. Funciona también para otros modelos (p. ej., plm, …).

Ejemplo del repository github de broom:

 lmfit <- lm(mpg ~ wt, mtcars) require(broom) tidy(lmfit) term estimate std.error statistic p.value 1 (Intercept) 37.285 1.8776 19.858 8.242e-19 2 wt -5.344 0.5591 -9.559 1.294e-10 is.data.frame(tidy(lmfit)) [1] TRUE 

Simplemente pase su modelo de regresión a la siguiente función:

  plot_coeffs <- function(mlr_model) { coeffs <- coefficients(mlr_model) mp <- barplot(coeffs, col="#3F97D0", xaxt='n', main="Regression Coefficients") lablist <- names(coeffs) text(mp, par("usr")[3], labels = lablist, srt = 45, adj = c(1.1,1.1), xpd = TRUE, cex=0.6) } 

Use de la siguiente manera:

 model <- lm(Petal.Width ~ ., data = iris) plot_coeffs(model) 

enter image description here