小编use*_*076的帖子

从相关矩阵生成协方差矩阵

我有一个相关矩阵:

a <- matrix(c(1, .8, .8, .8, 1, .8, .8, .8, 1), 3)

##      [,1] [,2] [,3]
## [1,]  1.0  0.8  0.8
## [2,]  0.8  1.0  0.8
## [3,]  0.8  0.8  1.0
Run Code Online (Sandbox Code Playgroud)

我现在想从相关矩阵创建一个协方差矩阵.如何在R中完成?

我试过了:

e1.sd <- 3
e2.sd <- 10
e3.sd <- 3
e.cov <- a * as.matrix(c, e1.sd, e2.sd, e3.sd) %*% t(as.matrix(c(e1.sd, e2.sd, e3.sd)))
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

Error in a * as.matrix(c, e1.sd, e2.sd, e3.sd) %*% t(as.matrix(c(e1.sd,  : 
  non-conformable arrays
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

r

11
推荐指数
2
解决办法
1万
查看次数

How many times to use set.seed(123)

I have 60 lines of code. Throughout the code there are several calls to random number generators including rnorm(). Is it enough to put set.seed(x) in the very beginning of the code or do I need to set.seed every time random number generation occurs in the code?

r

6
推荐指数
1
解决办法
2785
查看次数

如何计算生成相关二元变量的边际概率

假设我想创建50个长度为100的二进制变量,每个变量彼此相关.

因为我用指定的rho创建了一个相关矩阵:

cor.mat <- matrix(0.2,nrow=50, ncol=50)
diag(cor.mat) <- 1
Run Code Online (Sandbox Code Playgroud)

接下来我使用rmvbin:

library(bindata)
rmvbin<-rmvbin(100, margprob=x, bincorr=cor.mat)
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何计算margprob参数.有人可以帮忙吗?

它应该是每行和每列概率之和的向量吗?

r bindata

5
推荐指数
1
解决办法
1832
查看次数

从现有变量创建相关变量

假设我有一个向量:

Q<-rnorm(10,mean=0,sd=20)
Run Code Online (Sandbox Code Playgroud)

从这个向量我想:

1.创建 10 个变量(a1...a10),每个变量与 Q 的相关性高于 0.5(即介于 0.5 和 1 之间)。

第一部分可以通过以下方式完成:

t1<-sapply(1:10, function(x) jitter(t, factor=100))
Run Code Online (Sandbox Code Playgroud)

2.这些变量中的每一个都(a1...a10)应该具有预先指定的相互关系。例如,一些应该是相关的 0.8 和一些 -.2。

这两件事能做到吗?

我创建了一个相关矩阵:

cor.table <- matrix( sample( c(0.9,-0.9) , 2500 , prob = c( 0.8 , 0.2 ) , repl = TRUE ) , 50 , 50 )
k=1
while (k<=length(cor.table[1,])){
    cor.table[1,k]<-0.55
    k=k+1
    }
k=1
while (k<=length(cor.table[,1])){
    cor.table[k,1]<-0.55
    k=k+1
    }   
    diag(cor.table) <- 1
Run Code Online (Sandbox Code Playgroud)

但是,当我应用@SprengMeister 的优秀解决方案时,出现错误:

Error in eigen(cor.table)$values > 0 : 
  invalid comparison …
Run Code Online (Sandbox Code Playgroud)

r correlation

4
推荐指数
1
解决办法
5177
查看次数

选择十进制数的所有二进制邻居

假设我有十进制格式的数字: 5

它的二进制版本是: 00101

我想写一个带十进制数的函数 x

并返回与原始数字差异(以二进制形式)的所有其他十进制数字:

所以对于上面的例子,邻居是:

10101 01101 00111 00001 00100
Run Code Online (Sandbox Code Playgroud)

相应的小数是:

21 13 7 1 4
Run Code Online (Sandbox Code Playgroud)

我想要一个计算效率高的解决方案,即使我说了一百万个数字也不需要很长时间.

这可能吗?

binary r decimal

3
推荐指数
1
解决办法
117
查看次数

循环直到没有错误

我想运行一段有时会产生错误的代码.

例如:

a<-matrix(NA,ncol=1,nrow=sample(1:5,1))
a[sample(1:5,1),1]<-10
Run Code Online (Sandbox Code Playgroud)

我想重复这些命令,直到它们运行没有错误.

是否可以将其嵌入到while()循环中,该循环继续运行直到出现错误,并且当两行可以无错误地执行时停止?

r

3
推荐指数
1
解决办法
1719
查看次数

重复循环,直到找不到错误

我有一个执行一系列操作的循环.

在某些情况下,没有解决问题的方法,因此代码会返回错误.

如果我继续重新运行循环,最终它会找到一个没有错误执行的解决方案.

我想将循环嵌入到一个while()重复循环的语句中,直到程序没有返回任何错误或警告.

我不想抓住错误.相反,我想重复尝试,直到没有错误.

如何才能做到这一点?

这是一个小例子:

a<-matrix(NA,ncol=1,nrow=sample(1:5,1))
a[sample(1:5,1),1]<-10
Run Code Online (Sandbox Code Playgroud)

在这里有时这可以做到有时它不能.当然这是一个非常玩具的例子,但重点是我想重复这两行代码直到没有错误.

r

1
推荐指数
1
解决办法
1233
查看次数

标签 统计

r ×7

binary ×1

bindata ×1

correlation ×1

decimal ×1