提取回归系数值

我有一个调查药物利用率的时间序列数据的回归模型。 目的是将时间序列拟合成95%CI等。模型如下:

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) 

mg的总结输出是:

 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 

我正在使用a2Pr(>|t|)值来testing调查中的数据是否是自相关的。

是否有可能提取Pr(>|t|) (在此模型0.33329)的这个值,并将其存储在一个标量来执行逻辑testing?

或者,可以用另一种方法解决吗?

summary.lm对象将这些值存储在称为'coefficients'matrix 。 所以你的价值可以通过以下方式访问:

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

或者更一般地说/ coef(summary(mg))["a2","Pr(>|t|)"] 。 在这里看到为什么这个方法是首选。

broom在这里派上用场(它使用“整洁”格式)。

tidy(mg)将提供一个很好的格式化数据框架与系数,统计等工程也适用于其他模型(如PLM,…)。

broom的github回购示例:

 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 

只要将你的回归模型传递给下面的函数:

  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) } 

使用方法如下:

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

在这里输入图像描述