You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言var.test与t.test报错求助:变量长度不一致

问题排查与解决

错误原因

你当前的代码犯了两个关键错误:

  1. 公式语法误用:var.test和t.test的A ~ B公式写法,要求A和B是长度完全一致的向量,但df.t1$MPG.city(Compact车型样本)和df.t2$MPG.city(Large车型样本)的数量本来就不一样,直接用~拼接必然触发"variable lengths differ"报错。
  2. 语法格式错误:第二行代码里的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:40:52