【发布时间】:2016-02-27 12:13:05
【问题描述】:
我想使用 F 统计量比较两个模型的性能。这是一个可重现的示例和预期的结果:
load carbig
tbl = table(Acceleration,Cylinders,Horsepower,MPG);
% Testing separetly both models
mdl1 = fitlm(tbl,'MPG~1+Acceleration+Cylinders+Horsepower');
mdl2 = fitlm(tbl,'MPG~1+Acceleration');
% Comparing both models using the F-test and p-value
numerator = (mdl2.SSE-mdl1.SSE)/(mdl1.NumCoefficients-mdl2.NumCoefficients);
denominator = mdl1.SSE/mdl1.DFE;
F = numerator/denominator;
p = 1-fcdf(F,mdl1.NumCoefficients-mdl2.NumCoefficients,mdl1.DFE);
我们最终得到F = 298.75 和p = 0,表明 mdl1 明显优于 mdl2,由 F 统计量评估。
有没有在不执行两次 fitlm 并进行所有计算的情况下获得 F 和 p 值?
按照@Glen_b 的建议,我尝试运行coefTest,但是该函数的文档记录很差,结果也不是我所期望的。
[p,F] = coefTest(mdl1); % p = 0, F = 262.508 (this F test mdl1 vs constant mdl)
[p,F] = coefTest(mdl1,[0,0,1,1]); % p = 0, F = 57.662 (not sure what this is testing)
[p,F] = coefTest(mdl1,[1,1,0,0]); % p = 0, F = 486.810 (idem)
我相信我应该使用函数[p,F] = coeffTest(mdl1,H,C) 以不同的零假设 (C) 进行测试。但我真的不知道该怎么做,也没有例子。
【问题讨论】:
-
@Glen_b 我对 coefTest 的工作方式有点困惑。我试过了:
[p,F] = coefTest(M2,[0,0,1,1]),但它似乎没有给我我期望的结果。 -
我猜不出问题出在哪里。也许您需要就此提出一个新问题,其中包含您所做操作的最低可重复示例以及您预期的解释。
-
进行 coefTest 时会发生什么?
-
@Glen_b 我尝试运行
[p,F] = coefTest(mdl1,[0,0,1,1]),但它给了我完全不同的结果。我相信我应该用coefTest(mdl1,H,C)运行一些东西,但是coefTest函数的文档记录很差。
标签: regression matlab