R语言中线性回归假设检验与t.test的p值差异疑问
为什么
summary(lm(y~x))和t.test(x,y)的p值差异这么大? 哈哈,这个问题我刚接触R的时候也踩过坑,核心原因是你用这两个函数做了完全不同的统计检验,它们回答的是两个八竿子打不着的问题,所以p值天差地别太正常了!
先搞懂两个检验到底在测什么
summary(lm(y~x))里的p值:这正是你要找的结果!它对应的是你设定的假设检验H₀:β₁=0 vs H₁:β₁≠0,也就是检验简单线性回归模型y = β₀ + β₁x + ε中,自变量x的斜率系数是否显著不为0——说白了就是在问“x和y之间有没有显著的线性关系”。这个p值0.02781小于你的显著性水平α=0.05,刚好可以拒绝原假设,说明x对y有显著的线性预测作用。t.test(x,y)的p值:默认情况下,这个函数做的是独立两样本t检验,它的原假设是“x的总体均值等于y的总体均值”,备择假设是“两者均值不相等”。这和你要检验的“x和y的线性关系”完全是两个问题!比如如果你的x和y均值差异极大,但线性关系很弱,那这个检验的p值就会极小(像你看到的5.71e-15),但这和线性回归的斜率半毛钱关系都没有。
额外补充:如果想通过t检验等价于回归斜率检验怎么办?
如果你想用t检验来验证x和y的线性关系(也就是和回归斜率检验等价),应该用cor.test(x,y)——这个函数是检验Pearson相关系数是否为0,它的p值和summary(lm(y~x))里斜率的p值是完全一致的,因为简单线性回归的斜率显著性检验和Pearson相关系数的显著性检验本来就是等价的。
内容的提问来源于stack exchange,提问作者Worldman




