Saltar al contenido principal
LibreTexts Español

4.5: Cómo crear tus propias funciones

  • Page ID
    150142
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    La prueba Shapiro-Wilk es probablemente la forma más rápida de verificar la normalidad pero su salida no es inmediatamente comprensible. Tampoco es fácil aplicar para marcos de datos completos. Vamos a crear la función que supere estos problemas:

    Código\(\PageIndex{1}\) (R):

    Normality <- function(a) {ifelse(shapiro.test(a)$p.value < 0.05, "NOT NORMAL", "NORMAL")}

    (Se utilizó aquí el hecho de que en R, la salida de prueba suele ser una lista y cada componente es posible extraer usando el enfoque $ -name descrito en el capítulo anterior. ¿Cómo saber qué extraer? Guarde la salida de prueba en el objeto y ejecute str (obj)!)

    Colección asmisc.r contiene una versión ligeramente más avanzada de la Normalidad () que toma en cuenta que la prueba de Shapiro-Wilks no es tan confiable para muestras de tamaño pequeño (\(< 25\)).

    Para que esta función Normality () funcione, es necesario copiar el texto anterior en la consola R, o en el archivo separado (preferiblemente con la extensión *.r), y luego cargarlo con el comando source (). El siguiente paso es llamar a la función:

    Código\(\PageIndex{2}\) (R):

    salary <- c(21, 19, 27, 11, 102, 25, 21)
    Normality <- function(a) {ifelse(shapiro.test(a)$p.value < 0.05, "NOT NORMAL", "NORMAL")}
    Normality(salary) # asmisc.r
    sapply(trees, Normality)
    sapply(log(trees+0.01), Normality)

    (Tenga en cuenta que la conversión logarítmica podría cambiar la normalidad. Comprueba si la raíz cuadrada hace lo mismo.)

    Esta función no solo ejecuta la prueba Shapiro-Wilks varias veces sino que también genera un resultado fácilmente legible. Lo más importante es la tercera fila que utiliza el valor p extraído de los resultados de la prueba. El procedimiento de extracción se basa en el conocimiento de la estructura interna de la salida de shapiro.test ().

    objeto de salida sin entrar en ayuda?

    En muchos casos, la función “estacionaria”, nombrada no es necesaria ya que el usuario necesita algún trozo de código que se ejecuta solo una vez (pero se ejecuta de manera relativamente complicada). Aquí ayuda a la función anónima. Es especialmente útil dentro de las funciones de la familia apply (). Así es como calcular el modo simultáneamente en múltiples columnas:

    Código\(\PageIndex{3}\) (R):

    x <- c(174, 162, 188, 192, 165, 168, 172.5)
    sapply(chickwts,function(.x) names(table(.x))[which.max(table(.x))])

    (Aquí seguimos el acuerdo de que en las funciones anónimas, los nombres de los argumentos deben comenzar con un punto.)

    Aún más útil—intervalos de confianza simultáneos:

    Código\(\PageIndex{4}\) (R):

    old.options <- options(warn=-1)
    x <- c(174, 162, 188, 192, 165, 168, 172.5)
    sapply(trees, function(.x) wilcox.test(.x, conf.int=TRUE)$conf.int)
    options(old.options)

    (Aquí suprimimos múltiples advertencias de “lazos”. ¡No lo hagas tú mismo sin una razón fuerte!)

    en el repositorio de datos abiertos contiene mediciones de varios caracteres morfológicos de abedul. ¿Hay algún carácter que pueda analizarse con métodos paramétricos?

    contiene explicación de variables.)

    describir las características como sea posible, calcular el intervalo de confianza apropiado y graficar estos datos.

    ) distinguen más a estas especies. Proporcione la respuesta en la forma “si el personaje es..., entonces especie es..”..


    This page titled 4.5: Cómo crear tus propias funciones is shared under a Public Domain license and was authored, remixed, and/or curated by Alexey Shipunov via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.