Die Bewertung der Hypothese, dass ein und b unterschiedlich sind, entspricht der Prüfung der Nullhypothese a - b = 0 (gegen die Alternative, dass a - b ≤ 0 ).
Die folgende Analyse vermutet es ist sinnvoll für Sie zu schätzen , a - b als U= a^- b^.
Es akzeptiert auch Ihre Modellformulierung (die oft eine vernünftige ist), die - da die Fehler additiv sind (und sogar negative beobachtete Werte von y erzeugen können ) - es uns nicht erlaubt, sie durch Logarithmen beider Seiten zu linearisieren .
Die Varianz von U kann hinsichtlich der Kovarianzmatrix ausgedrückt werden ( cich j) von ( a^, b^) als
Var( U) = Var( a^- b^) = Var( a^) + Var( b^)−2Cov(a^,b^)=c11+c22−2c212.
Wenn (a^,b^) wird mit der kleinsten Quadrate geschätzt wird , verwendet man in der Regel einen "t - Test"; das heißt, die Verteilung von t=U/Var(U)−−−−−−√
durch eine angenähert wirdStudenttVerteilungmitn−2Freiheitsgraden (wobeindie Daten zählen und2zählt die Anzahl der Koeffizienten). Unabhängig davon isttRegel die Grundlage eines Tests. Sie können beispielsweise einen Z-Test durchführen (wennngroß ist oder mit maximaler Wahrscheinlichkeit passt) oder einen Bootstrap durchführen.
Konkret ist der p-Wert des t-Tests gegeben durch
p = 2 tn - 2(−|t|)
Dabei ist tn−2 die (kumulative) Verteilungsfunktion des Schülers t. Es ist ein Ausdruck für den „Heckbereich:“ Die Chance , dass ein Student t Variable (von n−2 Freiheitsgraden) gleich oder größer als die Größe der Teststatistik, |t|.
Im Allgemeinen, mehr für Zahlen c1, c2, und μ können Sie genau die gleiche Methode verwenden , jede Hypothese zu testen ,
H0:c1a+c2b=μ
gegen die zweiseitige Alternative. (Dies schließt den speziellen, aber weit verbreiteten Fall eines "Kontrasts" ein .) Verwenden Sie die geschätzte Varianz-Kovarianz-Matrix (cij) , um die Varianz von U=c1a+c2b zu schätzen und die Statistik zu bilden
t=(c1a^+c2b^−μ)/Var(U)−−−−−−√.
Das Vorstehende ist der Fall (c1,c2)=(1,−1) und μ=0.
Um zu überprüfen, ob dieser Rat richtig ist, habe ich den folgenden R
Code ausgeführt, um Daten nach diesem Modell (mit normalverteilten Fehlern e
) zu erstellen , anzupassen und die Werte von t viele Male zu berechnen . Die Überprüfung besteht darin, dass das Wahrscheinlichkeitsdiagramm von t (basierend auf der angenommenen Student-t-Verteilung) eng der Diagonale folgt. Hier ist das Grundstück in einer Simulation der Größe 500 , wo n=5 (ein sehr kleiner Datensatz gewählt, weil die t Verteilung weit von Normal ist) und a=b=−1/2.
Zumindest in diesem Beispiel funktioniert die Prozedur sehr gut. Überlegen Sie sich, die Simulation mit den Parametern a, b, σ (Standardabweichung des Fehlers) und n , die Ihre Situation widerspiegeln, erneut auszuführen.
Hier ist der Code.
#
# Specify the true parameters.
#
set.seed(17)
a <- -1/2
b <- -1/2
sigma <- 0.25 # Variance of the errors
n <- 5 # Sample size
n.sim <- 500 # Simulation size
#
# Specify the hypothesis.
#
H.0 <- c(1, -1) # Coefficients of `a` and `b`.
mu <- 0
#
# Provide x and z values in terms of their logarithms.
#
log.x <- log(rexp(n))
log.z <- log(rexp(n))
#
# Compute y without error.
#
y.0 <- exp(a * log.x + b * log.z)
#
# Conduct a simulation to estimate the sampling distribution of the t statistic.
#
sim <- replicate(n.sim, {
#
# Add the errors.
#
e <- rnorm(n, 0, sigma)
df <- data.frame(log.x=log.x, log.z=log.z, y.0, y=y.0 + e)
#
# Guess the solution.
#
fit.ols <- lm(log(y) ~ log.x + log.z - 1, subset(df, y > 0))
start <- coefficients(fit.ols) # Initial values of (a.hat, b.hat)
#
# Polish it using nonlinear least squares.
#
fit <- nls(y ~ exp(a * log.x + b * log.z), df, list(a=start[1], b=start[2]))
#
# Test a hypothesis.
#
cc <- vcov(fit)
s <- sqrt((H.0 %*% cc %*% H.0))
(crossprod(H.0, coef(fit)) - mu) / s
})
#
# Display the simulation results.
#
summary(lm(sort(sim) ~ 0 + ppoints(length(sim))))
qqplot(qt(ppoints(length(sim)), df=n-2), sim,
pch=21, bg="#00000010", col="#00000040",
xlab="Student t reference value",
ylab="Test statistic")
abline(0:1, col="Red", lwd=2)