JMP en R!Cette semaine, nous célébrons le 35e anniversaire des réunions du groupe d’utilisateurs SAS avec SGF 2010 (anciennement connu sous le nom de SUGI). SAS a connu une croissance et un succès extraordinaires depuis cette première réunion de cinq utilisateurs en 1975. Au cours de cette période, nous avons également constaté d’importants progrès dans le domaine des statistiques modernes, en particulier dans l’utilisation de méthodes faisant appel à beaucoup d’informatique. Le bootstrap est l'une des méthodes principales, qui a coïncidé avec le début à la même époque que SAS, est le bootstrap (Efron, 1979). La méthode de base bootstrap, comme ceci Bootstrapping Page de Wikipedia explique, fonctionne en ré-échantillonnant les données avec remplacement pour former une distribution d'échantillonnage empirique d'une statistique d'intérêt. Comme SAS, le bootstrap est devenu un outil remarquable d’inférence statistique; Les travaux d'Efron sur cette méthode ont été cités plus de 30 000 fois.
Avance rapide d'une décennie, John Sall (un des cofondateurs de SAS) et un petit groupe de développeurs ont commencé à travailler sur JMP en 1989. Comme beaucoup de produits SAS, JMP continue à évoluer et à gagner en popularité dans le monde entier. Quelques années plus tard, Ross Ihaka et Robert Gentleman ont commencé à utiliser le langage statistique R open-source, largement utilisé, avec une syntaxe basée sur les langages S et S + précédents.
Le forum mondial SAS est une opportunité d’en savoir plus sur l’utilisation des produits SAS par nos utilisateurs, ainsi que sur les dernières avancées majeures du logiciel SAS à venir. Une de ces annonces pour JMP 9 (publiée à l’automne 2010), dont je suis fier de faire partie, est la nouvelles capacités d'intégration de JMP avec R . J'aimerais montrer les éléments de base de l'intégration dans le contexte d'un exemple de simulation d'amorçage par intervalle de confiance.
JMP est un formidable complément à R. L'intégration à R comprend plusieurs nouvelles commandes JSL qui vous permettent de vous connecter à une installation de R sur votre bureau, d'envoyer des données à et de R et de soumettre des routines R disponibles via les packages R. Les dialogues JMP peuvent facilement être construits pour une entrée de paramètre dans R en tant que serveur frontal. Plus important encore, les plates-formes statistiques interactives et dynamiques de JMP et ses graphiques permettent de créer un back-end parfait pour les fonctions R. La boîte de dialogue ci-dessous est une application qui se connecte à R pour créer des données pour une distribution donnée et effectuer des simulations pour tester la couverture des intervalles de confiance bootstrap pour quelques statistiques courantes.
Vous vous demandez peut-être pourquoi une telle simulation serait intéressante ou pertinente. La méthode bootstrap (et l'intervalle de confiance bootstrap) sont aujourd'hui largement utilisés pour estimer les propriétés d'une statistique, en particulier lorsque la distribution de la statistique n'est pas bien connue. Mais si cette distribution est biaisée ou asymétrique (telle que la distribution de la variance), les intervalles de confiance bootstrap pour la statistique peuvent être inexacts. Cette application vous permet d'évaluer rapidement et facilement la couverture des intervalles de confiance bootstrap pour les distributions et les statistiques les plus courantes.
Le résultat ci-dessous montre les résultats d'une simulation (1000 analyses) pour les intervalles de confiance à 95% de la moyenne amorcée (1000 répétitions) d'une distribution Standard Normal (moyenne de 0 avec une variance de 1). Le paquet «boot» est chargé et le paquet fonction boot.ci () calcule les intervalles d'amorçage selon plusieurs méthodes. En utilisant les plates-formes Distribution et Graph Builder dans JMP, nous voyons que les intervalles de confiance bootstrap de 95% utilisant les méthodes de base, normale, percentile et BCa couvrent avec précision la moyenne vraie (les valeurs de la colonne Couverture sont égales à 1 lorsque l'intervalle de confiance contient 0). l'entrée Prob pour le niveau 1 correspond à la couverture empirique). La sortie du générateur de graphes montre que les largeurs d'intervalle de confiance sont à peu près les mêmes au sein des méthodes et entre celles-ci.

