gpt4 book ai didi

r - 如何将概率插入矩阵?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:18:40 24 4
gpt4 key购买 nike

什么是可以自动填充矩阵 A 的好程序?

我们有 col 向量:

col=c(1,1,2,3,4,5,10,7,7,3,1,5,3,7,6,3,4,2,1,1,2,2,6,4,8,8,9,1,3,2)
col
[1] 1 1 2 3 4 5 10 7 7 3 1 5 3 7 6 3 4 2 1 1 2 2 6 4 8
[26] 8 9 1 3 2

我们有矩阵:

A=rbind(c(0:10),c(1,rep(0,10)),c(2,rep(0,10)),c(3,rep(0,10)),c(4,rep(0,10)),c(5,rep(0,10)),c(6,rep(0,10)),c(7,rep(0,10)),c(8,rep(0,10)),c(9,rep(0,10)),c(10,rep(0,10)))
A
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
[1,] 0 1 2 3 4 5 6 7 8 9 10
[2,] 1 0 0 0 0 0 0 0 0 0 0
[3,] 2 0 0 0 0 0 0 0 0 0 0
[4,] 3 0 0 0 0 0 0 0 0 0 0
[5,] 4 0 0 0 0 0 0 0 0 0 0
[6,] 5 0 0 0 0 0 0 0 0 0 0
[7,] 6 0 0 0 0 0 0 0 0 0 0
[8,] 7 0 0 0 0 0 0 0 0 0 0
[9,] 8 0 0 0 0 0 0 0 0 0 0
[10,] 9 0 0 0 0 0 0 0 0 0 0
[11,] 10 0 0 0 0 0 0 0 0 0 0

矩阵A的第一列表示列向量中的前面的值

矩阵A的第一行表示col向量中的以下值在矩阵 A 中,我们想替换 0 并存储条件概率。

通过查看 col 向量,我查看了所有涉及 1 作为前面数字的实例,例如 1,1,2, 1,5, 1,1,2 1,3。

我想出了以下条件概率:

假设col向量中前一个数为1,则后一个数为1的概率等于:2/6。

鉴于前面的数字是 1,后面的数字是 2 的概率等于:2/6。

鉴于前面的数字是 1,后面的数字是 3 的概率等于:1/6。

鉴于前面的数字是 1,后面的数字是 5 的概率等于:1/5。

我们使用这些值来填充矩阵 A 的第一行。我们获得了一个新版本的 A。

A=rbind(c(0:10),c(1,2/6,2/6,1/6,0,1/6,0,0,0,0,0),c(2,rep(0,10)),c(3,rep(0,10)),c(4,rep(0,10)),c(5,rep(0,10)),c(6,rep(0,10)),c(7,rep(0,10)),c(8,rep(0,10)),c(9,rep(0,10)),c(10,rep(0,10)))
> A
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
[1,] 0 1.0000000 2.0000000 3.0000000 4 5.0000000 6 7 8 9 10
[2,] 1 0.3333333 0.3333333 0.1666667 0 0.1666667 0 0 0 0 0
[3,] 2 0.0000000 0.0000000 0.0000000 0 0.0000000 0 0 0 0 0
[4,] 3 0.0000000 0.0000000 0.0000000 0 0.0000000 0 0 0 0 0
[5,] 4 0.0000000 0.0000000 0.0000000 0 0.0000000 0 0 0 0 0
[6,] 5 0.0000000 0.0000000 0.0000000 0 0.0000000 0 0 0 0 0
[7,] 6 0.0000000 0.0000000 0.0000000 0 0.0000000 0 0 0 0 0
[8,] 7 0.0000000 0.0000000 0.0000000 0 0.0000000 0 0 0 0 0
[9,] 8 0.0000000 0.0000000 0.0000000 0 0.0000000 0 0 0 0 0
[10,] 9 0.0000000 0.0000000 0.0000000 0 0.0000000 0 0 0 0 0
[11,] 10 0.0000000 0.0000000 0.0000000 0 0.0000000 0 0 0 0 0

我们要填写第 2 行,第 3 行一直到 10。

我是手动完成的,但是可以自动填写矩阵 A 的好程序是什么?

最佳答案

不确定这是否是最有效的方法,使用 aggregatedcast:

# Get data.
col=c(1,1,2,3,4,5,10,7,7,3,1,5,3,7,6,3,4,2,1,1,2,2,6,4,8,8,9,1,3,2)

# Make shifted vector and make a data frame.
index <- 1:length(col) - 1
index <- tail(index, length(col) - 1)
col.shift <- c(col[index + 1], NA)
df <- data.frame(list("value" = col, "next.value" = col.shift))

# Count number of values per combination.
df$count <- 1
# Count number of value appearences..
df.agg.row <- aggregate(count ~ value, df, FUN = sum)

# Pivot the data.
library(reshape2)
res <- dcast(df, value ~ next.value, fun.aggregate = length)

# Get probability of number (row) being followed by number (col).
res2 <- res[, 2:11] / df.agg.row$count

关于r - 如何将概率插入矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37015642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com