统计学有哪些分支?

机器算法验证 自习 分类
2022-02-06 02:45:03

在数学中,有代数、分析、拓扑等分支。在机器学习中,有监督学习、无监督学习和强化学习。在这些分支中的每一个中,都有更精细的分支进一步划分方法。

我无法与统计数据相提并论。统计的主要分支(和子分支)是什么?一个完美的分区可能是不可能的,但任何事情都比一个大的空白地图好。

视觉示例:在此处输入图像描述 在此处输入图像描述

4个回答

我发现这些分类系统非常无用且自相矛盾。例如:

  • 神经网络是监督学习的一种形式
  • 微积分用于微分几何
  • 概率论可以形式化为集合论的一部分

等等。没有明确的数学“分支”,也不应该有统计。

这与 Rob Hyndman 的回答略有不同。它开始是一个评论,然后变得太复杂了。如果这与解决主要问题相去甚远,我深表歉意并将其删除。


早在达尔文第一次涂鸦之前,生物学就一直在描绘等级关系(请参阅尼克考克斯的评论以获取链接)。大多数进化关系仍然显示在这种漂亮、干净、分支的“系统发育树”上:

在此处输入图像描述 然而,我们最终意识到生物学比这更混乱。有时,不同物种之间会发生遗传交换(通过杂交和其他过程),而存在于树某一部分的基因会“跳跃”到树的另一部分。水平基因转移以一种使上述简单树状描述不准确的方式移动基因。然而,我们并没有放弃树,只是对这种类型的可视化进行了修改:

与上图相同,但显示了跨分支的基因转移

这很难理解,但它传达了更准确的现实图景。

另一个例子:

在此处输入图像描述

但是,我们从不介绍这些更复杂的数字,因为不了解基本概念就很难掌握。相反,我们用简单的人物来教授基本概念,然后用更复杂的人物和故事的新复杂性来向他们展示。

任何统计“地图”同样既不准确,又是有价值的教学工具。OP 建议的形式的可视化对学生非常有用,不应仅仅因为它们无法完全捕捉现实而被忽视。一旦他们有了一个基本的框架,我们就可以给图片增加更多的复杂性。

您可以查看交叉验证网站的关键字/标签


分支机构作为网络

一种方法是根据关键字之间的关系(它们在同一帖子中重合的频率)将其绘制为网络。

当您使用此 sql 脚本从 (data.stackexchange.com/stats/query/edit/1122036) 获取站点数据时

select Tags from Posts where PostTypeId = 1 and Score >2

然后,您将获得得分为 2 或更高的所有问题的关键字列表。

您可以通过绘制如下内容来探索该列表:

标签之间的关系

更新:与颜色相同(基于关系矩阵的特征向量)并且没有自学标签

标签之间的关系

您可以进一步清理此图表(例如,取出与软件标签等统计概念无关的标签,在上图中这已经为“r”标签完成)并改善视觉表示,但我猜上面的这张图片已经显示了一个很好的起点。

R代码:

#the sql-script saved like an sql file
network <- read.csv("~/../Desktop/network.csv", stringsAsFactors = 0)
#it looks like this:
> network[1][1:5,]
 [1] "<r><biostatistics><bioinformatics>"                                 
 [2] "<hypothesis-testing><nonlinear-regression><regression-coefficients>"
 [3] "<aic>"                                                              
 [4] "<regression><nonparametric><kernel-smoothing>"                      
 [5] "<r><regression><experiment-design><simulation><random-generation>"  

l <- length(network[,1])
nk <- 1
keywords <- c("<r>")
M <- matrix(0,1)

for (j in 1:l) {                              # loop all lines in the text file
  s <- stringr::str_match_all(network[j,],"<.*?>")           # extract keywords
  m <- c(0)                                             
  for (is in s[[1]]) {
    if (sum(keywords == is) == 0) {           # check if there is a new keyword
      keywords <- c(keywords,is)              # add to the keywords table
      nk<-nk+1
      M <- cbind(M,rep(0,nk-1))               # expand the relation matrix with zero's
      M <- rbind(M,rep(0,nk))
    }
    m <- c(m, which(keywords == is))
    lm <- length(m)
    if (lm>2) {                               # for keywords >2 add +1 to the relations
      for (mi in m[-c(1,lm)]) {
        M[mi,m[lm]] <- M[mi,m[lm]]+1
        M[m[lm],mi] <- M[m[lm],mi]+1
      }
    }
  }
}


