我有一个回归模型,用于调查药物利用率的一些时间序列数据。目的是将样条拟合到时间序列并计算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
我使用Pr(>|t|)
a2
值来测试调查中的数据是否自相关。
是否可以提取Pr(>|t|)
的此值(在此模型中为0.33329)并将其存储在标量中以执行逻辑测试?
或者,可以使用其他方法解决吗?
答案 0 :(得分:65)
summary.lm
对象将这些值存储在名为matrix
的{{1}}中。因此,您可以访问以下值:
'coefficients'
或者,更普遍/可读,a2Pval <- summary(mg)$coefficients[2, 4]
。有关此方法首选的原因,请参阅here。
答案 1 :(得分:26)
包broom
在这里派上用场(它使用“整洁”格式)。
tidy(mg)
将为系统,t统计等提供一个格式良好的data.frame。也适用于其他模型(例如plm,...)。
来自broom
的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
答案 2 :(得分:1)
只需将回归模型传递给以下函数:
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)
答案 3 :(得分:0)
要回答您的问题,您可以通过将模型另存为变量并在环境窗口中单击来探索模型输出的内容。然后,您可以单击以查看其中包含的内容以及存储在何处的内容。
另一种方法是键入yourmodelname$
并逐个选择模型的组件以查看每个组件所包含的内容。到达yourmodelname$coefficients
时,您将看到所需的所有beta-,p和t-值。