提取回归系数值

Joh*_*ohn 66 regression r lm

我有一个回归模型的一些时间序列数据调查药物利用率.目的是将样条拟合到时间序列并计算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) 
Run Code Online (Sandbox Code Playgroud)

摘要输出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 
Run Code Online (Sandbox Code Playgroud)

我正在使用Pr(>|t|)a2来测试调查中的数据是否是自相关的.

是否可以提取此值Pr(>|t|)(在此模型中为0.33329)并将其存储在标量中以执行逻辑测试?

或者,可以使用其他方法解决吗?

wkm*_*or1 70

一个summary.lm对象在存储这些数值matrix称为'coefficients'.因此,您可以访问以下值:

a2Pval <- summary(mg)$coefficients[2, 4]
Run Code Online (Sandbox Code Playgroud)

或者,更普遍/可读,coef(summary(mg))["a2","Pr(>|t|)"].请参阅此处了解此方法的首选原因.

  • @PatrickT thx。这些小事情大有不同。我发现了关于`data.table`和_trans__我对_R_ ..的看法,但是仍然需要这些技巧。 (2认同)

Hel*_*123 29

这个包broom在这里派上用场(它使用"整洁"格式).

tidy(mg) 将给出一个很好的格式化data.frame与系数,t统计等.也适用于其他模型(如plm,...).

来自broom's github repo的例子:

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
Run Code Online (Sandbox Code Playgroud)


Cyb*_*tic 9

只需将回归模型传递到以下函数中即可:

    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)
    }
Run Code Online (Sandbox Code Playgroud)

使用方法如下:

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

plot_coeffs(model)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述