#getting rid of <  >
skeywords <- sub(c("<"),"",keywords)
skeywords <- sub(c(">"),"",skeywords) 


# plotting connections 

library(igraph)
library("visNetwork")

# reduces nodes and edges
Ms<-M[-1,-1]             # -1,-1 elliminates the 'r' tag which offsets the graph
Ms[which(Ms<50)] <- 0
ww <- colSums(Ms)
el <- which(ww==0)

# convert to data object for VisNetwork function
g <- graph.adjacency(Ms[-el,-el], weighted=TRUE, mode = "undirected")
data <- toVisNetworkData(g)

# adjust some plotting parameters some 
data$nodes['label'] <- skeywords[-1][-el]
data$nodes['title'] <- skeywords[-1][-el]
data$nodes['value'] <- colSums(Ms)[-el]
data$edges['width'] <- sqrt(data$edges['weight'])*1
data$nodes['font.size'] <- 20+log(ww[-el])*6
data$edges['color'] <- "#eeeeff"

#plot
visNetwork(nodes = data$nodes, edges = data$edges) %>%
visPhysics(solver = "forceAtlas2Based", stabilization = TRUE,
           forceAtlas2Based = list(nodeDistance=70, springConstant = 0.04,
                                   springLength = 50,
                                   avoidOverlap =1)
           )

分层分支

我相信上面这些类型的网络图与一些关于纯分支层次结构的批评有关。如果您愿意,我想您可以执行分层聚类以将其强制为分层结构。

下面是这种分层模型的一个例子。仍然需要为各种集群找到合适的组名(但是,我不认为这种分层集群是好的方向,所以我让它保持开放)。

层次聚类

聚类的距离度量是通过反复试验找到的(进行调整直到聚类看起来不错。

#####
#####  cluster

library(cluster)

Ms<-M[-1,-1]
Ms[which(Ms<50)] <- 0
ww <- colSums(Ms)
el <- which(ww==0)

Ms<-M[-1,-1]
R <- (keycount[-1]^-1) %*% t(keycount[-1]^-1)
Ms <- log(Ms*R+0.00000001)

Mc <- Ms[-el,-el]
colnames(Mc) <- skeywords[-1][-el]

cmod <- agnes(-Mc, diss = TRUE)

plot(as.hclust(cmod), cex = 0.65, hang=-1, xlab = "", ylab ="")

回答您的问题的一种简单方法是查找常见的分类表。例如,一些出版物使用2010 年数学学科分类对论文进行分类。这些是相关的,因为这就是许多作者对自己的论文进行分类的方式。 在此处输入图像描述

有许多类似分类的例子,例如arxiv 的分类或俄罗斯教育部的UDK(通用十进制分类),广泛用于所有出版物和研究。

在此处输入图像描述

另一个例子是美国经济协会的JEL 分类系统Rob Hyndman 的论文“自动时间序列预测:R 的预测包”。根据JEL分类为C53、C22、C52。Hyndman 在批评树分类方面是有道理的。更好的方法可能是标记,例如他论文中的关键字是:“ARIMA 模型、自动预测、指数平滑、预测区间、状态空间模型、时间序列、R。” 有人可能会争辩说,这些是对论文进行分类的更好方法,因为它们不是分层的,并且可以建立多个层次结构。

@whuber 提出了一个很好的观点,即机器学习等一些最新进展不会在当前分类中进行统计。例如,看看 Catherine F. Higham、Desmond J. Higham 的论文“深度学习:应用数学家简介”。他们在上述 MSC 下将他们的论文分类为 97R40、68T01、65K10、62M45。除统计数据外,这些都属于计算机科学、数学教育和数值分析