我正在从具有泊松边缘的二元高斯copula生成概率矩阵.我无法弄清楚为什么概率不会增加到1但会略微增加.这是代码:
library(copula)
cop<-normalCopula(param = 0.92, dim = 2)
mv <- mvdc(cop, c("pois", "pois"),list(list(lambda = 6), list(lambda = 4)))
m <- matrix(NA,50,50)
for (i in 0:49) {
for (j in 0:49) {
m[i+1,j+1]=dMvdc(c(i,j),mv)
}
}
sum(m)
[1] 1.048643
Run Code Online (Sandbox Code Playgroud)
编辑:似乎只有当param参数(相关性)与0不同时才会出现此问题.
我一直认为lmR 中的函数非常快,但正如本例所示,使用solve函数计算的闭合解更快.
data<-data.frame(y=rnorm(1000),x1=rnorm(1000),x2=rnorm(1000))
X = cbind(1,data$x1,data$x2)
library(microbenchmark)
microbenchmark(
solve(t(X) %*% X, t(X) %*% data$y),
lm(y ~ .,data=data))
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下,如果这个玩具示例是一个坏的例子,或者情况lm实际上是慢的吗?
编辑:正如Dirk Eddelbuettel所建议的,由于lm需要解决公式,比较是不公平的,所以更好地使用lm.fit,不需要解决公式
microbenchmark(
solve(t(X) %*% X, t(X) %*% data$y),
lm.fit(X,data$y))
Unit: microseconds
expr min lq mean median uq max neval cld
solve(t(X) %*% X, t(X) %*% data$y) 99.083 108.754 125.1398 118.0305 131.2545 236.060 100 a
lm.fit(X, y) 125.136 136.978 151.4656 143.4915 156.7155 262.114 100 b
Run Code Online (Sandbox Code Playgroud) 我正在尝试抓取此网站:
通过rvestR中的包装。
不幸的是,似乎rvest无法通过CSS选择器识别节点。
例如,如果我尝试提取每个表的标题(坡度,奖赏,距离)中的信息,其CSS选择器为“ .black”,然后运行以下代码:
URL <- read_html("http://www.racingpost.com/greyhounds/result_home.sd#resultDay=2015-12-26&meetingId=18&isFullMeeting=true")
nodes<-html_nodes(URL, ".black")
Run Code Online (Sandbox Code Playgroud)
节点显示为空列表,因此不会刮任何东西。
for循环在R中非常慢。我想知道while循环是否同样如此。
如果是这样,是否有一种方法可以优化R中的while循环?例如,对于for循环,apply函数发挥出色作用,但我不知道while循环的模拟方式。
甚至哈德利(Hadley)在他的书(《高级R》)中对于如何优化while循环也很模糊。