Ich habe ein Regressionsmodell für einige Zeitreihendaten, die den Drogenkonsum untersuchen. Der Zweck besteht darin, einen Spline an eine Zeitreihe anzupassen und 95% CI usw. zu berechnen. Das Modell sieht wie folgt aus:
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)
Die zusammenfassende Ausgabe von mg
ist:
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
Ich verwende den Pr(>|t|)
Wert von a2
, um zu testen, ob die untersuchten Daten autokorreliert sind.
Ist es möglich, diesen Wert von Pr(>|t|)
(in diesem Modell 0.33329) zu extrahieren und in einem Skalar zu speichern, um einen logischen Test durchzuführen?
Kann es alternativ mit einer anderen Methode ausgearbeitet werden?
r
regression
lm
John
quelle
quelle
Pr(>|t|)
Wert vona2
und keine der ersten drei Spalten verwendet?Antworten:
Ein
summary.lm
Objekt speichert diese Werte in einemmatrix
aufgerufenen'coefficients'
. Auf den Wert, den Sie suchen, kann also zugegriffen werden mit:a2Pval <- summary(mg)$coefficients[2, 4]
Oder allgemeiner / lesbarer
coef(summary(mg))["a2","Pr(>|t|)"]
. Sehen Sie hier , warum dieses Verfahren bevorzugt.quelle
summary
? Woher hast du das gefunden / gewusst?coef(summary(mg))[, c("t value","Pr(>|t|)")]
? Aber danke für den Link - das vergesse ich immer!str(mg)
odernames(mg)
zum Beispiel.data.table
und verwandelte meine Aussichten auf R .. aber muß noch diese Art von Tipps.Das Paket ist
broom
hier praktisch (es verwendet das "ordentliche" Format).tidy(mg)
gibt einen schön formatierten Datenrahmen mit Koeffizienten, t-Statistiken usw. Funktioniert auch für andere Modelle (z. B. plm, ...).Beispiel aus
broom
dem 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
quelle
td[1, "estimate"]
odertd[td$term == "(Intercept)","estimate"]
oder sogartdt <- as.data.table(td); setkey(tdt); tdt["(Intercept)","estimate"]
Um Ihre Frage zu beantworten, können Sie den Inhalt der Modellausgabe untersuchen, indem Sie das Modell als Variable speichern und im Umgebungsfenster darauf klicken. Sie können dann herumklicken, um zu sehen, was es enthält und was wo gespeichert ist.
Eine andere Möglichkeit besteht darin
yourmodelname$
, die Komponenten des Modells einzeln einzugeben und auszuwählen, um zu sehen, was sie jeweils enthalten. Wenn Sie zu kommenyourmodelname$coefficients
, sehen Sie alle gewünschten Beta-, P- und T-Werte.quelle
Übergeben Sie einfach Ihr Regressionsmodell an die folgende Funktion:
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) }
Verwenden Sie wie folgt:
quelle