lm R汇总输出的精度
我正在使用r-exams软件包做一些练习,在练习中,我从lm R汇总输出的精度,r,precision,lm,summary,r-exams,R,Precision,Lm,Summary,R Exams,我正在使用r-exams软件包做一些练习,在练习中,我从lm对象打印一份摘要,并询问学生“截距的估计值是多少”。其思想是学生复制摘要输出的值,并使用该值作为正确答案。这里的问题是,我使用coef()函数中的值作为正确答案,但这不是一个好主意,因为这些值的精度与摘要输出中显示的值的精度相差很大。以下是一个例子: set.seed(123) 图书馆(tidyverse) ##数据生成 xbreaks 2726.8605-840.0515 由(v2.0.0)于2021年5月14日创建 假设设置了r-
lm
对象打印一份摘要,并询问学生“截距的估计值是多少”。其思想是学生复制摘要输出的值,并使用该值作为正确答案。这里的问题是,我使用coef()
函数中的值作为正确答案,但这不是一个好主意,因为这些值的精度与摘要
输出中显示的值的精度相差很大。以下是一个例子:
set.seed(123)
图书馆(tidyverse)
##数据生成
xbreaks 2726.8605-840.0515
由(v2.0.0)于2021年5月14日创建
假设设置了r-tests中的explore:0.0001
,要求学生给出截距的估计值。学生将得到错误的答案,因为他将回答2726.86
,但是coef
的正确答案是2726.8605
可以看出,summary
的输出使用2位小数,而coef()
值的精度更高。我想知道summary使用了多少位小数,以便将相同的格式应用于coef()
生成的值。这将确保学生提供的答案与摘要
输出相同
我只想这样做:
answers%格式(digits=dsum)%%>%as.numeric()
其中,dsum
是汇总输出也使用的位数
注意:需要保留4位小数的精度,因为我还向学生询问了在相同的
摘要
输出中提供的R平方
值,因此设置extral:0.01
不是一个好主意。此外,问题是随机产生的,估计系数的大小会发生变化,正如我注意到的,这与摘要
输出中使用的精度直接相关。关于R/考试中此类问题的一些有用信息:
也可以是一个向量,以便您可以为系数和R平方等设置不同的公差extral
- 当问到R平方时,我通常会问“百分比”。那么,相同的公差可能适用于系数
- 我建议适当控制系数的大小,以便相应地设置
和数字
颂扬
- 就我个人而言,我通常以比我要求的学生更高的精度存储
。例如,exsolution
可以是exsolution
,而我只将12.345678
设置为exoll
。这样可以确保当正确答案四舍五入到小数点后两位时,它位于由0.01
和exsolution
确定的正确间隔内extel
- 格式设置的确切位置并不明显:用于
对象的lm
方法返回类summary()
的对象,该类对象有自己的summary.lm
方法,该方法依次调用print()
。后者是执行实际格式化的函数printCoefmat()
- 在这些函数中设置
位数时,这将控制有效位数,而不是小数位数。当系数变得相对较大时(例如,以千或更多为单位),这一点尤为重要
- 系数不是单独格式化的,而是与相应的标准误差一起格式化的。详细信息取决于
、系数和标准误差的大小,以及是否有系数被混叠或完全为零等数字
- 如果没有别名/零系数,
中的格式可以使用下面定义的summary(m0)
进行复制。这基本上是format\u coef(m0)
中的精简代码printCoefmat()
format\u coef
在print(摘要(m0),数字=6)
列中显示估算
。它默认为go2726.8605
getOption(“digits”)-3(来自
),因此您可以使用?summary.lm
选项(digits=9)获得相同的效果;总结(m0)代码>。在这种情况下,如果我执行
我得到4,但很明显,输出在估算列中使用了2位数字。如果我执行max(3,getOption(“数字”)–3)
则估算列现在获得4位数字,但打印(摘要(m0),数字=6)
现在获得6位数字。我真的不明白这是怎么回事。不幸的是,它被广泛应用。我相信它不是一种完美的报告格式,更重要的是对模型进行快速总结,看看下一步该怎么做。这通常被用作报告格式,这通常是可以的,但我相信每个人在各个方面都有自己的偏好(小数、星星等),添加R平方
参数来定制摘要的每个组成部分上的数字可能过于优化了,我同情你在这里的学术问题,但我认为学生们的问题需要明确,比如说“精度必须达到0.0001,你可能需要print
才能获得要求的精度”。或者你应该考虑接受<代码> 2726.86 /代码>作为一个可接受的答案。我记得在理解我的学生(当我教的)作业时,有类似的问题。对一些人来说,精度和有效数字的概念不清楚,需要加强;一旦完成,则有必要提供辅助方法的指导,以达到R.cancoef
Extral
format_coef <- function(object, digits = max(3L, getOption("digits") - 2L)) { coef_se <- summary(object)$coefficients[, 1L:2L] digmin <- 1L + floor(log10(range(abs(coef_se)))) format(round(coef_se, max(1L, digits - digmin)), digits = digits)[, 1L] }