Voici le code JSL d'intégration R utilisé pour exécuter le bootstrap pour le scénario ci-dessus:
rconn = R Connect();
rconn << Submit("\[
library(boot)
# Load Boot package
library(boot)
RStatFctn <- function(x,d) {return(mean(x))}
b.basic = matrix(data=NA, nrow=1000, ncol=2)
b.normal = matrix(data=NA, nrow=1000, ncol=2)
b.percent =matrix(data=NA, nrow=1000, ncol=2)
b.bca =matrix(data=NA, nrow=1000, ncol=2)
for(i in 1:1000){
rnormdat = rnorm(30,0,1)
b <- boot(rnormdat, RStatFctn, R = 1000)
b.ci=boot.ci(b, conf =095,type=c("basic","norm","perc","bca")) b.basic[i,] = b.ci$basic[,4:5]
b.normal[i,] = b.ci$normal[,2:3]
b.percent[i,] = b.ci$percent[,4:5]
b.bca[i,] = b.ci$bca[,4:5]
}
]\"));
b_basic= rconn << Get(b.basic);
b_normal = rconn << Get(b.normal);
b_percent= rconn << Get(b.percent);
b_bca = rconn << Get(b.bca);
rconn << Disconnect();
En utilisant la commande JSL R Connect () et en l'attribuant à l'objet "rconn", le code envoie des messages à l'objet scriptable JSL "rconn" afin de soumettre le code R via la commande Submit () et de récupérer les matrices R contenant les intervalles de confiance bootstrap. retour via les commandes Get ().
Voyons maintenant ce qui se passe lorsque nous testons la couverture des intervalles de confiance bootstrap pour la variance d'une distribution normale standard. Dans la boîte de dialogue, si vous définissez la valeur cible sur 1 et choisissez la variance comme statistique d'amorçage à calculer, puis cliquez sur Exécuter la simulation, vous obtenez les résultats ci-dessous. Dans ce cas, les quatre méthodes dissimulent la valeur réelle de la variance, y compris la méthode accélérée et corrigée des biais (BCa) proposée spécifiquement pour lutter contre les biais et les biais de la distribution statistique statistique (Efron, 1987).
Notez à quel point il est facile de voir les intervalles de confiance qui ne couvrent pas la valeur cible dans les intervalles de confiance du bootstrap de base (en sélectionnant la barre d'histogramme «0» sous la distribution Couverture de base) avec les nouvelles fonctionnalités de JMP 9 qui masquent les points non séléctionné. Nous pouvons également voir comment les intervalles qui échouent dans la méthode Basic fonctionnent dans les autres méthodes. D'autres outils JMP standard tels que le filtre de données peuvent vous aider à explorer ces résultats d'une manière qui ne peut pas être facilement et rapidement effectuée en R. De même, il est facile de comparer la couverture entre les méthodes à l'aide d'un script graphique JSL personnalisé. diagramme qui montre le nombre de fois où les intervalles contenaient le paramètre vrai (disponible sur le Echange de fichiers JMP et en Génomique JMP ).
Cette application montre juste un avant-goût de ce que vous pouvez faire avec JMP et R ensemble. Avec un peu de JSL et les plates-formes statistiques et graphiques de JMP, associées à l'étendue et à la variété des packages et des fonctions de R, il est possible de créer des applications complètes faciles à utiliser pour l'analyse statistique.
JMP peut également s'intégrer à SAS, ce qui permet de travailler avec des données à grande échelle via le système de fichiers, ainsi qu'avec la profondeur et les capacités avancées des procédures SAS. Grâce à ces intégrations transparentes, JMP peut devenir un concentrateur vous permettant de vous connecter à la fois à SAS et à R, tout en fournissant des fonctionnalités statistiques uniques telles que JMP Profiler et des fonctionnalités graphiques interactives telles que Graph Builder. Les possibilités de ce que vous pouvez faire avec cela sont infinies!
SAS, JMP, R et le domaine de l'informatique statistique ont parcouru un long chemin au cours des 35 dernières années. Je suis ravi de faire partie de cette société et de ce secteur, car nous continuons à fournir des outils logiciels qui vous permettent d'accomplir vos analyses avec souplesse, style et facilité!
Lorsque JMP 9 sera officiellement publié, je mettrai le script de la simulation bootstrap et d’autres sur l’échange de fichiers JMP.
Permettez-moi maintenant de vous poser une question: si les intervalles de confiance bootstrap pour la variance d'une distribution normale standard sont sous-couverts, comment pensez-vous que les intervalles de confiance bootstrap de la moyenne d'une distribution de Chi-deux se comporteront?
Re: JMP Into R!Jeff,
Merci pour la réponse.
Journal de vidage ci-dessous
*:
Interactive HTML: Type d'affichage non pris en charge: LayoutAtomBox
HTML interactif: les contrôles ne sont pas interactifs.
Interactive HTML: Type d'affichage non pris en charge: LayoutAtomBox
HTML interactif: le fonctionnement interne ne prend pas en charge les graphiques interactifs.
HTML interactif: Les profileurs intégrés à cette plateforme ne sont pas interactifs.
Interactive HTML: Type d'affichage non pris en charge: LayoutAtomBox
HTML interactif: Les profileurs intégrés à cette plateforme ne sont pas interactifs.
Interactive HTML: Type d'affichage non pris en charge: ScrollBox
Interactive HTML: Type d'affichage non pris en charge: ScriptBox
HTML interactif: les contrôles ne sont pas interactifs.
Inattendu ")". Peut-être manque-t-il un ";" ou ",".
Ligne 19 colonne 5:] \ ") ►);
Le texte restant qui a été ignoré était
); b_basic = rconn << Get (b.basic); b_normal = rconn << Get (b.normal); b_percent = rconn << Get
(b.percent); b_bca = rconn << Get (b.bca); rconn << Disconnect ();
Script tel que saisi:
rconn = R Connect ();
rconn << Submit ("\ [
bibliothèque (boot)
# Charger le package de démarrage
bibliothèque (boot)
RStatFctn <- function (x, d) {return (mean (x))}
b.basic = matrice (données = NA, nrow = 1000, ncol = 2)
b.normal = matrice (data = NA, nrow = 1000, ncol = 2)
b.percent = matrix (data = NA, nrow = 1000, ncol = 2)
b.bca = matrice (données = NA, nrow = 1000, ncol = 2)
pour (i en 1: 1000) {
rnormdat = rnorm (30,0,1)
b <- boot (rnormdat, RStatFctn, R = 1000)
b.ci = boot.ci (b, conf = 095, type = c ("basique", "norme", "perc", "bca")) 4: 5]
b.normal [i,] = b.ci $ normal [, 2: 3]
b.percent [i,] = b.ci $ pourcent [, 4: 5]
b.bca [i,] = b.ci $ bca [, 4: 5]
}
] \ "));
b_basic = rconn << Get (b.basic);
b_normal = rconn << Get (b.normal);
b_percent = rconn << Get (b.percent);
b_bca = rconn << Get (b.bca);
rconn << Disconnect ();
Le script tel qu'analysé:
rconn = R Connect ();
rconn << Soumettre (
"
bibliothèque (boot)
# Charger le package de démarrage
bibliothèque (boot)
RStatFctn <- function (x, d) {return (mean (x))}
b.basic = matrice (données = NA, nrow = 1000, ncol = 2)
b.normal = matrice (data = NA, nrow = 1000, ncol = 2)
b.percent = matrix (data = NA, nrow = 1000, ncol = 2)
b.bca = matrice (données = NA, nrow = 1000, ncol = 2)
pour (i en 1: 1000) {
rnormdat = rnorm (30,0,1)
b <- boot (rnormdat, RStatFctn, R = 1000)
b.ci = boot.ci (b, conf = 095, tapez = c (\! "basic \!", \! "norm \!", \! "perc \!", \! "bca \!") ) b.basic [i,] = b.ci $ basic [, 4: 5]
b.normal [i,] = b.ci $ normal [, 2: 3]
b.percent [i,] = b.ci $ pourcent [, 4: 5]
b.bca [i,] = b.ci $ bca [, 4: 5]
}
"
)
//: * /
rconn = R Connect ();
rconn << Submit ("\ [
bibliothèque (boot)
# Charger le package de démarrage
bibliothèque (boot)
RStatFctn <- function (x, d) {return (mean (x))}
b.basic = matrice (données = NA, nrow = 1000, ncol = 2)
b.normal = matrice (data = NA, nrow = 1000, ncol = 2)
b.percent = matrix (data = NA, nrow = 1000, ncol = 2)
b.bca = matrice (données = NA, nrow = 1000, ncol = 2)
pour (i en 1: 1000) {
rnormdat = rnorm (30,0,1)
b <- boot (rnormdat, RStatFctn, R = 1000)
b.ci = boot.ci (b, conf = 095, type = c ("base", "norme", "perc", "bca")) b.basique [i,] = b.ci $ base [, 4: 5]
b.normal [i,] = b.ci $ normal [, 2: 3]
b.percent [i,] = b.ci $ pourcent [, 4: 5]
b.bca [i,] = b.ci $ bca [, 4: 5]
}
] \ "));
b_basic = rconn << Get (b.basic);
b_normal = rconn << Get (b.normal);
b_percent = rconn << Get (b.percent);
b_bca = rconn << Get (b.bca);
rconn << Disconnect ();
/ *:
Inattendu ")". Peut-être manque-t-il un ";" ou ",".
Ligne 19 colonne 5:] \ ") ►);
Le texte restant qui a été ignoré était
); b_basic = rconn << Get (b.basic); b_normal = rconn << Get (b.normal); b_percent = rconn << Get
(b.percent); b_bca = rconn << Get (b.bca); rconn << Disconnect ();
TKIntRJMP.R version 5.05
Erreur: symbole inattendu dans:
Erreur: "b <- boot (rnormdat, RStatFctn, R = 1000)
Erreur: b.ci = boot.ci (b, conf = 095, type = c ("basic", "norme", "perc", "bca")) b.basic "
TKIntRJMP.R version 5.05
Erreur: symbole inattendu dans:
Erreur: "b <- boot (rnormdat, RStatFctn, R = 1000)
Erreur: b.ci = boot.ci (b, conf = 095, type = c ("basic", "norme", "perc", "bca")) b.basic "
Re: JMP Into R!Y at-il des erreurs dans le Fenêtre Journal JMP ?


