Testmodellkoeffizient (Regressionssteigung) gegen einen bestimmten Wert

20

In R, wenn ich ein (verallgemeinerte) lineares Modell habe ( lm, glm, gls, glmm, ...), wie kann ich testen , um die Koeffizienten (Regressions slope) gegen einen anderen Wert als 0 & le ; In der Zusammenfassung des Modells werden die t-Testergebnisse des Koeffizienten automatisch gemeldet, jedoch nur zum Vergleich mit 0. Ich möchte sie mit einem anderen Wert vergleichen.

Ich weiß, ich kann einen Trick bei der Reparametrisierung verwenden, y ~ xwie y - T*x ~ x, woT der getestete Wert ist, und dieses reparametrisierte Modell ausführen, aber ich suche eine einfachere Lösung, die möglicherweise auf dem ursprünglichen Modell funktionieren würde.

Neugierig
quelle

Antworten:

17

Hier ist eine umfassendere Lösung, die mit jedem Paket funktioniert, oder auch wenn Sie nur die Regressionsausgabe haben (z. B. von einem Papier).

Nehmen Sie den Koeffizienten und seinen Standardfehler.

Compute . Die df für dastsind die gleichen wie für einen Test mitH0:β=0.t=β^βH0s.e.(β^)tH0:β=0

Glen_b - Setzen Sie Monica wieder ein
quelle
1
Danke Glen, das weiß ich von [dieser tollen Antwort]. Aber wie bekomme ich den p-Wert aus dem t-Wert?
Neugierig
2
@Curiouspt()
Affine
@Curious: Wie Affine sagtm die R-Funktion pt - oder irgendetwas anderes, das dir den Wert von t cdfs gibt. Viele Pakete haben diese und es gibt weit verbreitete T-Tabellen.
Glen_b -Reinstate Monica
Es wäre schön, wenn lm, lmer und die anderen direkt einen von Null verschiedenen Testparameter akzeptieren würden.
Skan
@skan Es ist buchstäblich eine einzelne Zeile R-Code, um einen p-Wert zu erhalten. Es wäre eine einfache Sache, eine kleine Funktion zu schreiben, um die Ausgabe von summary.lm zu übernehmen und eine neue Tabelle nach Ihren genauen Spezifikationen zu erstellen.
Glen_b
10

Sie können entweder einen einfachen T-Test wie von Glen_b vorgeschlagen oder einen allgemeineren Wald-Test verwenden.

Rβ=qβ

In Ihrem Beispiel, in dem Sie nur eine Hypothese für einen Parameter haben, ist R ein Zeilenvektor mit einem Wert von Eins für den betreffenden Parameter und Null an anderer Stelle, und q ist ein Skalar mit der Einschränkung zum Testen.

In R können Sie einen Wald-Test mit der Funktion linearHypothesis () aus dem Paket car ausführen . Angenommen, Sie möchten überprüfen, ob der zweite Koeffizient (angegeben durch das Argument hypothesis.matrix ) von 0,1 (Argument rhs ) abweicht :

reg <- lm(freeny)
coef(reg)

# wald test for lag.quarterly.revenue =0.1
>library(car)
>linearHypothesis(reg, hypothesis.matrix = c(0, 1, rep(0,3)), rhs=0.1)
#skip some result, look at last value on last row, of Pr(>F) 
  Res.Df       RSS Df  Sum of Sq      F Pr(>F)
1     35 0.0073811                            
2     34 0.0073750  1 6.0936e-06 0.0281 0.8679

Für den t-Test implementiert diese Funktion den von Glen_b gezeigten t-Test:

ttest <- function(reg, coefnum, val){
  co <- coef(summary(reg))
  tstat <- (co[coefnum,1]-val)/co[coefnum,2]
  2 * pt(abs(tstat), reg$df.residual, lower.tail = FALSE)
}

> ttest(reg, 2,0.1)
[1] 0.8678848

Stellen wir sicher, dass wir das richtige Verfahren gefunden haben, indem wir den Wald-Test, unseren t-Test und den R-Standard-t-Test für die Standardhypothese vergleichen, dass der zweite Koeffizient Null ist:

> linearHypothesis(reg, hypothesis.matrix = c(0, 1, rep(0,3)), rhs=0)[["Pr(>F)"]][2]
[1] 0.3904361
> ttest(reg, 2,0)
[1] 0.3904361
## The 'right' answer from R:
> coef(summary(reg))[2,4]
[1] 0.3904361

Sie sollten das gleiche Ergebnis mit den drei Verfahren erhalten.

Matifou
quelle
sieht gut aus! Können Sie bitte den hypothesis.matrixParameter erklären ?
Neugierig
Ich bin mir nicht sicher, ob der Wald-Test dies tut. Ich wollte den normalen t-Test verwenden, der standardmäßig zusammen mit den Parametern angegeben wird, aber nicht mit 0, sondern mit einem anderen Wert.
Neugierig
@Curious Hoffe es ist jetzt klarer?
Matifou
3

Am Ende war die Reparametrisierung bei weitem die einfachste Lösung:

gls(I(y - T*x) ~ x, ...)
Neugierig
quelle
Wird das zu den gleichen Ergebnissen führen?
16.
Aber Sie subtrahieren etwas, das nicht unabhängig ist. Wäre es nicht ein Problem mit den Annahmen für die kleinsten Quadrate oder mit der Kollinearität? Wie unterscheidet es sich von lm (y ~ x + + offset (T * x))?
Skan
1
@skan die Regression ist abhängig von x, da gibt es keine Abhängigkeit; Es sollte dasselbe sein wie bei Verwendung von Offset.
Glen_b