Wartości współczynnika regresji ekstrakcji
Mam model regresji dla niektórych danych szeregów czasowych badających wykorzystanie narkotyków. Celem jest dopasowanie splajnu do szeregu czasowego i wypracowanie 95% CI itp. Model wygląda następująco:
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)
Sumaryczny wynik mg
to:
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
Używam Pr(>|t|)
wartości a2
, aby sprawdzić, czy badane dane są autokorelowane.
Czy możliwe jest wyodrębnienie tej wartości Pr(>|t|)
(w tym modelu 0.33329) i zapisanie jej w skalarze w celu wykonania logicznego test?
Alternatywnie, czy można to wypracować przy użyciu innej metody?
3 answers
A summary.lm
obiekt przechowuje te wartości w matrix
o nazwie 'coefficients'
. Więc wartość, której szukasz, może być dostępna za pomocą:
a2Pval <- summary(mg)$coefficients[2, 4]
Lub, bardziej ogólnie / czytelnie, coef(summary(mg))["a2","Pr(>|t|)"]
. Zobacz tutaj dlaczego ta metoda jest preferowana.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:19
Pakiet broom
jest tutaj przydatny (używa formatu "tidy").
tidy(mg)
da ładnie sformatowane dane.ramka ze współczynnikami, statystykami t itp. Działa również dla innych modeli (np. plm, ...).
Przykład z 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-08 22:03:37
Wystarczy przekazać swój model regresji do następującej funkcji:
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)
}
Stosować w następujący sposób:
model <- lm(Petal.Width ~ ., data = iris)
plot_coeffs(model)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-19 05:39:50