Je me demandais si quelqu'un pouvait m'aider avec bonté dans cette tâche apparemment facile. J'utilise nlminb pour conduire l'optimisation et calculer quelques statistiques par index. Voici un exemple de l'aide de nlminb.Appliquer nlminb à des sous-ensembles de données (par index ou étiquette) et stocker ce que le programme renvoie comme une nouvelle trame de données
> x <- rnbinom(100, mu = 10, size = 10)
> hdev <- function(par) {
+ -sum(dnbinom(x, mu = par[1], size = par[2], log = TRUE))
+ }
> nlminb(c(9, 12), hdev)
$par
[1] 9.730000 5.954936
$objective
[1] 297.2074
$convergence
[1] 0
$message
[1] "relative convergence (4)"
$iterations
[1] 10
$evaluations
function gradient
12 27
Supposons que je générer des variables aléatoires x, y
et où z
z
agit comme un indice (1 à 3).
> x <- rnbinom(100, mu = 10, size = 10)
> y <- rnbinom(100, mu = 10, size = 10)
> z <- rep(1:3, length=100)
> A <- cbind(x,y,z)
> hdev <- function(par) {
+ -sum(dnbinom(x+y, mu = par[1], size = par[2], log = TRUE))}
1) Comment puis-je appliquer nlminb(c(9, 12), hdev)
aux données établies par l'indice z
? En d'autres termes, je voudrais calculer nlminb(c(9, 12), hdev)
pour z=1, z=2
, et z=3
séparément. J'ai essayé by(A, z, function(A) nlminb(c(9,12), hdev))
et sparseby(A, z, function(A) nlminb(c(9,12), hdev))
, mais ils retournent exactement les mêmes valeurs pour chaque valeur de z
.
2) Je voudrais transformer chaque sortie en une nouvelle trame de données afin qu'elle devienne une matrice 3X2.
[1] Z1_ANSWER_1 Z1_ANSWER_2
[2] Z2_ANSWER_1 Z2_ANSWER_2
[3] Z3_ANSWER_1 Z3_ANSWER_2
Depuis nlminb renvoie le résumé des statistiques, je devais utiliser CASEZ1<-nlminb$par, CASEZ2<-nlminb$par, CASEZ3<-nlminb$par
puis utiliser cbind pour les combiner. Cependant, je voudrais automatiser ce processus que les données réelles sur lesquelles je travaille a beaucoup plus de catégories que z
présentées ici.
Si je ne suis pas clair, s'il vous plaît faites le moi savoir. Je vais voir si je peux reproduire l'ensemble de données et les fonctions sur lesquelles je travaille (je ne les ai pas sur cet ordinateur).
Merci beaucoup d'avance.
Magiquement, ça marche! Permettez-moi de regarder de près à Plyr. Merci beaucoup! –