Tôi có mô hình
Trong đó là biến phụ thuộc, và là biến giải thích, và là tham số và là một thuật ngữ lỗi. Tôi có các ước tính tham số của và và ma trận hiệp phương sai của các ước tính này. Làm thế nào để kiểm tra nếu a và b khác nhau đáng kể?
Tôi có mô hình
Trong đó là biến phụ thuộc, và là biến giải thích, và là tham số và là một thuật ngữ lỗi. Tôi có các ước tính tham số của và và ma trận hiệp phương sai của các ước tính này. Làm thế nào để kiểm tra nếu a và b khác nhau đáng kể?
Câu trả lời:
Đánh giá giả thuyết rằng và là khác nhau tương đương với thử nghiệm vô giá trị giả thuyết (đối với phương án mà ).
Các giả thiết phân tích sau đây nó là hợp lý để bạn có thể ước tính là
Phương sai của có thể được biểu diễn dưới dạng ma trận hiệp phương sai của là
Khi được ước tính với ít nhất hình vuông, người ta thường sử dụng một "thử nghiệm t;" có nghĩa là, sự phân bố của
Cụ thể, giá trị p của thử nghiệm t được đưa ra bởi
Trong đó là hàm phân phối Student t (tích lũy). Đây là một biểu thức cho "vùng đuôi:" khả năng biến Sinh viên t (của độ tự do) bằng hoặc vượt quá kích thước của thống kê kiểm tra,
Tổng quát hơn, cho số và bạn có thể sử dụng chính xác phương pháp tương tự để kiểm tra bất kỳ giả thuyết
chống lại sự thay thế hai mặt. (Điều này bao gồm trường hợp đặc biệt nhưng phổ biến của "độ tương phản" .) Sử dụng ma trận hiệp phương sai ước tính để ước tính phương sai của và tạo thành thống kê
Trên đây là trường hợp và
R
e
Đây là mã.
#
# 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)