JMP en R!Esta semana celebramos el 35 aniversario de las reuniones de grupos de usuarios de SAS con SGF 2010 (anteriormente conocido como SUGI). SAS ha exhibido un extraordinario crecimiento y éxito desde la primera reunión de cinco usuarios en 1975. Durante este lapso de tiempo, también hemos visto avances importantes en el campo de las estadísticas modernas, especialmente en el uso de métodos intensivos en computadoras. Uno de los métodos principales, que se originó casualmente alrededor del mismo tiempo que SAS, es el bootstrap (Efron, 1979). El método de arranque básico, como este Página de arranque de Wikipedia Explica, funciona mediante el nuevo muestreo de los datos con el reemplazo para formar una distribución de muestreo empírica de una estadística de interés. Al igual que SAS, el bootstrap se ha convertido en una herramienta notable para la inferencia estadística; Los trabajos de Efron solo en este método han sido citados más de 30,000 veces.
Avanzando rápidamente una década, John Sall (uno de los cofundadores de SAS) y un pequeño grupo de desarrolladores comenzaron a trabajar en JMP en 1989. Como muchos productos SAS, JMP Continúa evolucionando y creciendo en popularidad en todo el mundo. Pocos años después, Ross Ihaka y Robert Gentleman comenzaron el lenguaje estadístico de fuente abierta R, que ahora se usa ampliamente, con una sintaxis basada en los lenguajes S y S + anteriores.
SAS Global Forum es una oportunidad para aprender sobre cómo nuestros usuarios emplean los productos de SAS, así como para que los usuarios aprendan sobre los últimos y mejores avances en el próximo software de SAS. Uno de estos anuncios para JMP 9 (que se lanzará en el otoño de 2010) del cual estoy orgulloso de ser parte es el Nuevas capacidades de integración de JMP con R. . Me gustaría mostrar los elementos básicos de la integración en el contexto de un ejemplo de simulación de intervalo de confianza bootstrap.
JMP es un complemento maravilloso para R. La integración con R se destaca con varios nuevos comandos JSL que le permiten conectarse a una instalación de R en su escritorio, enviar datos desde y hacia R, y enviar las rutinas R disponibles a través de los paquetes de R. Los diálogos de JMP se pueden crear fácilmente para la entrada de parámetros a R como un front-end y, lo que es más importante, las plataformas estadísticas y gráficos interactivos y dinámicos de JMP hacen que el back-end sea perfecto para las funciones de R. El cuadro de diálogo a continuación es una aplicación que se conecta a R para crear datos para una distribución determinada y realizar simulaciones para probar la cobertura de los intervalos de confianza de bootstrap para algunas estadísticas comunes.
Puede preguntarse por qué tal simulación sería interesante o relevante. El método bootstrap (y el intervalo de confianza de bootstrap) se usa ampliamente hoy en día para estimar las propiedades de una estadística, especialmente cuando la distribución de la estadística no es bien conocida. Pero si esa distribución está sesgada o sesgada (como la distribución de la varianza), los intervalos de confianza de arranque para la estadística pueden ser inexactos. Esta aplicación le permite evaluar rápida y fácilmente la cobertura de los intervalos de confianza de arranque para las distribuciones y estadísticas más comunes.
La salida a continuación muestra los resultados de una simulación (1000 ejecuciones) para los intervalos de confianza del 95% de la media de arranque (1000 repeticiones) de una distribución Normal Estándar (media de 0 con varianza de 1). Se carga el paquete R "boot", y el función boot.ci () calcula los intervalos de arranque por varios métodos diferentes. Al usar las plataformas Distribution y Graph Builder en JMP, vemos que el 95% de los intervalos de confianza de arranque usando los métodos Básico, Normal, Percentil y BCa cubren con precisión la media verdadera (los valores de la columna Cobertura son 1 cuando el intervalo de confianza contiene 0, por lo que la entrada de Prob para el Nivel 1 corresponde a la cobertura empírica). La salida de Graph Builder muestra que los anchos de intervalo de confianza son aproximadamente iguales tanto dentro como entre métodos.

