我想创建一个具有95%"精确"置信椭圆的二元正态分布的散点图.
library(mvtnorm)
library(ggplot2)
set.seed(1)
n <- 1e3
c95 <- qchisq(.95, df=2)
rho <- 0.8 #correlation
Sigma <- matrix(c(1, rho, rho, 1), 2, 2) # Covariance matrix
Run Code Online (Sandbox Code Playgroud)
我从双变量法线生成了1000个观测值,平均值为零,方差=Sigma
x <- rmvnorm(n, mean=c(0, 0), Sigma)
z <- p95 <- rep(NA, n)
for(i in 1:n){
z[i] <- x[i, ] %*% solve(Sigma, x[i, ])
p95[i] <- (z[i] < c95)
}
Run Code Online (Sandbox Code Playgroud)
我们可以轻松地使用生成数据的散点图顶部绘制95%置信度椭圆stat_ellipse
.得到的数字是完全令人满意的,直到你注意到几个红点位于置信椭圆内.我猜这种差异来自某些参数的估计,并随着样本量的增大而消失.
data <- data.frame(x, z, p95)
p <- ggplot(data, aes(X1, X2)) + geom_point(aes(colour = p95))
p + stat_ellipse(type = "norm")
Run Code Online (Sandbox Code Playgroud)
是否有任何方法可以微调, …
是否有一个函数在Julia中创建滞后变量而不使用任何包?
具体来说,我想embed
在Julia中模仿R的功能.
> embed(1:8, 3)
[,1] [,2] [,3]
[1,] 3 2 1
[2,] 4 3 2
[3,] 5 4 3
[4,] 6 5 4
[5,] 7 6 5
[6,] 8 7 6
Run Code Online (Sandbox Code Playgroud)
经过几个小时的浏览Julia手册,我放弃了在Julia寻找合适的功能.这个丑陋的功能(按R标准)是我到目前为止所拥有的.是否有任何内置功能或任何改进空间?
julia> function embed(x, k)
n = length(x)
m = zeros(n - k + 1, k)
for i in 1:k
m[:, i] = x[(k-i+1):(n-i+1)]
end
return m
end
embed (generic function with 1 method)
julia> embed(1:8,3)
6x3 Array{Float64,2}:
3.0 2.0 1.0
4.0 3.0 2.0
5.0 4.0 …
Run Code Online (Sandbox Code Playgroud) 目标
我正在尝试构建一个从"不完全均匀分布"中抽取特定数量的随机数的函数.
我称之为不完整的均匀分布?
我将不完整的均匀分布称为概率分布,其中X
一系列边界内的每个值具有相同的拾取概率.换句话说,它是具有孔的均匀分布(其中概率为零),如下所示
x = list(12:25, 34:54, 67:90, 93:115)
y = 1/sum(25-12, 54-34, 90-67, 115-93)
plot(y=rep(y, length(unlist(x))), x=unlist(x), type="n", ylab="Probability", xlab="X")
for (xi in x)
{
points(xi,rep(y, length(xi)), type="l", lwd=4)
}
Run Code Online (Sandbox Code Playgroud)
难看的解决方案
这是一个缓慢而丑陋的解决方案
IncompleteUnif = function(n,b)
{
#################
# "n" is the desired number of random numbers
# "b" is a list describing the boundaries within which a random number can possibly be drawn.
#################
r = c() # Series of random numbers to return
for (ni …
Run Code Online (Sandbox Code Playgroud) 如果我有一个像
x = c(1, 2, -1, -2, 5, 6, 7, -1, -2, -3, 8, 9)
Run Code Online (Sandbox Code Playgroud)
我希望对于每个负值,向前看并计算前方有多少个负值,包括当前值。所以结果看起来像
y = c(0, 0, 2, 1, 0, 0, 0, 3, 2, 1, 0, 0)
Run Code Online (Sandbox Code Playgroud)
我的最终目标是使用这些结果根据最接近的正值的平均值创建负值的替换值。在这种情况下,我希望结果是:
result = {1,2,(2+5)/2,(2+5)/2,5,6,7,(7+8)/2,(7+8)/2,(7+8)/2,8,9}
Run Code Online (Sandbox Code Playgroud)
现在,我可以使用mutate
和lead
使用不同的偏移量来执行此操作,但是必须有更简单的方法吗?
所有,我搜索过,找不到如何做到这一点的答案.我对R比较新,并且之前没有使用常规表达式,但基本上我有一些数据放入这样的字段:
"#Route - 6 #Category - PARKING #Details - Parking issues#Result - MOVED ON #Vehicle Type - Mercedes "
Run Code Online (Sandbox Code Playgroud)
我基本上希望能够将字符串拆分为不同的元素,因此#之后的每个类别都有自己的列.
我尝试使用tidyr包并且最初尝试过:
string %>% separate(Description, into = c("Route","Details","Result","License No",
"Vehicle Desciption"),
sep = "\n#", remove =F, extra = "drop")
Run Code Online (Sandbox Code Playgroud)
但实现我只想要" - "之后的数据.我尝试在代码中插入" - "但它不起作用.有谁知道如何在" - "和"#"之间理想地分割字符串.
非常感谢
我有一个像这样的日期时间的数据集"{datetime:2015-07-01 09:10:00"
所以我想删除文本,然后保留日期和时间as.Date
仅返回日期.所以我写这段代码,但我唯一的问题是在strsplit的第二行,它只返回第一行的日期时间,所以擦掉其他...我很想得到我所有的约会时间不仅首先.我也许考虑过,但我无法做对,我有很多错误,或者可能有一个循环?我是R的新手,所以我真的不知道怎么做最好的方法.
请问你能帮帮我吗?除此之外如果您对时间和日期格式有另一种想法或一种简单的方法,那么它也应该是非常好的.
data$`Date Time`=as.character(data$`Date Time`)
data$`Date Time`=unlist(strsplit(data[,1], split='e:'))[2]
date=substr(data$`Date Time`,0,10)
date=as.Date(date)
time=substr(data$`Date Time`,12,19)
data$Date=date
data$Time=time
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助!