从使用统计软件过渡到理解数学方程?

机器算法验证 参考 符号 软件
2022-03-08 06:14:18

语境:

我是一名心理学博士生。与许多心理学博士生一样,我知道如何使用统计软件进行各种统计分析,包括 PCA、分类树和聚类分析等技术。但这并不是真的令人满意,因为虽然我可以解释我为什么要进行分析以及指标的含义,但我无法解释该技术是如何工作的。

真正的问题是掌握统计软件很容易,但也很有限。要在文章中学习新技术,我需要了解如何阅读数学方程式。目前我无法计算特征值或 K-means。方程对我来说就像一门外语。

问题:

  • 是否有帮助理解期刊文章中的方程式的综合指南?

编辑:

我认为这个问题会更自我解释:在一定的复杂性之上,统计符号对我来说变得乱七八糟;假设我想用 R 或 C++ 编写我自己的函数来理解一种技术,但是有一个障碍。我无法将方程式转换为程序。真的:我不知道美国博士学校的情况,但在我的(法国),我唯一能学习的课程是关于 16 世纪的文学运动......

3个回答

概述:

  • 我的印象是,你的经历对很多社会科学专业的学生来说都很常见。
  • 起点是学习的动力。
  • 您可以选择自学正式的教学路线。

正式指令:

在这方面有很多选择。您可能会考虑攻读统计学硕士学位,或者只是在统计学系学习几门科目。但是,您可能需要检查您是否具备必要的数学背景。根据课程的不同,您可能会发现在学习大学级别的数学严谨的统计学科目之前,您需要重新学习微积分之前的数学,并且可能需要重新学习一些材料,例如微积分和线性代数。

自学

或者,你可以走自学的路线。互联网上有很多好的资源。特别是,阅读和做数学课本中的练习很重要,但可能还不够。聆听教师谈论数学并观看他们解决问题很重要。

考虑您的数学目标以及实现这些目标所需的数学先决条件也很重要。如果方程对你来说就像一门外语,那么你可能会发现你需要先学习初等数学。

我准备了一些资源,旨在帮助那些从使用统计软件过渡到理解基础数学的人。

  • 视频免费在线数学视频列表- 这篇文章还提供了一些关于从微积分开始到微积分、线性代数、概率和数理统计的适当数学序列的指导。另请参阅数学统计视频中的这个问题。
  • 阅读和发音- 首要挑战之一是学习如何发音和阅读数学方程式。我写了两篇文章,一篇关于发音,另一篇关于非数学家阅读数学的技巧
  • 写作——学习写数学有助于阅读数学。尝试学习 LaTeX 并查看 LaTeX 中的一些数学指南
  • 书籍:在学习数学方面,我认为值得投资一些好的教科书。但是,如今有很多免费在线选项

我的印象是,您认为可以通过将统计方程编程到 R 或 C++ 中来深入了解它;你不能。要理解统计方程,请在包含方程的每一章末尾找到一本包含大量作业问题的“本科”教科书,然后在包含方程的章节末尾做作业。

例如,要理解 PCA,您确实需要很好地理解线性代数,尤其是奇异值分解。在通过 Michael Nielsen 的书学习量子计算时,我很明显需要复习线性代数。我看到了 Gilbert Strang 的视频,它们对建立对概念的基本理解非常有帮助。然而,直到我找到一本包含很多家庭作业问题的线性代数书,然后我需要做它们时,材料的细微差别才得以体现。

我理解您的困难,因为当我尝试在统计中做一些新的事情时遇到类似的问题(我也是一名研究生,但在不同的领域)。我发现检查 R 代码对于了解如何计算某些内容非常有用。例如,我最近一直在学习如何使用kmeans集群,并且有许多基本问题,包括概念上的以及它是如何实现的。使用R安装(我推荐http://www.rstudio.org/R Studio但任何安装都可以),只需在命令行中输入。以下是部分输出的示例:kmeans

x <- as.matrix(x)
    m <- nrow(x)
    if (missing(centers)) 
        stop("'centers' must be a number or a matrix")
    nmeth <- switch(match.arg(algorithm), `Hartigan-Wong` = 1, 
        Lloyd = 2, Forgy = 2, MacQueen = 3)
    if (length(centers) == 1L) {
        if (centers == 1) 
            nmeth <- 3
        k <- centers
        if (nstart == 1) 
            centers <- x[sample.int(m, k), , drop = FALSE]
        if (nstart >= 2 || any(duplicated(centers))) {
            cn <- unique(x)
            mm <- nrow(cn)
            if (mm < k) 
                stop("more cluster centers than distinct data points.")
            centers <- cn[sample.int(mm, k), , drop = FALSE]
        }
    } 

我不确定每次检查源代码有多实用,但它确实有助于我了解发生了什么,假设您对语法有一定的了解。

我之前在stackoverflow上提出的一个问题将我指向了这个方向,但也很有帮助地告诉我,关于代码的注释有时会包含在此处


更一般地说,统计软件杂志说明了理论和实现之间的这种联系,但它经常是关于高级主题(我个人很难理解),但作为一个例子很有用。