24

您在 R 中使用哪些函数来拟合数据曲线并测试该曲线的拟合程度?什么结果被认为是好的?

4

6 回答 6

26

仅仅这个问题的第一部分就可以填满整本书。只是一些快速的选择:

  • lm()对于标准线性模型
  • glm()用于广义线性模型(例如逻辑回归)
  • rlm()来自 MASS 包,用于稳健的线性模型
  • lmrob()来自用于稳健线性模型的包robustbase
  • loess()用于非线性/非参数模型

然后是特定领域的模型,例如时间序列、微观计量经济学、混合效应等等。一些任务视图(例如 计量经济学)对此进行了更详细的讨论。至于合身度,这也是一个人可以很容易地花一整本书讨论的问题。

于 2009-07-25T03:18:41.663 回答
11

lm()R中典型曲线拟合的主力是glm()nls()。对我来说,拟合优度是更大的模型选择问题中的一个子问题。事实上,错误地使用拟合优度(例如,通过逐步回归)会导致模型严重错误(参见 Harrell 的“回归建模策略”一书)。与其从头开始讨论这个问题,我推荐 Harrell 的书lmglm. 维纳布尔斯和里普利的圣经很简洁,但仍然值得一读。Faraway 的“用 R 扩展线性模型”内容全面且可读性强。这些资料中没有涵盖 nls,但是 Ritz & Streibig 的“Nonlinear Regression with R”填补了空白,并且非常实用。

于 2009-07-25T17:12:58.177 回答
8

nls()函数(http://sekhon.berkeley.edu/stats/html/nls.html)是非线性最小二乘曲线拟合的标准。卡方(残差平方和)是在这种情况下优化的指标,但它没有标准化,因此您不能轻易使用它来确定拟合的好坏。你应该确保的主要事情是你的残差是正态分布的。不幸的是,我不确定一种自动化的方式来做到这一点。

于 2009-07-25T02:43:09.977 回答
6

Quick R 站点对用于拟合模型和测试拟合的基本函数进行了合理的很好的总结,以及示例 R 代码:

于 2009-07-25T05:33:29.410 回答
3

你应该确保的主要事情是你的残差是正态分布的。不幸的是,我不确定一种自动化的方式来做到这一点。

qqnorm()可能可以修改以找到样本分位数和理论分位数之间的相关性。本质上,这只是对正常分位数图的数值解释。也许为不同的分位数范围提供几个相关系数值可能是有用的。例如,如果中间 97% 的数据的相关系数接近 1,而尾部则低得多,这告诉我们残差分布近似正态,尾部有一些有趣的地方。

于 2009-07-26T00:28:12.767 回答
2

最好保持简单,看看线性方法是否“很好”。您可以通过查看 R 平方和 F 统计量来判断您的拟合优度,一般情况下,不要分开。在模型中添加与因变量无关的变量会增加 R2,因此您还必须考虑 F 统计量。

您还应该将您的模型与其他嵌套或更简单的模型进行比较。只要因变量相同,使用对数似然比检验即可。

Jarque-Bera 检验适用于检验残差分布的正态性。

于 2009-11-23T19:39:01.477 回答