我使用的是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*
提前感谢您的帮助!
2条答案
按热度按时间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 = x
与H1: param != x
的检验的p值为p
,则H0: param >= x
与H1: param < x
的检验的p值将为p/2
或1-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
。编辑以添加:上面的答案实际上是对统计问题的回答,而不是对编程问题的回答。下面是编程的方法:
创建于2023年3月5日,使用reprex v2.0.2
vmpqdwk32#
阿德里安·里奥,一个出路可能是...
首先,从拟合模型中提取
t-value
:检验零假设H0:(截距)+1.5 Fe〉= 95,我们需要使用估计的系数及其标准误差计算t值:
然后计算p值:
最后,
这里,我假设零假设定义为:
如果你有什么想法就告诉我...