Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
lm R汇总输出的精度_R_Precision_Lm_Summary_R Exams - Fatal编程技术网

lm R汇总输出的精度

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-

我正在使用r-exams软件包做一些练习,在练习中,我从
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/考试中此类问题的一些有用信息:

  • extral
    也可以是一个向量,以便您可以为系数和R平方等设置不同的公差

  • 当问到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)
    估算
    列中显示
    2726.8605
    。它默认为go
    getOption(“digits”)-3(来自
    ?summary.lm
    ),因此您可以使用
    选项(digits=9)获得相同的效果;总结(m0)。在这种情况下,如果我执行
    max(3,getOption(“数字”)–3)
    我得到4,但很明显,输出在估算列中使用了2位数字。如果我执行
    打印(摘要(m0),数字=6)
    则估算列现在获得4位数字,但
    R平方
    现在获得6位数字。我真的不明白这是怎么回事。不幸的是,它被广泛应用。我相信它不是一种完美的报告格式,更重要的是对模型进行快速总结,看看下一步该怎么做。这通常被用作报告格式,这通常是可以的,但我相信每个人在各个方面都有自己的偏好(小数、星星等),添加
    print
    参数来定制摘要的每个组成部分上的数字可能过于优化了,我同情你在这里的学术问题,但我认为学生们的问题需要明确,比如说“精度必须达到0.0001,你可能需要
    coef
    才能获得要求的精度”。或者你应该考虑接受<代码> 2726.86 /代码>作为一个可接受的答案。我记得在理解我的学生(当我教的)作业时,有类似的问题。对一些人来说,精度和有效数字的概念不清楚,需要加强;一旦完成,则有必要提供辅助方法的指导,以达到R.can
    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]
    }