R语言var.test与t.test报错求助:变量长度不一致
问题排查与解决
错误原因
你当前的代码犯了两个关键错误:
- 公式语法误用:
var.test和t.test的A ~ B公式写法,要求A和B是长度完全一致的向量,但df.t1$MPG.city(Compact车型样本)和df.t2$MPG.city(Large车型样本)的数量本来就不一样,直接用~拼接必然触发"variable lengths differ"报错。 - 语法格式错误:第二行代码里的
Type ==type t1``是引号和反引号混用的错误写法,正确的分组匹配应该是Type == "Compact"。
正确写法
方法1:用已拆分好的数据框(直接传向量)
既然已经把两组数据单独存成了df.t1和df.t2,直接把两组的油耗向量作为参数传入即可,不用公式:
# 方差齐性检验 var.test(df.t1$MPG.city, df.t2$MPG.city) # 独立样本t检验 t.test(df.t1$MPG.city, df.t2$MPG.city)
方法2:基于原始数据集用公式(更简洁规范)
不需要提前拆分数据,直接在原始Cars93数据集里筛选目标分组,用公式指定数值变量和分组变量:
# 先加载MASS包 library(MASS) # 方差齐性检验:仅筛选Compact和Large类型的样本 var.test(MPG.city ~ Type, data = subset(Cars93, Type %in% c("Compact", "Large"))) # 独立样本t检验 t.test(MPG.city ~ Type, data = subset(Cars93, Type %in% c("Compact", "Large")))
额外提示
- 方差齐性检验的结果决定t检验类型:如果检验p值>0.05,说明方差齐,可在
t.test中加var.equal = TRUE用合并方差t检验;如果p值<0.05,用默认的Welch近似t检验即可。 - R是大小写敏感的,确认变量名和数据集里的一致(Cars93里的城市油耗变量是
MPG.city,你的写法没问题)。
内容的提问来源于stack exchange,提问作者your null hypothesis
相关产品推荐
相关产品推荐