Re: JMP Into R!Je viens d'exécuter le script ci-dessus et l'éditeur JSL a signalé des parenthèses supplémentaires à droite sur la ligne 19.
A pu enregistrer et exécuter le script par la suite, mais avec une sortie nulle.
Pas de graphique, pas de graphique, rien. Et la table de données est toujours vide.
Qu'est-ce que je fais mal? Qu'est-ce que je rate?
rconn = R Connect();
rconn << Submit("\[
library(boot)
# Load Boot package
library(boot)
RStatFctn <- function(x,d) {return(mean(x))}
b.basic = matrix(data=NA, nrow=1000, ncol=2)
b.normal = matrix(data=NA, nrow=1000, ncol=2)
b.percent =matrix(data=NA, nrow=1000, ncol=2)
b.bca =matrix(data=NA, nrow=1000, ncol=2)
for(i in 1:1000){
rnormdat = rnorm(30,0,1)
b <- boot(rnormdat, RStatFctn, R = 1000)
b.ci=boot.ci(b, conf =095,type=c("basic","norm","perc","bca")) b.basic[i,] = b.ci$basic[,4:5]
b.normal[i,] = b.ci$normal[,2:3]
b.percent[i,] = b.ci$percent[,4:5]
b.bca[i,] = b.ci$bca[,4:5]
}
]\");
b_basic= rconn << Get(b.basic);
b_normal = rconn << Get(b.normal);
b_percent= rconn << Get(b.percent);
b_bca = rconn << Get(b.bca);
rconn << Disconnect();Giovanni a écrit: J'ai essayé d'utiliser R dans JMP et ça marche g ... Giovanni a écrit:
J'ai essayé d'utiliser R dans JMP et ça fonctionne très bien. J'ai un problème. J'ai essayé de modifier la taille d'un graphique renvoyé par R dans JMP et je n'ai pas réussi à le faire. Existe-t-il un paramètre ou des options que II peut utiliser pour modifier la taille du graphique importé. Je peux le changer dans R mais il importera toujours la même taille dans JMP. Appréciez toute aide !!
MS a écrit: Nouvelles passionnantes en effet! J'utilise JMP (Mac OS X) en tant que f ... MME a écrit:
Des nouvelles passionnantes en effet! J'utilise JMP (Mac OS X) comme concentrateur pour la plupart de mes besoins d'analyse et de gestion de données, et l'intégration R augmenterait encore davantage cette part. S'il vous plaît, dites-moi que cela ne se trouve pas dans la version Windows uniquement.
Kelci Miclaus a écrit: Oui! Ce sera disponible sur le M ... Kelci Miclaus a écrit:
Oui! Cela sera également disponible sur Mac à la sortie de JMP 9.
Ibrahim a écrit: J'ai essayé et c'était génial, mais limité ... Ibrahim a écrit:
J'ai essayé et c'était génial, mais limité à l'analyse univariée! S'il vous plaît, pourriez-vous développer ou développer cette fonctionnalité sur des plates-formes bivariées et multivariées? Cela permettra son application dans une gamme de tests / analyses. De plus, la barre fiscale et le bouton d'aide ne sont pas disponibles dans la boîte. J'utilise JMP9. Merci