В R, Как построить график для этой конкретной функции? - PullRequest
0 голосов
/ 05 апреля 2011
fun = function(lambda) {-y %*% log(a %*% lambda) + lambda %*% apply(a,2,sum)}

в математической записи.

Здесь лямбда-матрица 2 * 1, а - матрица 5 * 2, у - матрица 1 * 5.

Итак, я хотел бы построить забаву (лямбда) из (1:10, 1:10), использовать persp () (или другую команду).

1 Ответ

2 голосов
/ 06 апреля 2011

Ты почти у цели.Вам просто нужно создать сетку значений (1:10, 1:10) для оценки вашей функции.Я использовал фиктивные данные для иллюстрации.

set.seed(123)
lambda<-as.matrix(runif(2),nrow=2)
a<-matrix(runif(10),ncol=2)
y<-runif(5)

fun = function(lambda) {-y %*% log(a %*% lambda) + lambda %*% apply(a,2,sum)}

#Create grid 
lambda.grid<-expand.grid(1:10,1:10)
names(lambda.grid)<-c("lambda_1","lambda_2")

z<-apply(lambda.grid,1,fun) #Evaluate function for each row

#Change z into matrix form for persp plots

z.mat<-matrix(z,ncol=10,byrow=FALSE)

persp(x=1:10,y=1:10,z.mat,xlab="lambda_1",ylab="lambda_2",zlab="f(lambda_1,lambda_2)")

HTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...