在下面的代码中,我尝试使用函数norm.dem生成由x和y给出的点的等高线图。我似乎无法弄清楚如何做到这一点。我已经尝试了我能想到的一切。由于某种原因,该功能不允许我输入序列值。外部函数不应该给我一个值列表吗?
x=seq(-10,10,length=1000)
y=seq(-10,10,length=1000)
sigma <- matrix(c(10,-5,-5,20), ncol=2)
sigma
norm.den=function(x,y,sigma,mu)
{
j<-c(x,y)
k=j-mu
t<-t(k)
s<-solve(sigma)
d<-det(sigma)
((2.718)^(-t%*%s%*%k/2))/(2*(3.14)*sqrt(d))
}
z=outer(x,y,norm.den,sigma=sigma,mu=c(0,0))
答案 0 :(得分:0)
强行使用for()
循环。
normden <- function(x, y, solvsig=ss, detsig=ds, mu=c(0, 0)) {
k <- c(x, y) - mu
tk <- t(k)
(exp(-tk %*% ss %*% k / 2)) / (2*pi*sqrt(ds))
}
sigma <- matrix(c(10, -5, -5, 20), ncol=2)
ss <- solve(sigma)
ds <- det(sigma)
x <- seq(-10, 10, length=10)
y <- seq(-10, 10, length=10)
z <- array(dim=c(length(x), length(x)))
for(i in seq(x)) {
for(j in seq(y)) {
z[i, j] <- normden(x=x[i], y=y[j])
}}
z
我无法让outer()
使用normden()
函数。不知道为什么。
outer(x, y, "normden")
我得到OP提到的错误Error in -tk %*% ss : non-conformable arguments
。