假设从标准正态分布生成值,N(0,1). 如果我们只生成了两个值,n=2,那么我们有一个离散的均匀分布,而不是一个令人信服的正态分布的离散近似。确实,这对任何人都是正确的n=2,无论哪个生成分布产生这些值,离散均匀分布都是默认结果。正态分布和均匀分布相互之间是非嵌套的。事实上,它们有非常不同的形状。如果我们生成N(0,1)为增加n并检查 AIC 是否适合正态分布与均匀分布,即使我们知道我们的生成函数是N(0,1),对于正态分布拟合,AIC 并不总是小于均匀分布拟合。下图显示了在 1000 次重复中,正态分布模型的 AIC 有多少次优于(小于)均匀分布模型的 AICn从不同n=5至n=100.

如图所示,正态分布(即正确答案)的 AIC 仅在 1000 次试验中 395 次或 39.5% 的时间被选择优于均匀分布n=5. 这在 1000 次试验中增加到 949 次n=100,这个值的错误率仍然略高于 5%。据说 AIC 是渐近正确的,这似乎是正确的。顺便说一句,BIC 对两个参数模型的选择与 AIC 相同。但这对小到中等大小的值有用吗n?
以上是模型选择的观察概率示例。据称, AIC选择正确模型的可能性如下:
数量被称为模型的相对似然。它与似然比检验中使用的似然比密切相关。事实上,如果候选集中的所有模型都具有相同数量的参数,那么使用 AIC 乍一看可能与使用似然比检验非常相似。然而,有一些重要的区别。特别是,似然比检验仅对嵌套模型有效,而 AIC(和 AICc)没有这样的限制。expAICmin − AICi2i
现在请注意,上述可能性是可以互惠的。也就是说,如果模型 A 的可能性是模型 B 的两倍,那么模型 B 的可能性是模型 A 的二分之一。在当前上下文中,我们不处理可能性,我们使用真实数据创建了蒙特卡罗模拟,例如我们观察到做出正确选择的概率。我们在这个模拟中观察到,做出正确选择的可能性很大程度上受的影响,除非很大,否则我们似乎没有得到可靠的答案。nn
关于程序:列表初始化为正态分布(nd)AIC(ndAlist),nd BIC(ndBlist),均匀分布(ud)AIC和BIC(udAlist,udBlist)。使用了两个 do 循环。外部 do 循环以从 5 增加到 100 。内部 do 循环 (1)从nn=5nN(0,1). 然后 (2) 从 dat 创建一个名为 edistdata 的经验 CDF。(3) 定义从 nd 和 ud 的 CDF 拟合的 cdfn 和 cdfu 函数。(4) 通过改变 cdfn 和 cdfu 的参数对 edistdata 的最佳拟合。注意:拟合 CDF 而不是 PDF 会显着降低噪声,并且是一种常见的过程。这是完成的,而不是例如使用均值和方差来计算 nd 或 min 和 max 来计算 ud,因为拟合对 nd 和 ud 使用单一算法,并且 NonlinearModelFit 例程输出模型的 AIC 和 BIC 以及作为输出 nlmn 和 nlmu 的选项的参数适合输出,例如 nlmn["AIC"]。注意:假设使用 ML 正确计算了 AIC 和 BIC 拟合参数,因为相反的情况将毫无意义。
(*Mathematica Program*)
ndAlist = {};
ndBlist = {};
udAlist = {};
udBlist = {};
Do[
AICndlist = {};
BICndlist = {};
AICudlist = {};
BICudlist = {};
Do[dat =
RandomVariate[NormalDistribution[0, 1], n, WorkingPrecision -> 40];
edistdata = Table[{x, CDF[EmpiricalDistribution[dat], x]}, {x, dat}];
cdfn[a1_, a2_, x_] := CDF[NormalDistribution[a1, a2], x];
cdfu[b1_, b2_, x_] := CDF[UniformDistribution[{b1, b2}], x];
nlmn = NonlinearModelFit[edistdata, cdfn[a1, a2, x], {{a1, 0}, {a2, 1}}, x];
nlmu = NonlinearModelFit[edistdata, cdfu[b1, b2, x], {{b1, -2}, {b2, 2}}, x];
AICndlist = AppendTo[AICndlist, nlmn["AIC"]];
BICndlist = AppendTo[BICndlist, nlmn["BIC"]];
AICudlist = AppendTo[AICudlist, nlmu["AIC"]];
BICudlist = AppendTo[BICudlist, nlmu["BIC"]],
{i, 1, 1000}];
ndA = 0.; udA = 0.; ndB = 0.; udB = 0.;
Do[If[AICndlist[[j]] < AICudlist[[j]], ndA = ndA + 1, udA = udA + 1],
{j, 1, 1000}];
Do[If[BICndlist[[j]] < BICudlist[[j]], ndB = ndB + 1, udB = udB + 1],
{j, 1, 1000}];
Print["n: ", n, "\nAIC nd/1000: ", ndA, "\tAIC ud/1000: ", udA, "\nBIC nd/1000: ", ndB, "\tBIC ud/1000: ", udB];
ndAlist = AppendTo[ndAlist, {n, ndB}];
ndBlist = AppendTo[ndBlist, {n, ndB}], {n, 5, 100, 5}]
Print[ndAlist]
ListPlot[ndAlist, AxesLabel -> {"n", "AIC ND < AIC UD"}, PlotRange -> {{0, 100}, {0, 1000}}, PlotRangePadding -> {{0, 1}, {0, 0}}]
(数值输出)
n: 5
AIC nd/1000: 395. AIC ud/1000: 605.
BIC nd/1000: 395. BIC ud/1000: 605.
n: 10
AIC nd/1000: 572. AIC ud/1000: 428.
BIC nd/1000: 572. BIC ud/1000: 428.
n: 15
AIC nd/1000: 684. AIC ud/1000: 316.
BIC nd/1000: 684. BIC ud/1000: 316.
n: 20
AIC nd/1000: 725. AIC ud/1000: 275.
BIC nd/1000: 725. BIC ud/1000: 275.
n: 25
AIC nd/1000: 769. AIC ud/1000: 231.
BIC nd/1000: 769. BIC ud/1000: 231.
n: 30
AIC nd/1000: 777. AIC ud/1000: 223.
BIC nd/1000: 777. BIC ud/1000: 223.
n: 35
AIC nd/1000: 811. AIC ud/1000: 189.
BIC nd/1000: 811. BIC ud/1000: 189.
n: 40
AIC nd/1000: 841. AIC ud/1000: 159.
BIC nd/1000: 841. BIC ud/1000: 159.
n: 45
AIC nd/1000: 848. AIC ud/1000: 152.
BIC nd/1000: 848. BIC ud/1000: 152.
n: 50
AIC nd/1000: 848. AIC ud/1000: 152.
BIC nd/1000: 848. BIC ud/1000: 152.
n: 55
AIC nd/1000: 877. AIC ud/1000: 123.
BIC nd/1000: 877. BIC ud/1000: 123.
n: 60
AIC nd/1000: 886. AIC ud/1000: 114.
BIC nd/1000: 886. BIC ud/1000: 114.
n: 65
AIC nd/1000: 900. AIC ud/1000: 100.
BIC nd/1000: 900. BIC ud/1000: 100.
n: 70
AIC nd/1000: 901. AIC ud/1000: 99.
BIC nd/1000: 901. BIC ud/1000: 99.
n: 75
AIC nd/1000: 914. AIC ud/1000: 86.
BIC nd/1000: 914. BIC ud/1000: 86.
n: 80
AIC nd/1000: 932. AIC ud/1000: 68.
BIC nd/1000: 932. BIC ud/1000: 68.
n: 85
AIC nd/1000: 935. AIC ud/1000: 65.
BIC nd/1000: 935. BIC ud/1000: 65.
n: 90
AIC nd/1000: 946. AIC ud/1000: 54.
BIC nd/1000: 946. BIC ud/1000: 54.
n: 95
AIC nd/1000: 952. AIC ud/1000: 48.
BIC nd/1000: 952. BIC ud/1000: 48.
n: 100
AIC nd/1000: 949. AIC ud/1000: 51.
BIC nd/1000: 949. BIC ud/1000: 51.
{{5,395.},{10,572.},{15,684.},{20,725.},{25,769.},{30,777.},{35,811.},{40,841.},{45,848.},{50,848.},{55,877.},{60,886.},{65,900.},{70,901.},{75,914.},{80,932.},{85,935.},{90,946.},{95,952.},{100,949.}}
输出图如上所示。
这里的答案与 Yafune等人最近的一篇论文的结果相呼应。关于 Akaike 信息准则 (AIC) 方法进行临床数据分析的样本量确定的说明,不幸的是,这是在付费墙后面。那些作者在他们的讨论中指出,“AIC 通常用于不考虑与统计检验的功效相对应的概率。由于 AIC 通常用于探索性分析,因此通常很难预先确定样本量。对于这种情况, 之后最好通过检查与统计检验的功效相对应的概率来调查样本量是否足够大。如果样本量不够大,则 AIC 方法可能无法得出以下结论:我们寻找。”
为此,我们只补充一点,该论文中指出的样本量很容易超过 100,幂为 0.8。