我们已经为观察到的数据拟合了一个非线性函数。下一步应该是评估此函数的拟合优度(如)。
衡量这一点的常用方法是什么?
编辑1:
拟合如下进行:
- 使用自变量A和B执行线性回归。
- 从回归参数计算分布的参数。(分布是非线性的,并且以变量C作为输入。)
- 通过将估计数据与观测数据进行比较来评估非线性分布的拟合优度。
编辑2:
上述步骤的示例:
- 回归模型:
- 和对于以下非线性分布:
- 用一组给定的观察的拟合优度。
我们已经为观察到的数据拟合了一个非线性函数。下一步应该是评估此函数的拟合优度(如)。
衡量这一点的常用方法是什么?
编辑1:
拟合如下进行:
编辑2:
上述步骤的示例:
可能还有更多,但对我来说,您似乎只想确定适合特定数据集 (a, f(a)) 的函数 f(a) 的拟合优度 (GoF )。因此,以下仅回答您的第三个子问题(我认为第一个和第二个与第三个没有直接关系)。
通常,GoF可以通过参数(如果您知道分布的函数参数)或非参数(如果您不知道它们)来确定。虽然您可能能够找出函数的参数,因为它似乎是指数或伽马/威布尔(假设数据是连续的)。不过,我会继续,就好像你不知道参数一样。在这种情况下,这是一个两步过程。首先,您需要确定数据集的分布参数。其次,您对定义的分布执行 GoF 测试。为了避免重复自己,在这一点上,我将向您推荐我之前的答案到一个相关问题,其中包含一些有用的细节。显然,这个答案可以很容易地应用于除其中提到的分布之外的分布。
除了那里提到的 GoF 测试之外,您还可以考虑另一种测试 -卡方 GoF 测试。与仅适用于连续分布的KS和AD检验不同,卡方 GoF 检验适用于离散 和连续分布。卡方 GoF 测试可以通过使用以下几个包之一在 R 中执行:stats
内置包(函数chisq.test()
)和vcd
包(函数goodfit()
- 仅用于离散数据)。本文档提供了更多详细信息。
好吧,在机器学习中,通常会出于模型测试的目的执行称为交叉验证的事情(测试具有这些超参数的模型类型 - 例如自由度数或其他 - 是否适合您的问题) - 你拆分你的数据多次进入训练和测试数据集,然后在训练集上运行优化并计算测试数据的任何质量。最保密的方法是运行所谓的“QxT-fold 交叉验证”。伪代码可能喜欢:
cv_values = []
for t in range(T):
split = randomsplit(data, number_of_parst = Q)
for test_id in range(Q):
model.fit(split[:test_id] + split[test_id + 1:] # test on everything excepting test_id
cv_values.append(model.test(split[test_id]))
cv_values.mean() # whatever