답변:
와 가 다르다는 가설을 평가하는 것은 귀무 가설 을 테스트하는 것과 같습니다 ( 대안 ).
다음 분석은 를 추정하는 것이 합리적이라고 가정합니다 오류가 있기 때문에 - 또한, (종종 합리적이다) 모델 정립 받아 첨가제 (심지어 부정적 관찰 된 값을 생산할 수있는 ) - 우리를 허용하지 않습니다 를 선형화 양쪽의 대수를 취함으로써를.
의 분산 공분산 행렬로 표현 될 수있다 의 로서
경우 되는 최소 제곱 추정, 하나는 보통 "t 테스트를 「사용 즉, 분포 는 자유도를 갖는 Student t 분포에 의해 근사됩니다 (여기서 은 데이터 수이고 는 계수 수를 나타냄) ). 어쨌든, 일반적으로 모든 테스트의 기초입니다. 예를 들어 Z 테스트 ( 이 크거나 Maximum Likelihood에 적합 할 때)를 수행하거나 부트 스트랩 할 수 있습니다.
구체적으로, t 검정의 p- 값은
여기서 는 학생 t (누적) 분포 함수입니다. 이것은 "꼬리 영역"에 대한 하나의 표현입니다. ( 자유도의 Student t 변수 )가 검정 통계량의 크기와 같거나이를 초과 할 확률 ,
더 일반적으로, 숫자 및 경우 가설을 검정하기 위해 정확히 동일한 접근법을 사용할 수 있습니다
양면 대안에 반대합니다. (이것은 "콘트라스트" 의 특수하지만 널리 퍼져있는 경우를 포함합니다 .) 추정 분산 공분산 행렬 을 사용하여 의 분산을 추정 하고 통계량을 형성하십시오.
위의 경우는 및
이 조언이 올바른지 확인R
하기 위해 다음 코드를 실행 하여이 모델에 따라 데이터를 생성하고 (정규 분포 오류 포함 e
) 적합하게 만들고 값을 여러 번 계산했습니다 . 확인 된 의 확률도 (가정 된 학생 t 분포에 기초한)는 대각선에 가깝습니다. 다음은 크기 의 시뮬레이션 에서 ( 분포가 법선과 거리가 멀기 때문에 선택되는 매우 작은 데이터 세트 ) 및 플롯입니다= B = - 1 / 2.
이 예에서는 적어도 절차가 아름답게 작동합니다. 상황을 반영 하는 매개 변수 (오류 표준 편차) 및 을 사용하여 시뮬레이션을 다시 실행하는 것이 좋습니다.
코드는 다음과 같습니다.
#
# 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)