Aquí está el código JSL de integración R usado para ejecutar el programa de arranque para el escenario anterior:
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();
Utilizando el comando R Connect () JSL y asignándolo al objeto "rconn", el código envía mensajes al objeto JSL de secuencias de comandos "rconn" para enviar el código R mediante el comando Enviar () y recuperar matrices R que contienen los intervalos de confianza de arranque de vuelta a través de los comandos Get ().
Ahora veamos qué sucede cuando probamos la cobertura de los intervalos de confianza de bootstrap para la varianza de una distribución normal estándar. En el cuadro de diálogo, si cambia el Valor objetivo a 1 y elige la Variación como la estadística de inicio para calcular y hacer clic en Ejecutar simulación, obtendrá los resultados a continuación. En este caso, los cuatro métodos cubren el verdadero valor de la varianza, incluido el método de corrección de sesgos y acelerado (BCa) propuesto específicamente para combatir el sesgo y la asimetría en la distribución del estadístico bootstrapped (Efron 1987).
Tenga en cuenta lo fácil que es ver los intervalos de confianza que no cubren el valor objetivo en los intervalos básicos de confianza de arranque (seleccionando la barra de histograma "0" en la distribución de Cobertura básica) con nuevas características en JMP 9 que ponen de relieve los puntos que estaban no seleccionado. También podemos ver cómo se realizan los intervalos que fallan en el método Básico en los otros métodos. Otras herramientas estándar de JMP, como el Filtro de datos, pueden ayudar a explorar estos resultados de manera que no se puedan hacer fácil y rápidamente en R. Del mismo modo, la comparación de la cobertura entre métodos es fácil de ver con un script de gráficos JSL personalizado para crear un Venn diagrama que muestra los recuentos de cuándo los intervalos contenían el parámetro verdadero (disponible en el Intercambio de archivos JMP y en JMP Genomics ).
Esta aplicación muestra solo una muestra de lo que puedes hacer con JMP y R juntos. Con un poco de JSL y las plataformas estadísticas y gráficas de JMP junto con la amplitud y variedad de paquetes y funciones en R, se pueden crear aplicaciones completas y fáciles de usar para el análisis estadístico.
JMP también puede integrarse con SAS, lo que agrega la capacidad de trabajar con datos a gran escala a través del sistema basado en archivos, así como la profundidad y las capacidades avanzadas de los procedimientos SAS. Con estas integraciones sin problemas, JMP puede convertirse en un centro que le permite conectarse tanto con SAS como con R, así como proporcionar características estadísticas únicas como el Perfilador de JMP y funciones gráficas interactivas como Graph Builder. ¡Las posibilidades de lo que puedes hacer con esto son infinitas!
SAS, JMP, R y el campo de la computación estadística han recorrido un largo camino en los últimos 35 años. Estoy emocionado de ser parte de esta empresa y de esta industria, ya que continuamos brindando herramientas de software que le permiten realizar sus análisis con flexibilidad, estilo y facilidad.
Cuando JMP 9 se lance oficialmente, pondré el script para la simulación de arranque y otros en el intercambio de archivos JMP.
Ahora permítame dejarle una pregunta: si los intervalos de confianza de arranque para la varianza de una distribución normal estándar no están cubiertos, ¿cómo cree que se comportarán los intervalos de confianza de arranque de la media de una distribución de Chi-cuadrado?
Re: JMP en R!Jeff
Gracias por la respuesta.
Volcado de registro abajo
*:
HTML interactivo: tipo de visualización no compatible: LayoutAtomBox
HTML interactivo: los controles no son interactivos.
HTML interactivo: tipo de visualización no compatible: LayoutAtomBox
HTML interactivo: la operación interna no admite gráficos interactivos.
HTML interactivo: los perfiladores integrados en esta plataforma no son interactivos.
HTML interactivo: tipo de visualización no compatible: LayoutAtomBox
HTML interactivo: los perfiladores integrados en esta plataforma no son interactivos.
HTML interactivo: Tipo de pantalla no compatible: ScrollBox
HTML interactivo: Tipo de pantalla no compatible: ScriptBox
HTML interactivo: los controles no son interactivos.
Inesperado ")". Tal vez haya un ";" perdido o ",".
Línea 19 Columna 5:] \ ") ►);
El texto restante que fue ignorado fue
); 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 como ingresado:
rconn = R Connect ();
rconn << Enviar ("\ [
biblioteca (arranque)
# Cargar paquete de arranque
biblioteca (arranque)
RStatFctn <- función (x, d) {retorno (media (x))}
b.basic = matriz (datos = NA, nrow = 1000, ncol = 2)
b.normal = matriz (datos = NA, nrow = 1000, ncol = 2)
b.percent = matriz (datos = NA, nrow = 1000, ncol = 2)
b.bca = matriz (datos = NA, nrow = 1000, ncol = 2)
para (i en 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 << Desconectar ();
Script como se analiza:
rconn = R Connect ();
rconn << Enviar (
"
biblioteca (arranque)
# Cargar paquete de arranque
biblioteca (arranque)
RStatFctn <- función (x, d) {retorno (media (x))}
b.basic = matriz (datos = NA, nrow = 1000, ncol = 2)
b.normal = matriz (datos = NA, nrow = 1000, ncol = 2)
b.percent = matriz (datos = NA, nrow = 1000, ncol = 2)
b.bca = matriz (datos = NA, nrow = 1000, ncol = 2)
para (i en 1: 1000) {
rnormdat = rnorm (30,0,1)
b <- boot (rnormdat, RStatFctn, R = 1000)
b.ci = boot.ci (b, conf = 095, escriba = 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]
}
"
);
//: * /
rconn = R Connect ();
rconn << Enviar ("\ [
biblioteca (arranque)
# Cargar paquete de arranque
biblioteca (arranque)
RStatFctn <- función (x, d) {retorno (media (x))}
b.basic = matriz (datos = NA, nrow = 1000, ncol = 2)
b.normal = matriz (datos = NA, nrow = 1000, ncol = 2)
b.percent = matriz (datos = NA, nrow = 1000, ncol = 2)
b.bca = matriz (datos = NA, nrow = 1000, ncol = 2)
para (i en 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 << Desconectar ();
/ *:
Inesperado ")". Tal vez haya un ";" perdido o ",".
Línea 19 Columna 5:] \ ") ►);
El texto restante que fue ignorado fue
); 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 versión 5.05
Error: símbolo inesperado en:
Error: "b <- boot (rnormdat, RStatFctn, R = 1000)
Error: b.ci = boot.ci (b, conf = 095, type = c ("basic", "norm", "perc", "bca")) b.basic "
TKIntRJMP.R versión 5.05
Error: símbolo inesperado en:
Error: "b <- boot (rnormdat, RStatFctn, R = 1000)
Error: b.ci = boot.ci (b, conf = 095, type = c ("basic", "norm", "perc", "bca")) b.basic "
Re: JMP en R!¿Hay algún error en el Ventana de registro JMP ?


Re: JMP en R!Acabo de ejecutar el script anterior y el Editor JSL marcó un paréntesis derecho extra en la Línea 19.
Fue capaz de guardar y ejecutar el script después, pero con salida cero.
No hay gráficos, no hay gráficos, nada. Y la tabla de datos sigue vacía.
¿Qué estoy haciendo mal? ¿Qué me estoy perdiendo?
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 escribió: Intenté usar R en JMP y está funcionando g ... Giovanni escribió:
Intenté usar R en JMP y está funcionando muy bien. Tengo un problema. He estado intentando cambiar el tamaño de un gráfico devuelto de R a JMP y no he podido hacerlo. ¿Hay algún parámetro u opción que II pueda usar para cambiar el tamaño del gráfico importado? Puedo cambiarlo en R pero siempre lo importará del mismo tamaño en JMP. Aprecio cualquier ayuda !!
MS escribió: ¡Noticias emocionantes por cierto! Yo uso JMP (Mac OS X) como f ... SRA escribió:
¡Una noticia emocionante por cierto! Utilizo JMP (Mac OS X) como concentrador para la mayoría de mis necesidades de análisis y gestión de datos, y la integración de R aumentaría aún más esa participación. Por favor, dígame que esto no se encuentra en la versión de Windows solamente.
Kelci Miclaus escribió: ¡Sí! Esto estará disponible en el M ... Kelci Miclaus escribió:
¡Sí! Esto también estará disponible en la Mac cuando se lance JMP 9.
Ibrahim escribió: Lo intenté y fue genial, pero limitado ... Ibrahim escribió:
Lo probé y fue genial, pero limitado a un análisis univariado. ¿Podría ampliarlo o desarrollarlo para plataformas bivariadas y multivariadas? Esto permitirá su aplicación en una variedad de pruebas / análisis. Además, la barra de impuestos y el botón de ayuda no están disponibles en el cuadro. Estoy usando JMP9. Gracias