Answers:
评估和不同的假设 等同于检验零假设 (相对于)。
下面的分析假定您将估计为是合理的 它还接受您的模型公式(通常是一个合理的公式),因为误差是累加的(甚至可能产生负观测值),因此我们不允许通过取双方的对数来对其进行线性化。
的方差可以用的协方差矩阵表示为
当被估计与最小二乘,人们通常使用“t检验;” 也就是说, 分布是通过具有自由度的Student t分布进行近似的(其中是数据计数,是系数的数目) )。无论如何,通常是任何测试的基础。例如,您可以执行Z测试(当大或与最大似然拟合时)或引导它。
具体来说,t检验的p值由下式给出
其中是学生t(累积)分布函数。它是“尾部区域”的一种表达:(个自由度的)Student t变量等于或超过检验统计量
一般来说,对于数字和您可以使用完全相同的方法来检验任何假设
反对双方的选择。(这包括“对比度”的特殊但普遍的情况。)使用估计的方差-协方差矩阵来估计的方差并形成统计量
前面是和
为了检查此建议是否正确,我运行了以下R
代码来根据该模型创建数据(具有正态分布错误e
),进行拟合并多次计算的值。检查是的概率图(基于假定的Student t分布)紧跟对角线。这是在大小为的模拟中绘制的图,其中(选择了一个非常小的数据集,因为分布远离正态分布),而
至少在此示例中,该过程运行良好。 考虑使用反映您的情况的参数(误差标准偏差)和重新运行仿真。
这是代码。
#
# 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)