R线性优效性而不仅仅是等同性的假设(汽车 Package )检验

bwitn5fc  于 2023-03-10  发布在  其他
关注(0)|答案(2)|浏览(106)

我使用的是R中faraway包中的corrosion数据集。我使用以下内容构建了一个简单的线性模型:

# Load the data
data(corrosion)
help(corrosion) # Display in the "Help" window some informations
head(corrosion)

# Simple linear regression
model <- lm(loss ~ Fe, data = corrosion)
summary(model)

其中一个问题是:“您想要检验零假设,即在铁含量为1.5%时,相同的预期体重减轻等于95 mg/dm 2/天”
为了回答这个问题,我使用car包中的linearHypothesis函数。

# H0: C*beta = rhs
linearHypothesis(model, c(1, 1.5), rhs = 95)

它给予了这个检验的p值。

现在我的问题是如果零假设H 0如下:“体重减轻至少95 mg/dm 2/天”,如何测试?

换句话说,H 0方程的第一个问题是:* 假设:(截距)+ 1.5 Fe = 95* 现在我想测试H 0:* 假设:(截距)+1.5铁〉= 95*
提前感谢您的帮助!

jm81lzqq

jm81lzqq1#

基于t_value <- summary(model)$coefficients["Fe", "t value"]的答案不正确。该t_value将用于H0: Fe = 0的测试,而不是用于H0: Hypothesis: (Intercept) + 1.5 Fe >= 95的测试。
这里的困难在于linearHypothesis()函数不做单侧测试。
执行单侧检验的一种方法是使用单侧检验和双侧检验的p值之间的关系,当参数估计值具有正态分布误差时,该关系适用于线性模型。
如果H0: param = xH1: param != x的检验的p值为p,则H0: param >= xH1: param < x的检验的p值将为p/21-p/2。当参数估计值小于x时,p值将为p/2;当参数估计值大于x时,p值将为1-p/2
在您的示例中,参数为(intercept) + 1.5*Fe,其估计值可以从summary(model)中找到,为129.787 - 1.5*24.02 = 93.757,小于95,因此您应该使用p/2 = 0.3097/2 = 0.15485
编辑以添加:上面的答案实际上是对统计问题的回答,而不是对编程问题的回答。下面是编程的方法:

library(faraway)
library(car)
#> Loading required package: carData
#> 
#> Attaching package: 'car'
#> The following objects are masked from 'package:faraway':
#> 
#>     logit, vif

# Load the data
data(corrosion)

# Simple linear regression
model <- lm(loss ~ Fe, data = corrosion)

# Two-sided test of H0: (intercept) + 1.5 Fe = 95

test <- linearHypothesis(model, c(1, 1.5), rhs = 95)
test
#> Linear hypothesis test
#> 
#> Hypothesis:
#> (Intercept)  + 1.5 Fe = 95
#> 
#> Model 1: restricted model
#> Model 2: loss ~ Fe
#> 
#>   Res.Df    RSS Df Sum of Sq      F Pr(>F)
#> 1     12 113.45                           
#> 2     11 102.85  1    10.603 1.1341 0.3097

p <- test$"Pr(>F)"[2]
p
#> [1] 0.3097301

estimate <- coef(model) %*% c(1, 1.5)
estimate
#>          [,1]
#> [1,] 93.75676

onesided <- if (estimate < 95) p/2 else 1 - p/2
onesided
#> [1] 0.1548651

创建于2023年3月5日,使用reprex v2.0.2

vmpqdwk3

vmpqdwk32#

阿德里安·里奥,一个出路可能是...
首先,从拟合模型中提取t-value

# Simple linear regression
model <- lm(loss ~ Fe, data = corrosion)

检验零假设H0:(截距)+1.5 Fe〉= 95,我们需要使用估计的系数及其标准误差计算t值:

# first, extract the estimated coefficients and their standard errors
b <- coef(model)
SE_of_b <- sqrt(diag(vcov(model)))

# the, calculate the t-value for `(intercept) + 1.5 Fe = 95`
t_value <- (b[1] + 1.5 * b[2] - 95) / sqrt(SE_of_b[1]^2 + (1.5 * SE_of_b[2])^2)

然后计算p值:

# finally, calculate the 'p-values' (for the one-sided test where the 
# null hypothesis is '(intercept) + 1.5 Fe >= 95')

p_value <- pt(t_value, df = nrow(corrosion) - 2, lower.tail = TRUE)

最后,

# if the p-value is less than 0.5 (significance level) and t_value is less than 0, 
# reject Null Hypothesis (H0), otherwise, we fail to reject H0

ifelse((p_value < 0.5 & t_value < 0), "Reject H0: loss is less than 95mg/dm2/day", "Failed to reject the H0: weight loss is at least 95mg/dm2/day")

这里,我假设零假设定义为:

Null hypothesis (H0): (intercept) + 1.5*Fe >= 95

and,

Alternative hypothesis: (intercept) + 1.5*Fe < 95

如果你有什么想法就告诉我...

相关问题