为什么summary()会根据以前的命令为模型输出不同的标签因子级别?
我正在从事一个大型R项目,对一个公共数据集执行不同的分析。我为每个分析建立了几个单独的脚本,以及按顺序调用每个分析的高级脚本。每个脚本首先调用一个清除内存的为什么summary()会根据以前的命令为模型输出不同的标签因子级别?,r,R,我正在从事一个大型R项目,对一个公共数据集执行不同的分析。我为每个分析建立了几个单独的脚本,以及按顺序调用每个分析的高级脚本。每个脚本首先调用一个清除内存的init.R脚本(rm(list=ls(all=TRUE))) 我最近发现summary()(我认为coef())根据脚本的顺序产生不同的输出。在使用lm()或gam()(mgcv包)适合模型的脚本中,如果先运行这些脚本,则在“刷新”R会话中,summary()输出将列出带完整标签的因子 但是,如果我先运行其他脚本,这些脚本使用简单嵌套的ao
init.R
脚本(rm(list=ls(all=TRUE))
)
我最近发现summary()
(我认为coef()
)根据脚本的顺序产生不同的输出。在使用lm()
或gam()
(mgcv
包)适合模型的脚本中,如果先运行这些脚本,则在“刷新”R会话中,summary()
输出将列出带完整标签的因子
但是,如果我先运行其他脚本,这些脚本使用简单嵌套的aov()
函数,并使用其他一些包生成一些图形和其他输出,然后重新运行前面提到的脚本,summary()
将生成使用数字标记的因子级别的输出(是“编码”值,而不是实际的因子水平标签)
不幸的是,我不能用一个简单的工作示例轻松地“重现”这一点,因为我还没有明确指出在我的脚本中这种行为在哪里发生了变化。我在快速测试中确认了一些事情:
- 使用
在脚本之间清除内存,因此内存中不应存在导致此更改的任何内容rm(list=ls())
本身没有改变:模型拟合函数实际上产生的输出略有不同(如summary()
所确认),这更令人不安。以不同顺序运行脚本时生成的已保存对象在加载时可靠地生成相同的输出,但该输出因用于生成拟合模型对象的脚本顺序而异(即使每个脚本之间的内存已清除)。all.equal()
- 根据脚本的顺序,
也会输出不同的模型项估计值,但相同的残差摘要、R^2和总体F检验。非常奇怪summary(lm(…)
- 根据脚本的顺序,
- 我无法通过删除以前脚本中加载的包来恢复默认(所需)行为。加载包的顺序是否重要
- 退出并重新启动R后,将恢复默认行为
- 这个答案似乎无法解决问题:
source()
操作来重现所有结果和输出,但这个奇怪的“bug”(在我的代码中,我并不是将其归咎于R)意味着输出不一致,并且取决于顺序:(
除了留在内存中的对象或包之外,是否还有其他东西可以改变模型拟合函数的工作方式,或者在传入的数据帧中存储因子级别
编辑
我意识到上述问题的答案是对比选项(见下文)。新问题:
如何将options()重置为默认设置,即R启动时使用的值?出厂默认值为
选项(对比度=c(“控制治疗”、“控制多边形”))
但我想知道是否有办法重新启动到内部默认值(如果它们不是“出厂新的”。在比较输出后,我意识到我看到的是不同的对比度,并记得“有问题”脚本更改了默认的对比度选项:
选项(对比度=c(“对比度总和”、“对比度多边形”)
所以,这就解释了上面所有的困惑。希望这能为其他人省去一些麻烦。
新问题:
如何将
options()
重置为默认设置,即R启动时使用的值?在比较输出后,我意识到我看到的是不同的对比度,并记得“有问题”脚本更改了默认的对比度选项:
选项(对比度=c(“对比度总和”、“对比度多边形”)
所以,这就解释了上面所有的困惑。希望这能为其他人省去一些麻烦。
新问题:
如何将
options()
重置为默认设置,即R启动时使用的值?回答您自己的问题是合适的,您可能应该通过编辑上面的问题来添加新问题,而不是将其放在答案中。您可能需要options(对比度=c(“对照治疗”),“contr.poly”))
谢谢Ben,您提到的出厂默认值是我现在使用的,但我只是好奇是否有办法重新加载内部默认选项,以防它们发生更改(在我的Rprofile或其他文件中)。根据建议,在OP中添加新问题。虽然回答您自己的问题是合适的,但您可能应该通过编辑上面的问题来添加新问题,而不是将其放在答案中。您可能需要选项(对比度=c(“对照治疗”,“对照多边形”))
谢谢Ben,您提到的出厂默认值是我现在使用的,但我只是好奇是否有办法重新加载内部默认选项,以防它们发生更改(在我的Rprofile或其他文件中)。正如建议的那样,OP中添加了新问题。