R语言似然对数函数代码 r语言取对数

您所在的位置:网站首页 r语言数据标准化 R语言似然对数函数代码 r语言取对数

R语言似然对数函数代码 r语言取对数

2023-06-30 14:27| 来源: 网络整理| 查看: 265

R 中进行对数变换

说明:这篇文章是我在学习 R 时看到的,感觉很有用,就翻译了过来~~

—– 正文分割线 —–

当数据分布大致对称时,用均值和标准差对数据进行归一化是非常有意义的。在本文中,基于第4章 实用数据科学与R,作者展示了一种可以使某些分布更加对称的转换。

是否对数据进行转换可能取决于你要使用的建模方法。例如,对于线性回归和逻辑回归,理想情况下你希望输入变量和输出变量之间的关系近似为线性,也就是说,输入变量近似为正态分布,输出变量的方差为常数(即,输出变量的方差与输入变量无关)。你可能需要转换一些输入变量才能更好地满足这些假设。

在本文中,我们将介绍对数转换以及何时使用。

货币量——收入,客户价值,账户或购买规模等——是数据科学应用中最常遇到的偏差分布的来源。事实上,正如我们在 附录B:重要统计概念 中所讨论的那样,货币金额通常是对数正态分布——也就是说,数据的对数呈正态分布。这让我们想到 对数据取log 可以恢复其对称性。下图就证明了这一点:

R语言似然对数函数代码 r语言取对数_建模

出于建模的目的,你使用的对数(不管是自然对数,以10为底的对数 或 以2为底的对数)通常都不是关键。例如在回归中,对数的选择会影响和 进行对数变换的变量 对应的系数的大小,但它不会影响结果的值。我喜欢使用 以10为底 对货币金额进行对数变换,因为 以10为基准的数量级 看起来很自然:100美元,1000美元,10,000美元等等。转换后的数据易于阅读。

关于作图 使用 ggplot 的 scale_x_log10 层和 log10(income) 之间的区别主要在于轴标记。使用 scale_x_log10 将以美元金额标记x轴,而不是对数。

通常,使用范围超过几个数量级的值进行 数据的对数变换 是一个好主意。首先,因为建模技术通常具有非常宽的数据范围,其次,这样的数据通常来自乘法过程,所以用对数做单位在某种意义上更自然。

例如,当你研究减肥时,自然单位通常是磅或公斤。如果我体重150磅,我的朋友体重200,我们同等程度地活跃,我们都采用完全相同的热量限制饮食,那么我们可能会损失相同的体重 —— 换句话说,我们减轻多少重量并不取决于我们初始的体重,而取决于卡路里的摄入量。这是一个添加过程。

另一方面,如果管理层要给部门中的每个人加薪,可能并不是给每个人增加5000美元,而是每个人都获得2%的加薪:最终的薪水取决于初始工资。这是一个乘法过程,自然的度量单位是百分比,而不是绝对的美元。乘法过程的其他示例:对在线零售网站的变更会使每个项目的转换(购买)增加2%(而不是通过两次购买);改变餐厅菜单使得每晚增加5%的主顾(不是每晚五个顾客)。当过程是乘法时,对过程数据进行对数变换可以使建模更容易。

当然,只有在数据为非负数时才能采用对数变换。如果有零值或负值,可以使用其他变换(例如arcsinh)来减少数据范围。我不喜欢使用arcsinh,因为我没有发现转换数据的意义。在偏斜数据是货币的应用(如帐户余额或客户价值)中,我使用我称之为“符号对数”的东西。带符号的对数取变量绝对值的对数,并乘以适当的符号。绝对值小于1的值将映射为零。对数和符号对数之间的区别如下图所示。

R语言似然对数函数代码 r语言取对数_正态分布_02

以下是在R中计算以10为底的符号对数:

signedlog10 = function(x) { ifelse(abs(x)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3