1 00:00:00,000 --> 00:00:05,691 2 00:00:05,691 --> 00:00:07,690 CONNOR HARRIS: Todavía me pensar en algún video emocionante 3 00:00:07,690 --> 00:00:12,570 producido por una consultoría profesional que utiliza R mucho en su trabajo. 4 00:00:12,570 --> 00:00:16,329 >> NARRADOR: ¿Qué hay detrás de las estadísticas, los análisis y las visualizaciones 5 00:00:16,329 --> 00:00:19,770 científicos de datos más brillantes de hoy y los líderes empresariales se basan en 6 00:00:19,770 --> 00:00:22,012 para tomar decisiones de gran alcance? 7 00:00:22,012 --> 00:00:23,540 No siempre se puede ver. 8 00:00:23,540 --> 00:00:24,790 Pero está ahí. 9 00:00:24,790 --> 00:00:29,460 Se llama R, de código abierto r-- la lenguaje de programación estadística 10 00:00:29,460 --> 00:00:32,630 que los expertos en datos del mundo sobre el uso de todo lo 11 00:00:32,630 --> 00:00:35,350 de cartografía amplia sociales y tendencias de marketing en línea 12 00:00:35,350 --> 00:00:39,210 al desarrollo de los sectores financiero y el clima modelos que ayudan a impulsar nuestras economías 13 00:00:39,210 --> 00:00:40,780 y comunidades. 14 00:00:40,780 --> 00:00:44,910 >> Pero, ¿qué es exactamente R y donde se inició R? 15 00:00:44,910 --> 00:00:48,620 Bueno originalmente, R empezó aquí con dos profesores 16 00:00:48,620 --> 00:00:51,950 que quería una mejor estadística plataforma para sus estudiantes. 17 00:00:51,950 --> 00:00:56,030 Así que crearon un solo modeladas después de que el lenguaje estadístico S. 18 00:00:56,030 --> 00:01:00,480 Ellos, junto con muchos otros, mantienen trabajando y usando R, 19 00:01:00,480 --> 00:01:05,489 la creación de herramientas para la I y la búsqueda nuevas aplicaciones para R todos los días. 20 00:01:05,489 --> 00:01:07,750 >> Gracias a esto es esfuerzo de la comunidad en todo el mundo, 21 00:01:07,750 --> 00:01:11,850 R siguió creciendo con miles de las bibliotecas creadas por el usuario construidas 22 00:01:11,850 --> 00:01:15,500 para mejorar la funcionalidad de R y validación de la calidad de multitud de fuentes 23 00:01:15,500 --> 00:01:19,740 y el apoyo de las más reconocidas líderes de la industria en todos los campos que 24 00:01:19,740 --> 00:01:25,040 utiliza R. ¿Qué es grande, porque R es el mejor en lo que hace. 25 00:01:25,040 --> 00:01:28,540 Florecimiento expertos de forma rápida y fácil de interpretar, interactuar con, 26 00:01:28,540 --> 00:01:33,790 y visualizar los datos mostrando su rapidez creciente comunidad de usuarios en todo el mundo I 27 00:01:33,790 --> 00:01:36,380 y ver cómo fuente abierta R continúa dando forma 28 00:01:36,380 --> 00:01:39,340 el futuro de la estadística el análisis y la ciencia de datos. 29 00:01:39,340 --> 00:01:44,660 30 00:01:44,660 --> 00:01:47,710 >> CONNOR HARRIS: Muy bien, muy bien. 31 00:01:47,710 --> 00:01:50,360 Así que mi propia presentación será un poco más sobrio. 32 00:01:50,360 --> 00:01:54,380 No va a implicar mucho emocionante música de fondo. 33 00:01:54,380 --> 00:01:59,160 Pero como se vio en el video, R es una especie de un lenguaje de programación de propósito general. 34 00:01:59,160 --> 00:02:03,720 Pero fue creado mayormente para el trabajo estadístico. 35 00:02:03,720 --> 00:02:07,980 >> Así que ha sido diseñado para las estadísticas, para el análisis de datos, para la minería de datos. 36 00:02:07,980 --> 00:02:12,420 Y así se puede ver esto en una gran cantidad de las opciones de diseño que los fabricantes de R 37 00:02:12,420 --> 00:02:13,320 hecho. 38 00:02:13,320 --> 00:02:15,472 Está diseñado para gran parte, personas que no son 39 00:02:15,472 --> 00:02:17,930 expertos en programación, que se acaba de recoger la programación 40 00:02:17,930 --> 00:02:23,460 en el lado para que puedan hacer su trabajo en ciencias sociales o en las estadísticas 41 00:02:23,460 --> 00:02:25,440 o lo que sea. 42 00:02:25,440 --> 00:02:27,850 >> Tiene un montón de muy diferencias importantes de C. 43 00:02:27,850 --> 00:02:33,200 Pero la sintaxis y los paradigmas que utiliza son básicamente los mismos. 44 00:02:33,200 --> 00:02:36,830 Y usted debe sentirse bastante como en casa la derecha del palo. 45 00:02:36,830 --> 00:02:38,520 Es un lenguaje imperativo. 46 00:02:38,520 --> 00:02:40,260 >> No te preocupes demasiado por eso si usted no sabe el término. 47 00:02:40,260 --> 00:02:42,676 Pero hay una distinción entre imperativo, declarativa, 48 00:02:42,676 --> 00:02:43,810 y funcional. 49 00:02:43,810 --> 00:02:47,600 Imperativo sólo significa que hagas declaraciones que son básicamente los comandos. 50 00:02:47,600 --> 00:02:52,340 Y a continuación, el intérprete o el equipo les sigue uno por uno. 51 00:02:52,340 --> 00:02:56,630 Se tipos débiles, hay no hay declaraciones de tipo en R. 52 00:02:56,630 --> 00:02:59,130 >> Y luego las líneas entre los diferentes tipos 53 00:02:59,130 --> 00:03:03,920 son un poco más flojo que están en C, por ejemplo. 54 00:03:03,920 --> 00:03:06,450 Y como ya he dicho, hay muy amplias instalaciones 55 00:03:06,450 --> 00:03:15,610 para su representación gráfica, por estadística análisis, para la minería de datos. 56 00:03:15,610 --> 00:03:19,540 Ambos están integrados en el lenguaje y, como decía el video, 57 00:03:19,540 --> 00:03:23,680 miles de bibliotecas de terceros que usted puede descargar y utilizar de forma gratuita 58 00:03:23,680 --> 00:03:25,340 con condiciones de licencia muy sueltos. 59 00:03:25,340 --> 00:03:28,800 60 00:03:28,800 --> 00:03:31,500 >> Así que, en general, me gustaría recomendar que nos fijamos en estos dos libros 61 00:03:31,500 --> 00:03:34,610 si usted va a trabajar en R. Uno de ellos es el funcionario principiante de R 62 00:03:34,610 --> 00:03:35,110 guía. 63 00:03:35,110 --> 00:03:38,660 Ha mantenido por el desarrolladores principales de R. 64 00:03:38,660 --> 00:03:42,400 Puede descargarlo de nuevo, libre de cobrar y legalmente en ese vínculo existe. 65 00:03:42,400 --> 00:03:45,430 66 00:03:45,430 --> 00:03:49,869 Todas estas diapositivas se van a ir arriba en el Internet, en la página web CS50 67 00:03:49,869 --> 00:03:50,660 después de esto se hace. 68 00:03:50,660 --> 00:03:53,690 Así que no hay necesidad de copiar cosas abajo frenéticamente. 69 00:03:53,690 --> 00:03:56,800 >> El otro es un libro de texto de Cosma Shalizi, 70 00:03:56,800 --> 00:04:00,100 quien es un profesor de estadística en Carnegie Mellon, llamado Advanced Data 71 00:04:00,100 --> 00:04:02,160 Análisis de una Point of View Primaria. 72 00:04:02,160 --> 00:04:04,010 Esto no es principalmente un libro de R. 73 00:04:04,010 --> 00:04:07,130 Es un libro de estadística y es un libro de análisis de datos. 74 00:04:07,130 --> 00:04:11,990 Pero es muy accesible a las personas que tener un mínimo de conocimientos de estadísticas. 75 00:04:11,990 --> 00:04:13,750 >> Nunca he tomado un curso formal. 76 00:04:13,750 --> 00:04:17,269 Sólo sé partes y piezas de diversas disciplinas afines 77 00:04:17,269 --> 00:04:18,579 que he tomado cursos en. 78 00:04:18,579 --> 00:04:21,839 Y yo era capaz de entender perfectamente bien. 79 00:04:21,839 --> 00:04:25,630 >> Se dan todas las figuras en R. Se hacen en R 80 00:04:25,630 --> 00:04:30,280 y también tienen listados de código debajo de cada figura que te dicen 81 00:04:30,280 --> 00:04:33,270 cómo hacer que cada figura con el código R. 82 00:04:33,270 --> 00:04:37,400 Y eso es muy útil si usted está tratando de emular 83 00:04:37,400 --> 00:04:38,650 una figura que se ve en un libro. 84 00:04:38,650 --> 00:04:47,840 >> Y de nuevo descarga gratuita stat.cmu.edu/cshalizi/ Lo sentimos, 85 00:04:47,840 --> 00:04:50,230 que debe ser slash cshalizi tilde. 86 00:04:50,230 --> 00:04:53,150 Me aseguraré de que corregir eso cuando las diapositivas oficiales suben. 87 00:04:53,150 --> 00:04:57,000 / ADAfaEPoV que es sólo el acrónimo del título del libro. 88 00:04:57,000 --> 00:04:59,850 89 00:04:59,850 --> 00:05:02,500 >> Así que en general caveats-- R tiene un montón de posibilidades. 90 00:05:02,500 --> 00:05:05,331 Yo sólo voy a ser capaz de cubrir la superficie de un montón de cosas. 91 00:05:05,331 --> 00:05:08,580 También la primera parte del seminario va a ser algo así como un volcado de datos. 92 00:05:08,580 --> 00:05:11,437 Estoy bastante lo siento por eso. 93 00:05:11,437 --> 00:05:13,770 Básicamente, voy a presentarles a un montón de cosas 94 00:05:13,770 --> 00:05:15,350 la derecha del palo, va lo más rápido posible. 95 00:05:15,350 --> 00:05:17,058 Y entonces llegamos a la parte divertida, la cual es 96 00:05:17,058 --> 00:05:20,570 la demo donde te puedo mostrar todo que hemos hablado en la pantalla. 97 00:05:20,570 --> 00:05:23,321 Y se puede jugar por su cuenta. 98 00:05:23,321 --> 00:05:26,070 Así que ahí va a haber una gran cantidad de material técnico arrojado hasta aquí. 99 00:05:26,070 --> 00:05:28,060 No te preocupes por la copia de todo lo que hacia abajo. 100 00:05:28,060 --> 00:05:31,740 Debido A, puede obtener toda la cosas en el sitio web CS50 después. 101 00:05:31,740 --> 00:05:37,780 And B, no es realmente tan importante memorizar esto desde las diapositivas. 102 00:05:37,780 --> 00:05:40,462 Es más importante que usted consigue alguna facilidad intuitiva con ella 103 00:05:40,462 --> 00:05:44,220 y que viene de simplemente jugando. 104 00:05:44,220 --> 00:05:45,720 >> Así que ¿por qué utilizar R? 105 00:05:45,720 --> 00:05:49,440 Básicamente, si usted tiene un proyecto que implica la minería grandes conjuntos de datos, los datos 106 00:05:49,440 --> 00:05:52,664 visualización, debe utilizar R. Si usted es 107 00:05:52,664 --> 00:05:55,830 haciendo análisis estadísticos complicado, eso sería difícil en Excel, 108 00:05:55,830 --> 00:05:58,010 por ejemplo, sería También se good-- también 109 00:05:58,010 --> 00:06:00,506 si usted está haciendo estadística análisis que está automatizado. 110 00:06:00,506 --> 00:06:02,130 Digamos que usted está manteniendo un sitio web. 111 00:06:02,130 --> 00:06:06,320 Y desea leer el registro del servidor todos los días y compilar alguna lista, 112 00:06:06,320 --> 00:06:10,320 como los primeros países que sus usuarios están viniendo, 113 00:06:10,320 --> 00:06:15,100 algunas estadísticas resumidas sobre la duración que gastan en su sitio web o lo que sea. 114 00:06:15,100 --> 00:06:16,910 Y desea ejecutar esto todos los días. 115 00:06:16,910 --> 00:06:20,280 >> Ahora bien, si usted está haciendo esto en Excel, usted tendría que ir a su registro del servidor, 116 00:06:20,280 --> 00:06:23,490 importar que en un Hoja de cálculo de datos de Excel, 117 00:06:23,490 --> 00:06:24,910 ejecutar todos los análisis de forma manual. 118 00:06:24,910 --> 00:06:27,100 Con R, sólo puede escribir un script. 119 00:06:27,100 --> 00:06:29,520 Programarlo para que se ejecute cada día de su sistema operativo. 120 00:06:29,520 --> 00:06:33,657 Y entonces todas las noches a las 2:00 de la mañana, o cada vez que se programa para que se ejecute, 121 00:06:33,657 --> 00:06:35,990 que se verá a través de su el tráfico de Internet para ese día. 122 00:06:35,990 --> 00:06:39,010 Y luego al día siguiente, se le tener esta brillante, nuevo informe 123 00:06:39,010 --> 00:06:41,710 o lo que sea con toda la la información que solicitó. 124 00:06:41,710 --> 00:06:44,960 125 00:06:44,960 --> 00:06:50,217 >> Así que, básicamente R es para Cisco programación en comparación con el análisis de Cisco. 126 00:06:50,217 --> 00:06:51,050 Preliminar se hace. 127 00:06:51,050 --> 00:06:53,104 Vamos a entrar en las cosas reales. 128 00:06:53,104 --> 00:06:55,020 Así que hay tres reales tipos en el idioma. 129 00:06:55,020 --> 00:06:56,120 Hay tipo numérico. 130 00:06:56,120 --> 00:07:01,250 Hay una especie de diferencia entre enteros y puntos flotantes, 131 00:07:01,250 --> 00:07:02,769 pero no realmente. 132 00:07:02,769 --> 00:07:04,560 Hay un personaje escribir, que es cuerdas. 133 00:07:04,560 --> 00:07:07,100 Y hay una lógica escribir, que es Booleanos. 134 00:07:07,100 --> 00:07:11,080 >> Y usted puede convertir entre tipos el uso de estas funciones como numérico, 135 00:07:11,080 --> 00:07:15,220 como el carácter, como lógico. 136 00:07:15,220 --> 00:07:17,510 Si llama, por ejemplo, como numérico en una cadena, 137 00:07:17,510 --> 00:07:20,030 que tratará de leer esa cadena como un número, de la misma manera 138 00:07:20,030 --> 00:07:25,897 que a2i y scanf hacen, y C. Si se llama como numérico de verdadero o falso 139 00:07:25,897 --> 00:07:26,980 que convertirá a 1 o 0. 140 00:07:26,980 --> 00:07:29,110 Si llama como el personaje en todo lo que va a 141 00:07:29,110 --> 00:07:32,550 convertir eso en una representación de cadena. 142 00:07:32,550 --> 00:07:34,990 >> Y luego están los vectores y matrices. 143 00:07:34,990 --> 00:07:37,580 Así vectores son básicamente 1 arrays dimensionales. 144 00:07:37,580 --> 00:07:40,600 Son lo que llamamos matrices en C. Matrices, 2 matrices dimensionales. 145 00:07:40,600 --> 00:07:42,350 Y entonces mayor dimensionales que puedas 146 00:07:42,350 --> 00:07:48,560 tienen 3, 4, 5 dimensiones o lo que sea de valores numéricos, de cadenas, 147 00:07:48,560 --> 00:07:52,860 valores de lógicas. 148 00:07:52,860 --> 00:07:55,380 >> Usted también tiene listas que son una especie de matriz asociativa. 149 00:07:55,380 --> 00:07:57,390 Voy a entrar en eso un poco. 150 00:07:57,390 --> 00:07:59,390 Así que una cosa importante que los viajes de las personas en R 151 00:07:59,390 --> 00:08:01,470 es que no hay , tipos atómicos puros reales. 152 00:08:01,470 --> 00:08:05,870 No hay distinción real entre un número, como un valor numérico, 153 00:08:05,870 --> 00:08:07,920 y una lista de valores numéricos. 154 00:08:07,920 --> 00:08:12,370 Los valores numéricos son en realidad la mismo que los vectores de longitud 1. 155 00:08:12,370 --> 00:08:14,959 Y esto tiene un número de implicaciones importantes. 156 00:08:14,959 --> 00:08:17,500 Uno, que significa que usted puede hacer cosas muy fácilmente que involucran 157 00:08:17,500 --> 00:08:21,037 como la adición de un número a un vector. 158 00:08:21,037 --> 00:08:23,120 R será básicamente la figura lo que quiere decir con eso. 159 00:08:23,120 --> 00:08:24,610 Y voy a llegar a eso en un segundo. 160 00:08:24,610 --> 00:08:27,930 También significa que no hay manera para el tipo checker-- en la medida 161 00:08:27,930 --> 00:08:30,530 que algo así existe en R-- para contar 162 00:08:30,530 --> 00:08:33,780 cuando has pasado en el valor único cuando se espera un array o viceversa. 163 00:08:33,780 --> 00:08:39,159 Y eso puede causar alguna extraña problemas que me encontré cuando 164 00:08:39,159 --> 00:08:42,252 Yo estaba usando R durante mi trabajo de verano. 165 00:08:42,252 --> 00:08:43,710 Y no hay arreglos de tipo mixto. 166 00:08:43,710 --> 00:08:46,543 Así que no se puede tener una matriz fuera el primeros elementos es, no sé, 167 00:08:46,543 --> 00:08:49,332 la cadena "John" y el segundo elemento es el número 42. 168 00:08:49,332 --> 00:08:52,540 Si usted trata de hacer eso, entonces obtendrá todo sólo convierte en una cadena. 169 00:08:52,540 --> 00:08:54,760 Así que tenemos cuerda Juan, cadena 42. 170 00:08:54,760 --> 00:08:58,250 171 00:08:58,250 --> 00:09:02,025 >> Sintáctica tan inusuales rasgos señalados- más de R sintaxis es muy similar a C. 172 00:09:02,025 --> 00:09:04,690 Hay algunas diferencias importantes. 173 00:09:04,690 --> 00:09:05,620 Escribir es muy débil. 174 00:09:05,620 --> 00:09:07,360 Así que no hay declaraciones de variables. 175 00:09:07,360 --> 00:09:12,670 Asignación utiliza la extraña operador de error de menos de guión. 176 00:09:12,670 --> 00:09:15,340 Los comentarios son la almohadilla. 177 00:09:15,340 --> 00:09:19,230 Supongo que ahora día lo llamamos hashtag aunque eso no es realmente no accurate-- 178 00:09:19,230 --> 00:09:21,810 la doble barra. 179 00:09:21,810 --> 00:09:24,710 >> Residuos modulares son con %% signos. 180 00:09:24,710 --> 00:09:30,172 La división entera está con% /% que es muy difícil de leer cuando se proyecta 181 00:09:30,172 --> 00:09:30,880 en la pantalla. 182 00:09:30,880 --> 00:09:34,150 183 00:09:34,150 --> 00:09:37,200 Usted puede obtener rangos de enteros con el colon. 184 00:09:37,200 --> 00:09:41,840 Así 2,5 le dará un vector de todos los números 2 a 5. 185 00:09:41,840 --> 00:09:44,530 >> Las matrices están indexados de una sola, que se atornilla a mucha gente 186 00:09:44,530 --> 00:09:47,540 hasta si son de más lenguajes de programación típicos, 187 00:09:47,540 --> 00:09:50,450 como C, donde la mayor parte las cosas son cero-indexada. 188 00:09:50,450 --> 00:09:54,420 Una vez más, aquí es donde la herencia de R como un lenguaje para como no 189 00:09:54,420 --> 00:09:56,560 programadores profesionales provienen en. 190 00:09:56,560 --> 00:09:59,680 Si usted es un sociólogo o un economista o algo 191 00:09:59,680 --> 00:10:01,980 y que está tratando de usar R básicamente como un complemento 192 00:10:01,980 --> 00:10:03,832 a su más importante trabajo profesional, 193 00:10:03,832 --> 00:10:06,040 vas a encontrar un indexar un poco más natural. 194 00:10:06,040 --> 00:10:09,890 Debido a empezar a contar a 1 en la vida cotidiana, no 0. 195 00:10:09,890 --> 00:10:13,260 >> Para-bucles, esto es similar a el foreach construir en PHP, 196 00:10:13,260 --> 00:10:17,090 que usted conseguirá aprender en-- muy pronto. 197 00:10:17,090 --> 00:10:22,540 ¿Qué es para el valor en el vector y entonces usted puede hacer las cosas con valor. 198 00:10:22,540 --> 00:10:24,040 AUDIENCIA: Eso viene en conferencia. 199 00:10:24,040 --> 00:10:26,248 CONNOR HARRIS: Oh, eso es llegar a la conferencia, excelente. 200 00:10:26,248 --> 00:10:29,815 AUDIENCIA: La misión, ¿es supone que señalar de derecha a izquierda? 201 00:10:29,815 --> 00:10:31,440 CONNOR HARRIS: De derecha a izquierda, sí. 202 00:10:31,440 --> 00:10:34,720 Usted puede pensar en él como el valor en la derecha empujado en la variable 203 00:10:34,720 --> 00:10:36,240 a la izquierda. 204 00:10:36,240 --> 00:10:36,781 AUDIENCIA: OK. 205 00:10:36,781 --> 00:10:39,770 206 00:10:39,770 --> 00:10:42,330 >> CONNOR HARRIS: Y por último sintaxis de la función es un poco extraño. 207 00:10:42,330 --> 00:10:48,460 Usted tiene el nombre de la función foo, asignado a esta función de palabras clave, seguido 208 00:10:48,460 --> 00:10:51,530 por todos los argumentos y luego el cuerpo de la función después de eso. 209 00:10:51,530 --> 00:10:53,280 Una vez más estas cosas pueden parecer un poco extraño. 210 00:10:53,280 --> 00:10:57,181 Ellos se convierten en segunda naturaleza después se trabaja con la lengua un poco. 211 00:10:57,181 --> 00:10:58,930 Así vectores, el camino que la construcción de un vector 212 00:10:58,930 --> 00:11:04,550 es que el tipo C, que es una palabra clave, a continuación, todos los números que desea o cadenas 213 00:11:04,550 --> 00:11:06,490 o lo que sea. 214 00:11:06,490 --> 00:11:07,995 Argumentos también ser vectores. 215 00:11:07,995 --> 00:11:09,620 Pero la matriz resultante se aplana. 216 00:11:09,620 --> 00:11:14,385 Así que no se puede tener matrices donde algunos elementos son números individuales 217 00:11:14,385 --> 00:11:17,010 y algunos elementos son propios arreglos. 218 00:11:17,010 --> 00:11:20,010 >> Así que si usted trata de construir un matriz fuera el primer elemento es 4 219 00:11:20,010 --> 00:11:22,370 y el segundo elemento es el 3,5 matriz que va a 220 00:11:22,370 --> 00:11:25,890 acaba de obtener una matriz de tres elementos, 4,3,5. 221 00:11:25,890 --> 00:11:27,760 No pueden ser de tipo mixto. 222 00:11:27,760 --> 00:11:32,290 Si intenta leer o escribir fuera de los límites de un vector 223 00:11:32,290 --> 00:11:36,640 obtendrá este valor llamado NA que significa un valor perdido. 224 00:11:36,640 --> 00:11:39,900 Y esto está destinado a como estadísticos que 225 00:11:39,900 --> 00:11:43,080 están trabajando con conjuntos de datos incompletos. 226 00:11:43,080 --> 00:11:46,460 >> Si se aplica una función que se supone a tomar sólo un número a una matriz 227 00:11:46,460 --> 00:11:49,220 a continuación, lo que se obtiene es, la función asignará sobre la matriz. 228 00:11:49,220 --> 00:11:52,130 Así que si su función digamos que toma un número y devuelve cuadrados. 229 00:11:52,130 --> 00:11:58,170 Usted solicita que a la matriz 2,3,5 Lo que recibirá es la matriz 4,9,25. 230 00:11:58,170 --> 00:12:00,010 >> Y eso es muy útil porque le significa 231 00:12:00,010 --> 00:12:03,374 no tiene que escribir para bucles para hacer las cosas muy simples, como la aplicación de 232 00:12:03,374 --> 00:12:05,040 una función para todos los miembros de un conjunto de datos. 233 00:12:05,040 --> 00:12:08,557 ¿Qué si usted está trabajando con un gran conjuntos de datos, usted tiene que hacer mucho. 234 00:12:08,557 --> 00:12:10,390 Funciones binarias son entrada aplicada por la entrada. 235 00:12:10,390 --> 00:12:12,430 Voy a entrar en eso. 236 00:12:12,430 --> 00:12:16,750 Usted puede acceder a ellos con matrices o vectores con corchetes. 237 00:12:16,750 --> 00:12:22,300 Soportes Así nombre del vector cuadrados 1 le dará el primer elemento. 238 00:12:22,300 --> 00:12:25,510 Nombre Vector corchetes 2 le dará el segundo elemento. 239 00:12:25,510 --> 00:12:27,530 >> Puede pasar de un vector de índices y usted 240 00:12:27,530 --> 00:12:29,640 volver a salir, básicamente, un factor secundario. 241 00:12:29,640 --> 00:12:34,990 Así que usted puede hacer vectorial soportes Nombre C, 2,4 y obtendrá un vector que contiene 242 00:12:34,990 --> 00:12:38,804 el segundo y cuarto elementos de la matriz. 243 00:12:38,804 --> 00:12:40,720 Y si quieres sólo un Resumen estadístico rápida 244 00:12:40,720 --> 00:12:47,529 de un vector como intercuartil rango, mediana, máximo, lo que sea, 245 00:12:47,529 --> 00:12:49,820 puede teclear Resumen nombre del vector y sacar eso. 246 00:12:49,820 --> 00:12:52,680 Eso no es realmente útil en programación, pero si estás jugando 247 00:12:52,680 --> 00:12:55,990 alrededor de los conjuntos de datos, es muy útil. 248 00:12:55,990 --> 00:12:58,650 >> Matrices-- básicamente matrices de dimensiones superiores. 249 00:12:58,650 --> 00:13:01,190 Tienen esta sintaxis especial notación. 250 00:13:01,190 --> 00:13:07,620 Matriz con una matriz que obtiene lleno en-- siento, matriz con los datos, 251 00:13:07,620 --> 00:13:09,780 número de filas, el número de columnas. 252 00:13:09,780 --> 00:13:13,180 Cuando usted tiene algunos datos, rellena la matriz básicamente va de arriba a abajo 253 00:13:13,180 --> 00:13:13,380 primero. 254 00:13:13,380 --> 00:13:14,190 Luego de izquierda a derecha. 255 00:13:14,190 --> 00:13:15,030 Así, así. 256 00:13:15,030 --> 00:13:17,809 257 00:13:17,809 --> 00:13:19,600 Y R ha construido en multiplicaciones de matrices, 258 00:13:19,600 --> 00:13:24,310 descomposición espectral, diagonalización, un montón de cosas. 259 00:13:24,310 --> 00:13:27,785 Si desea mayor dimensión arrays, por lo 3, 4, 5, 260 00:13:27,785 --> 00:13:29,410 o lo que sea dimensiones se puede hacer eso. 261 00:13:29,410 --> 00:13:34,400 La sintaxis es la matriz es igual a c tenue, a continuación, la lista de las dimensiones. 262 00:13:34,400 --> 00:13:38,620 Así que si quieres una matriz tridimensional 4 con dimensiones de 4, 7, 8, 9, la matriz, 263 00:13:38,620 --> 00:13:45,470 tenue es igual a c (4,7,8,9). 264 00:13:45,470 --> 00:13:51,180 >> Para acceder a los valores individuales con los soportes primera coma entrada segunda entrada. 265 00:13:51,180 --> 00:13:54,870 Usted puede obtener rebanadas enteras de filas o columnas. 266 00:13:54,870 --> 00:13:59,900 Con esta sintaxis es incompleta simplemente remar número de coma o columna de coma 267 00:13:59,900 --> 00:14:00,400 número. 268 00:14:00,400 --> 00:14:02,874 269 00:14:02,874 --> 00:14:04,540 Así que las listas son una especie de matriz asociada. 270 00:14:04,540 --> 00:14:06,360 Ellos tienen su propia sintaxis aquí. 271 00:14:06,360 --> 00:14:08,320 Una vez más no hacer frenéticamente copiar todo esto. 272 00:14:08,320 --> 00:14:11,370 Esto es sólo para que la gente pasando por los toboganes más tarde 273 00:14:11,370 --> 00:14:13,089 tener todo esto en una buena referencia. 274 00:14:13,089 --> 00:14:16,130 Y esto se convertirá en una vez muy natural De hecho, me paseo por las demos. 275 00:14:16,130 --> 00:14:19,295 276 00:14:19,295 --> 00:14:20,920 Así enumera una arrays básicamente asociados. 277 00:14:20,920 --> 00:14:27,040 Se puede acceder a los valores con nombre de la lista, muestra de dólar, clave. 278 00:14:27,040 --> 00:14:31,370 Así que si su lista es el nombre foo, entonces usted puede acceder a ella de esa manera. 279 00:14:31,370 --> 00:14:37,032 Usted puede obtener un par clave-valor entero pasando en el índice entre corchetes. 280 00:14:37,032 --> 00:14:39,240 Si se lee desde una inexistente clave, obtendrá nula. 281 00:14:39,240 --> 00:14:41,150 No será error. 282 00:14:41,150 --> 00:14:43,590 La cosa es, R hará lo que tanto con nula, ya que puede. 283 00:14:43,590 --> 00:14:46,580 Y esto puede significar que si estás no esperando recibir nula fuera 284 00:14:46,580 --> 00:14:51,840 de alguna lista de lectura, obtendrá alguna errores impredecibles más abajo 285 00:14:51,840 --> 00:14:52,620 la línea. 286 00:14:52,620 --> 00:14:54,890 >> Esto me sucedió a mi cuando trabajo de verano que estaba usando R 287 00:14:54,890 --> 00:14:58,410 donde he cambiado la forma de un cierto lista se definió en un solo lugar 288 00:14:58,410 --> 00:15:05,410 pero no cambió más tarde en el código que lee los valores de la misma. 289 00:15:05,410 --> 00:15:10,190 Y así, lo que pasó fue que estaba leer valores nulos fuera de esta lista, 290 00:15:10,190 --> 00:15:13,090 pasarlos en funciones, y siendo muy confusa 291 00:15:13,090 --> 00:15:16,000 cuando me dieron toda clase de infinitos aleatorios apareciendo 292 00:15:16,000 --> 00:15:16,790 en esta función. 293 00:15:16,790 --> 00:15:20,730 Porque si se aplica cierto máximo o funciones mínimas en NULL, 294 00:15:20,730 --> 00:15:22,570 obtendrá valores infinitos a cabo. 295 00:15:22,570 --> 00:15:26,400 296 00:15:26,400 --> 00:15:29,180 >> Las tramas de datos, son una subclase de lista. 297 00:15:29,180 --> 00:15:31,170 Cada valor es un vector de la misma longitud. 298 00:15:31,170 --> 00:15:34,220 Y se usan para la presentación, básicamente, tablas de datos. 299 00:15:34,220 --> 00:15:36,175 Hay esta sintaxis de inicialización. 300 00:15:36,175 --> 00:15:38,800 Esto todo, una vez más, ser mucho más clara cuando se llega a la demo. 301 00:15:38,800 --> 00:15:42,240 302 00:15:42,240 --> 00:15:44,240 Y lo bueno de tramas de datos es que se 303 00:15:44,240 --> 00:15:49,380 puede dar nombres a todas las columnas y los nombres de todas las filas. 304 00:15:49,380 --> 00:15:53,890 Y por lo que hace el acceso ellos un poco más amable. 305 00:15:53,890 --> 00:15:59,130 También esta es la forma en la mayoría de las funciones que leer datos de hojas de cálculo de Excel 306 00:15:59,130 --> 00:16:03,820 o desde archivos de texto, por ejemplo, leerá en sus datos. 307 00:16:03,820 --> 00:16:07,555 Ellos ponen en algún tipo de trama de datos. 308 00:16:07,555 --> 00:16:09,680 Así functions-- las funciones la sintaxis es un poco raro. 309 00:16:09,680 --> 00:16:16,160 Una vez más es el nombre de la función, ceder, esta función de palabras clave y luego 310 00:16:16,160 --> 00:16:17,900 la lista de argumentos. 311 00:16:17,900 --> 00:16:24,080 Así que hay algunas cosas buenas acerca de cómo las funciones trabajan aquí. 312 00:16:24,080 --> 00:16:28,170 Por un lado, en realidad se puede asignar valores por defecto a ciertos argumentos. 313 00:16:28,170 --> 00:16:32,910 Así que se puede decir R1 equals-- se puede decir foo 314 00:16:32,910 --> 00:16:38,290 es una función en la que R1 es igual a algo por defecto si el usuario especifica 315 00:16:38,290 --> 00:16:39,090 sin argumentos. 316 00:16:39,090 --> 00:16:41,932 De lo contrario, es lo que él puso en. 317 00:16:41,932 --> 00:16:44,140 Y esto es muy práctico porque muchas de nuestras funciones 318 00:16:44,140 --> 00:16:47,910 tienen a menudo decenas o cientos de argumentos. 319 00:16:47,910 --> 00:16:51,210 Por ejemplo los que para el trazado gráficos o trazado gráficos de dispersión 320 00:16:51,210 --> 00:16:54,430 tener argumentos que controlan todo, desde el título y el eje 321 00:16:54,430 --> 00:16:59,512 etiquetas al color de las líneas de regresión. 322 00:16:59,512 --> 00:17:01,470 Y por lo que si usted no quiere para que la gente especifican 323 00:17:01,470 --> 00:17:04,050 todos y cada uno de ellos cientos de argumentos 324 00:17:04,050 --> 00:17:07,674 controlar todos los aspectos de una parcela o una regresión o lo que sea, 325 00:17:07,674 --> 00:17:09,299 es bueno tener estos valores predeterminados. 326 00:17:09,299 --> 00:17:12,700 327 00:17:12,700 --> 00:17:19,146 >> Y entonces usted puede realmente escribir lo que vio de nuevo aquí. 328 00:17:19,146 --> 00:17:22,869 O encontrar un mejor ejemplo. 329 00:17:22,869 --> 00:17:28,690 Cuando se llama a funciones en realidad se puede llamarlos utilizando los nombres de argumentos. 330 00:17:28,690 --> 00:17:33,919 Así que aquí está un ejemplo de el constructor matriz. 331 00:17:33,919 --> 00:17:34,960 Toma tres argumentos. 332 00:17:34,960 --> 00:17:36,760 Por lo general, tiene datos, que es un vector. 333 00:17:36,760 --> 00:17:38,920 Usted tiene N filas, que es el número de filas. 334 00:17:38,920 --> 00:17:41,160 Tienes N cols-- número de columnas. 335 00:17:41,160 --> 00:17:43,920 La cosa es que si escribe Fila N es igual a lo que sea 336 00:17:43,920 --> 00:17:46,520 y N es igual a cualquier col cuando que está llamando a esta función, 337 00:17:46,520 --> 00:17:47,770 en realidad se puede revertir ellos. 338 00:17:47,770 --> 00:17:51,590 Así que usted puede poner primero y la fila N N col segundo y que le hará ninguna diferencia. 339 00:17:51,590 --> 00:17:54,660 Así que esa es una característica poco agradable. 340 00:17:54,660 --> 00:17:56,260 >> Hizo importación y exportación. 341 00:17:56,260 --> 00:18:00,010 Esto se puede hacer, básicamente. 342 00:18:00,010 --> 00:18:03,816 También hay instalaciones para escribir arbitraria R se opone a un archivo binario 343 00:18:03,816 --> 00:18:05,190 y luego leer de nuevo más tarde. 344 00:18:05,190 --> 00:18:08,030 Lo cual es muy útil si usted está haciendo una gran sesión de R interactivo 345 00:18:08,030 --> 00:18:12,850 y lo que necesita para salvar cosas muy rápidamente. 346 00:18:12,850 --> 00:18:16,460 Por defecto R tiene un directorio de trabajo que los archivos se escriben en 347 00:18:16,460 --> 00:18:19,410 y leer de nuevo desde. 348 00:18:19,410 --> 00:18:22,350 Se puede ver que con getwg, cambiarlo con setdw. 349 00:18:22,350 --> 00:18:25,630 Nada especialmente interesante aquí 350 00:18:25,630 --> 00:18:28,270 >> Así que ahora las estadísticas reales stuff-- regresión multilineal. 351 00:18:28,270 --> 00:18:30,960 352 00:18:30,960 --> 00:18:34,910 Así la sintaxis habitual es un poco complicado. 353 00:18:34,910 --> 00:18:37,260 El modelo es un gran objeto, básicamente. 354 00:18:37,260 --> 00:18:39,910 Se le asigna a LM, que es una llamada a la función. 355 00:18:39,910 --> 00:18:43,840 El primer elemento, la Y x1 tilde, más lo que sea. 356 00:18:43,840 --> 00:18:46,574 357 00:18:46,574 --> 00:18:47,990 Mi sintaxis aquí es un poco confuso. 358 00:18:47,990 --> 00:18:49,490 Estoy muy triste, este es la forma estándar 359 00:18:49,490 --> 00:18:50,990 que los libros de ciencias de la computación hacen esto. 360 00:18:50,990 --> 00:18:54,890 Pero es un poco raro. 361 00:18:54,890 --> 00:18:58,200 >> Así que, básicamente, es lm paréntesis, primer punto 362 00:18:58,200 --> 00:19:06,730 se variable-- siento, dependiente x1 tilde variable más x2 plus 363 00:19:06,730 --> 00:19:10,910 sin embargo muchos independientes las variables que tiene. 364 00:19:10,910 --> 00:19:14,240 Y entonces estos pueden ser tanto vectores, todos la misma longitud. 365 00:19:14,240 --> 00:19:16,220 O pueden ser la columna cabeceras en una trama de datos 366 00:19:16,220 --> 00:19:18,553 que acaba de especificar en el segunda trama de datos argumento. 367 00:19:18,553 --> 00:19:23,270 368 00:19:23,270 --> 00:19:26,380 >> También puede especificar una fórmula más compleja 369 00:19:26,380 --> 00:19:31,990 por lo que no tiene que linealmente regresión una variable dependiente, 370 00:19:31,990 --> 00:19:34,440 o un vector en un vector preexistente. 371 00:19:34,440 --> 00:19:38,070 Usted puede hacer, por ejemplo, un componente de vector y al cuadrado más 1 372 00:19:38,070 --> 00:19:42,100 y que en contra de la regresión log de algún otro vector. 373 00:19:42,100 --> 00:19:45,200 Puede imprimir resúmenes de la modelo con este comando llamado 374 00:19:45,200 --> 00:19:48,607 summary-- simplemente Resumen parens modelo. 375 00:19:48,607 --> 00:19:50,190 De nuevo otra cosa debo aclarar. 376 00:19:50,190 --> 00:19:55,407 377 00:19:55,407 --> 00:19:58,615 Otra cosa que logrará corregida cuando las diapositivas suben en Internet. 378 00:19:58,615 --> 00:20:01,127 379 00:20:01,127 --> 00:20:03,210 Si lo que desea es calcular una correlación simple 380 00:20:03,210 --> 00:20:09,170 puede utilizar la correlación vectorial 1 2 vectorial función básica. 381 00:20:09,170 --> 00:20:11,856 Método por defecto Correlaciones de Pearson. 382 00:20:11,856 --> 00:20:13,480 Esos son los estándares que usted puede hacer. 383 00:20:13,480 --> 00:20:15,990 Hay también Spearman y Correlaciones Kendell 384 00:20:15,990 --> 00:20:19,530 que son algunos variedad de correlación orden de rango. 385 00:20:19,530 --> 00:20:23,600 Bueno, ellos no calculan producto momentos entre los propios vectores, 386 00:20:23,600 --> 00:20:28,511 sino de órdenes de rango del vector. 387 00:20:28,511 --> 00:20:29,510 Voy a explicar esto más adelante. 388 00:20:29,510 --> 00:20:30,120 >> AUDIENCIA: Una pregunta rápida 389 00:20:30,120 --> 00:20:30,360 >> CONNER HARRIS: Claro. 390 00:20:30,360 --> 00:20:33,151 >> AUDIENCIA: Así que cuando usted está calculando para las correlaciones simples hacen 391 00:20:33,151 --> 00:20:37,655 usted asume que hay una estadística importancia para la correlación? 392 00:20:37,655 --> 00:20:39,030 CONNER HARRIS: Usted no tiene que hacerlo. 393 00:20:39,030 --> 00:20:41,840 394 00:20:41,840 --> 00:20:43,960 Una película es básicamente una máquina. 395 00:20:43,960 --> 00:20:47,690 Tomará en dos cosas y va a escupir 396 00:20:47,690 --> 00:20:49,770 coeficientes para la línea de mejor ajuste. 397 00:20:49,770 --> 00:20:52,310 También informa estándar errores en los coeficientes. 398 00:20:52,310 --> 00:20:55,865 Y le dirá, como es el intercepción estadísticamente significativa 399 00:20:55,865 --> 00:20:56,740 o diferencia de 0. 400 00:20:56,740 --> 00:20:59,400 Es la pendiente de la mejor ajuste de línea estadísticamente 401 00:20:59,400 --> 00:21:01,510 diferente de cero, etcétera. 402 00:21:01,510 --> 00:21:06,260 Por lo tanto, asume nada, creo que es la mejor respuesta a su pregunta. 403 00:21:06,260 --> 00:21:07,410 OKAY. 404 00:21:07,410 --> 00:21:14,650 >> Plotting-- por lo que la razón principal que debiera utilizar R, como la regresión multilineal. 405 00:21:14,650 --> 00:21:17,320 Básicamente todos los idiomas tiene alguna facilidad para eso. 406 00:21:17,320 --> 00:21:21,365 Y honestamente sintaxis de R como regresión es un poco misterioso. 407 00:21:21,365 --> 00:21:22,990 Pero trazado es donde realmente brilla. 408 00:21:22,990 --> 00:21:28,090 >> La función caballo de batalla es trama y toma dos vectores, x e y. 409 00:21:28,090 --> 00:21:33,010 Y luego las elipses se destaca por una muy gran número de argumentos opcionales que 410 00:21:33,010 --> 00:21:39,190 controlar todo, desde títulos de colores de varias líneas o varios puntos, 411 00:21:39,190 --> 00:21:40,200 con el tipo de trama. 412 00:21:40,200 --> 00:21:42,250 Usted puede tener la dispersión parcelas o gráficos de líneas. 413 00:21:42,250 --> 00:21:47,900 414 00:21:47,900 --> 00:21:49,710 >> [Inaudible] 2 vectores de la misma longitud. 415 00:21:49,710 --> 00:21:53,780 Puede preceder a esto con adjuntar trama de datos en el script. 416 00:21:53,780 --> 00:22:01,220 Y esto le permitirá sólo tiene que utilizar la columna cabeceras en lugar de vectores separados. 417 00:22:01,220 --> 00:22:05,410 Puede agregar rectas más ajustadas y locales curvas de regresión a su gráfico. 418 00:22:05,410 --> 00:22:09,390 >> Estos comandos enumeran aquí, ab líneas y líneas, 419 00:22:09,390 --> 00:22:11,640 por defecto éstos reciben escrita en ventanas emergentes 420 00:22:11,640 --> 00:22:15,560 porque se supone que está utilizando R interactiva. 421 00:22:15,560 --> 00:22:17,310 Si usted no es que pueda escribir dos archivos que 422 00:22:17,310 --> 00:22:21,600 son en realidad cualquier formato que quieras. 423 00:22:21,600 --> 00:22:25,410 Lo siento, tengo una errata me acabo de dar cuenta. 424 00:22:25,410 --> 00:22:30,887 425 00:22:30,887 --> 00:22:32,720 Si desea abrir otro dispositivo gráfica 426 00:22:32,720 --> 00:22:39,200 puede utilizar esta función llamada PNG o JPEG o muchos otros formatos de imagen. 427 00:22:39,200 --> 00:22:42,319 Y usted puede escribir a los gráficos cualquiera que sea el nombre de archivo que especifique. 428 00:22:42,319 --> 00:22:45,110 Para cancelar la que usted tiene que servicio- Yo no escribí esto en el slide-- 429 00:22:45,110 --> 00:22:49,650 pero hay una función llamada dev punto de que no tiene argumentos. 430 00:22:49,650 --> 00:22:51,517 >> Luego están las instalaciones para el trazado 3D 431 00:22:51,517 --> 00:22:53,350 y para el contorno de trazado si usted quiere hacer 432 00:22:53,350 --> 00:22:55,700 gráficas de dos variables independientes. 433 00:22:55,700 --> 00:22:57,150 No voy a entrar en esto en este momento. 434 00:22:57,150 --> 00:22:59,130 >> Hay también algunos son instalaciones para la animación 435 00:22:59,130 --> 00:23:01,300 esos son generalmente mantenidos por terceros. 436 00:23:01,300 --> 00:23:06,330 He hecho animaciones con gráficos de R, pero no he utilizado estos terceros 437 00:23:06,330 --> 00:23:06,940 bibliotecas. 438 00:23:06,940 --> 00:23:09,929 Así que no puedo dar fe de lo buenos que son. 439 00:23:09,929 --> 00:23:12,220 Lo que yo recomiendo que si quieres para hacer animaciones utilizando R 440 00:23:12,220 --> 00:23:16,480 es que usted puede escribir a cabo todos los marcos para las animaciones 441 00:23:16,480 --> 00:23:18,470 y entonces usted puede utilizar un tercero program-- partido 442 00:23:18,470 --> 00:23:23,630 los típicos se llaman FFmpeg o ImageMagick-- a la puntada 443 00:23:23,630 --> 00:23:26,540 todos sus cuadros en una sola animación. 444 00:23:26,540 --> 00:23:28,380 >> Así que el tiempo para la demostración. 445 00:23:28,380 --> 00:23:31,030 446 00:23:31,030 --> 00:23:37,189 Así que si usted está usando cualquier Unix como sistema que es Linux BSD, pero que utiliza BSD. 447 00:23:37,189 --> 00:23:39,730 OS X abrir una ventana de terminal y tipo R en el símbolo del sistema. 448 00:23:39,730 --> 00:23:42,820 Si usted tiene R estudio o similares, que también funciona. 449 00:23:42,820 --> 00:23:46,270 Para los usuarios de Windows que debe ser capaz de encontrar R en el menú Inicio. 450 00:23:46,270 --> 00:23:50,390 Debería llamarse algo como R x64 3 puntos lo que sea. 451 00:23:50,390 --> 00:23:53,110 Abra que hasta allí. 452 00:23:53,110 --> 00:23:58,850 >> Así que ahora permítanme abrir una ventana de terminal. 453 00:23:58,850 --> 00:24:02,562 Muy bien, la búsqueda. 454 00:24:02,562 --> 00:24:03,520 AUDIENCIA: Comando Espacial 455 00:24:03,520 --> 00:24:06,675 CONNER HARRIS: Comando Espacial, gracias. 456 00:24:06,675 --> 00:24:10,030 No utilizo normalmente Macs. 457 00:24:10,030 --> 00:24:13,310 Terminal, muestran una nueva ventana. 458 00:24:13,310 --> 00:24:18,120 Nueva ventana es la configuración básico, R. Así que usted debe recibir 459 00:24:18,120 --> 00:24:22,230 un mensaje de bienvenida, algo como esto. 460 00:24:22,230 --> 00:24:31,060 >> Así que estoy usando R interactiva. 461 00:24:31,060 --> 00:24:32,719 También puede escribir scripts R por supuesto. 462 00:24:32,719 --> 00:24:34,510 Básicamente los scripts se ejecutan de la misma manera como 463 00:24:34,510 --> 00:24:40,250 si estuviera sentado frente a la computadora escribiendo en cada línea de una en una. 464 00:24:40,250 --> 00:24:42,660 Así que vamos a empezar por hacer un vector. 465 00:24:42,660 --> 00:24:46,230 Una flecha C 1, 2. 466 00:24:46,230 --> 00:24:49,400 1, 2, 4. 467 00:24:49,400 --> 00:24:50,050 Claro. 468 00:24:50,050 --> 00:24:51,630 Puedo hacer que el tamaño de la fuente más grande. 469 00:24:51,630 --> 00:24:53,030 >> AUDIENCIA: Comando-Plus 470 00:24:53,030 --> 00:24:53,650 >> CONNER HARRIS: Comando-Plus. 471 00:24:53,650 --> 00:24:54,191 Comando-Plus. 472 00:24:54,191 --> 00:24:57,610 473 00:24:57,610 --> 00:25:00,370 Muy bien, ¿cómo es eso? 474 00:25:00,370 --> 00:25:00,870 ¿Bien? 475 00:25:00,870 --> 00:25:01,551 OKAY. 476 00:25:01,551 --> 00:25:03,300 Así que vamos a empezar por declarar una lista de vectores. 477 00:25:03,300 --> 00:25:08,710 Hacer un, flecha, C 1,2,4. 478 00:25:08,710 --> 00:25:11,181 Podemos ver a. 479 00:25:11,181 --> 00:25:12,680 No te preocupes por el soporte de allí. 480 00:25:12,680 --> 00:25:18,590 Los paréntesis son así que si usted imprimir matrices muy largas, podemos dónde se encuentre. 481 00:25:18,590 --> 00:25:26,987 Un ejemplo sería si yo sólo quiero rango 2-200. 482 00:25:26,987 --> 00:25:28,820 Si imprimí un larga serie, los soportes 483 00:25:28,820 --> 00:25:31,060 son sólo para que yo pueda mantener un registro de qué índice 484 00:25:31,060 --> 00:25:33,250 estamos en si estoy buscando a través de este visualmente. 485 00:25:33,250 --> 00:25:36,570 486 00:25:36,570 --> 00:25:38,280 Así que de todos modos, tenemos una. 487 00:25:38,280 --> 00:25:43,326 >> Así que le dije antes de que las matrices de interacción muy bien con, por ejemplo, 488 00:25:43,326 --> 00:25:44,450 operaciones unarios les gusta esto. 489 00:25:44,450 --> 00:25:46,500 Entonces, ¿qué crees que voy a conseguir si introduzco una más 1? 490 00:25:46,500 --> 00:25:49,630 491 00:25:49,630 --> 00:25:51,140 Sí. 492 00:25:51,140 --> 00:25:54,250 Bien, ahora voy a hacer esta matriz diferente. 493 00:25:54,250 --> 00:26:01,650 Digamos b c 20,40, 80. 494 00:26:01,650 --> 00:26:03,400 Entonces, qué piensas este comando hará? 495 00:26:03,400 --> 00:26:09,962 496 00:26:09,962 --> 00:26:10,670 Añadir los elementos. 497 00:26:10,670 --> 00:26:14,950 Y así que básicamente eso es lo que hace. 498 00:26:14,950 --> 00:26:16,740 Así que esto es bastante conveniente. 499 00:26:16,740 --> 00:26:23,800 Así que ¿qué hago esto. do es, digamos, 6 veces 1 al 10. 500 00:26:23,800 --> 00:26:26,789 501 00:26:26,789 --> 00:26:28,830 Entonces, ¿qué es lo que quiero ver contenida, qué te parece? 502 00:26:28,830 --> 00:26:37,110 503 00:26:37,110 --> 00:26:38,110 Así que todos los múltiplos de seis. 504 00:26:38,110 --> 00:26:42,170 Ahora, ¿qué te parece pasará si hago esto? 505 00:26:42,170 --> 00:26:48,090 Voy a hacer esto un poco más claro, c, c. 506 00:26:48,090 --> 00:26:50,365 Entonces, ¿qué pasa, ¿verdad pensar, si hago esto? 507 00:26:50,365 --> 00:26:51,488 un plus c. 508 00:26:51,488 --> 00:26:55,550 509 00:26:55,550 --> 00:26:56,050 [INAUDIBLE] 510 00:26:56,050 --> 00:26:58,552 511 00:26:58,552 --> 00:27:02,350 >> AUDIENCIA: Cualquiera de un error o sólo se suma los tres primeros elementos. 512 00:27:02,350 --> 00:27:04,510 >> CONNER HARRIS: No del todo. 513 00:27:04,510 --> 00:27:05,522 Esto es lo que nos dieron. 514 00:27:05,522 --> 00:27:08,910 Lo que pasa es uno más corto matriz, una, consiguió un ciclo. 515 00:27:08,910 --> 00:27:13,990 Así que nos dieron 124, 124, 124. 516 00:27:13,990 --> 00:27:15,710 Sí. 517 00:27:15,710 --> 00:27:18,940 Y en el fondo, usted puede ver este comportamiento antes, un plus 1, 518 00:27:18,940 --> 00:27:22,190 como una subclase de este comportamiento, donde la matriz más corta es sólo el número 519 00:27:22,190 --> 00:27:25,410 1, que es una matriz de un elemento. 520 00:27:25,410 --> 00:27:27,740 Acabo de estar diciendo todo vectorial el tiempo en lugar de la matriz, 521 00:27:27,740 --> 00:27:30,290 porque eso es lo que el r documentación tiene acostumbrados. 522 00:27:30,290 --> 00:27:33,070 Es una c hábito arraigado. 523 00:27:33,070 --> 00:27:37,590 >> OK, y por eso ahora tenemos esta matriz. 524 00:27:37,590 --> 00:27:38,830 Así que tenemos esta matriz, c. 525 00:27:38,830 --> 00:27:41,380 Podemos conseguir Resumen estadísticas sobre c, sumarias c. 526 00:27:41,380 --> 00:27:46,920 527 00:27:46,920 --> 00:27:48,280 Y eso es bueno. 528 00:27:48,280 --> 00:27:51,070 529 00:27:51,070 --> 00:27:52,670 Así que ahora vamos a hacer algunas cosas de la matriz. 530 00:27:52,670 --> 00:27:56,160 Digamos que m es una matriz. 531 00:27:56,160 --> 00:27:57,780 Vamos a hacer que un tres por tres una. 532 00:27:57,780 --> 00:28:01,630 Así nRows es igual a 3, y es igual a 3 ncols. 533 00:28:01,630 --> 00:28:04,190 534 00:28:04,190 --> 00:28:10,710 Y para los datos que vamos a hacer-- así que lo que cree usted que esto va a hacer? 535 00:28:10,710 --> 00:28:15,310 536 00:28:15,310 --> 00:28:16,580 >> Correcto, es la siguiente. 537 00:28:16,580 --> 00:28:17,970 Es nRow y nColumn. 538 00:28:17,970 --> 00:28:22,164 539 00:28:22,164 --> 00:28:24,580 Así que lo que he hecho es que he declarado una matriz de tres por tres 540 00:28:24,580 --> 00:28:26,950 y yo he pasado en una serie de nueve elementos. 541 00:28:26,950 --> 00:28:30,530 Así que el logaritmo de todo el elementos uno al nueve. 542 00:28:30,530 --> 00:28:33,400 543 00:28:33,400 --> 00:28:37,285 Y todos esos valores se llenan el lamento array--? 544 00:28:37,285 --> 00:28:38,660 AUDIENCIA: Aquellos son de base 10 registros? 545 00:28:38,660 --> 00:28:41,284 CONNER HARRIS: No, de registro es logaritmos naturales, por lo que en base e. 546 00:28:41,284 --> 00:28:44,886 547 00:28:44,886 --> 00:28:47,010 Sí, si usted quiere la base 10 log, creo que tendrías 548 00:28:47,010 --> 00:28:51,620 para registrar lo que sea, dividido por registro 10. 549 00:28:51,620 --> 00:28:56,750 Y por lo que los datos de la [inaudible] solo se llena la matriz, por lo que arriba a abajo, 550 00:28:56,750 --> 00:28:59,490 luego a la izquierda a la derecha. 551 00:28:59,490 --> 00:29:06,890 Y si quería hacer alguna otra matriz, digamos n es la matriz. 552 00:29:06,890 --> 00:29:10,317 Vamos a hacer, no lo sé, 2 a 13. 553 00:29:10,317 --> 00:29:11,900 O voy a hacer algo más interesante. 554 00:29:11,900 --> 00:29:13,770 Haré 2-4. 555 00:29:13,770 --> 00:29:15,780 nRow es igual a, digamos, 3. 556 00:29:15,780 --> 00:29:18,992 ncol es igual a 4. 557 00:29:18,992 --> 00:29:20,360 norte. 558 00:29:20,360 --> 00:29:22,090 Así que tenemos esto. 559 00:29:22,090 --> 00:29:26,130 >> Y ahora si queremos multiplicar estos, haríamos veces n ciento por ciento, 560 00:29:26,130 --> 00:29:27,680 porque eso es n. 561 00:29:27,680 --> 00:29:30,234 562 00:29:30,234 --> 00:29:31,400 Y tenemos productos de matriz. 563 00:29:31,400 --> 00:29:33,970 564 00:29:33,970 --> 00:29:37,810 Por lo cierto, ¿ves cómo cuando me declaré n, del 2 al 4 565 00:29:37,810 --> 00:29:43,570 vector consiguió cicla hasta que llenaba todos los n? 566 00:29:43,570 --> 00:29:45,710 Si querías tomar la descomposición de valor propio, 567 00:29:45,710 --> 00:29:46,960 esto es algo que podemos hacer con mucha facilidad. 568 00:29:46,960 --> 00:29:47,709 Podemos hacer eigen n. 569 00:29:47,709 --> 00:29:52,290 570 00:29:52,290 --> 00:29:54,600 Y por lo que esta es nuestra primera encontrarse con una lista. 571 00:29:54,600 --> 00:29:57,000 >> Así eigen n es una lista con dos llaves. 572 00:29:57,000 --> 00:29:58,430 Valores, que es esta matriz aquí. 573 00:29:58,430 --> 00:30:01,030 Y vectores, que es esta matriz aquí. 574 00:30:01,030 --> 00:30:08,240 Así que si usted quiere extraer, por ejemplo, esta tercera columna 575 00:30:08,240 --> 00:30:13,080 de la matriz de vectores propios, porque los vectores propios son vectores columna. 576 00:30:13,080 --> 00:30:24,400 Así que podemos hacer eigen vec n signo de dólar vectores, coma 3, de [inaudible]. 577 00:30:24,400 --> 00:30:29,800 578 00:30:29,800 --> 00:30:30,900 Vec. 579 00:30:30,900 --> 00:30:34,100 Es que, como se podría esperar. 580 00:30:34,100 --> 00:30:39,210 >> Luego diga n veces veces ciento vec. 581 00:30:39,210 --> 00:30:42,610 582 00:30:42,610 --> 00:30:48,320 Así que el resultado aquí sin duda parece si tomamos el tercer valor propio aquí, 583 00:30:48,320 --> 00:30:50,390 que se corresponde con la tercera vector propio. 584 00:30:50,390 --> 00:30:53,190 Simplemente multiplica todo en este vector propio, componentes sabio, 585 00:30:53,190 --> 00:30:53,990 por el valor propio. 586 00:30:53,990 --> 00:30:57,760 Y eso es lo que cabría esperar, porque eso es lo que son los valores propios. 587 00:30:57,760 --> 00:31:00,890 ¿Alguien aquí no tomado álgebra lineal? 588 00:31:00,890 --> 00:31:02,530 Un par de personas, en Aceptar. 589 00:31:02,530 --> 00:31:04,030 Basta con activar su cerebro fuera un poco. 590 00:31:04,030 --> 00:31:07,490 591 00:31:07,490 --> 00:31:20,720 Y de hecho, si tomamos eigen n valores de signo de dólar 3 veces vec, 592 00:31:20,720 --> 00:31:21,810 así conseguir lo mismo. 593 00:31:21,810 --> 00:31:24,726 Es un formato diferente como una fila vector en vez de un vector columna, 594 00:31:24,726 --> 00:31:25,640 pero la gran cosa. 595 00:31:25,640 --> 00:31:29,430 596 00:31:29,430 --> 00:31:35,170 Y así, esos son básicamente el buen cosas que podemos hacer con matrices, 597 00:31:35,170 --> 00:31:36,489 listas demostradas. 598 00:31:36,489 --> 00:31:39,030 Debo demostrar el buen cosas acerca de las funciones también. 599 00:31:39,030 --> 00:31:41,750 >> Así que vamos a decir-- [inaudible] función, la llamada de let 600 00:31:41,750 --> 00:31:51,960 que func contra la función de n n squared-- En realidad, eso no es realmente el mejor. 601 00:31:51,960 --> 00:31:55,632 a, b, un cuadrado más b. 602 00:31:55,632 --> 00:31:58,547 603 00:31:58,547 --> 00:32:00,380 Así que una cosa acerca de funciones, de nuevo, es que 604 00:32:00,380 --> 00:32:01,963 no necesitan declaraciones explícitas de retorno. 605 00:32:01,963 --> 00:32:04,250 Así que usted puede solo-- la última declaración evaluado 606 00:32:04,250 --> 00:32:07,502 será la declaración devuelto, o el valor devuelto. 607 00:32:07,502 --> 00:32:10,460 Así que en este caso, sólo estamos evaluando una sentencia, un plus cuadrado b. 608 00:32:10,460 --> 00:32:12,043 Ese será el valor de retorno por defecto. 609 00:32:12,043 --> 00:32:14,530 Nunca está de más poner en devolver valores de forma explícita, 610 00:32:14,530 --> 00:32:16,880 especialmente si usted está tratando con un la función de la lógica muy complicado 611 00:32:16,880 --> 00:32:17,380 caudal. 612 00:32:17,380 --> 00:32:18,450 Pero usted no los necesita. 613 00:32:18,450 --> 00:32:24,890 Así que ahora podemos hacer func 5, 1, y esto es básicamente lo que se espera. 614 00:32:24,890 --> 00:32:29,146 615 00:32:29,146 --> 00:32:31,270 Otra cosa que podemos hacer, en realidad podemos hacer func b 616 00:32:31,270 --> 00:32:33,260 es igual a 1, a es igual a 5. 617 00:32:33,260 --> 00:32:36,870 618 00:32:36,870 --> 00:32:40,770 Así que si especificamos qué número aquí, que este argumento al que el argumento 619 00:32:40,770 --> 00:32:44,680 en la función, podemos dar la vuelta alrededor estos valores donde queramos. 620 00:32:44,680 --> 00:32:48,405 >> AUDIENCIA: ¿Hay una razón escribirlo con la b 621 00:32:48,405 --> 00:32:52,404 iguales en lugar de sólo usar los números y la coma? 622 00:32:52,404 --> 00:32:54,820 CONNER HARRIS: Sí, por lo general hacer esto si tiene funciones 623 00:32:54,820 --> 00:32:58,540 con una gran cantidad de argumentos. 624 00:32:58,540 --> 00:33:00,690 Eso podría a menudo ser como banderas que sólo había 625 00:33:00,690 --> 00:33:03,130 que desee utilizar en raras ocasiones. 626 00:33:03,130 --> 00:33:06,740 Y de esta manera usted puede only-- usted puede referirse a los argumentos específicos 627 00:33:06,740 --> 00:33:09,110 que desea utilizar valores no predeterminados para, 628 00:33:09,110 --> 00:33:14,470 y usted no tiene que escribir un montón de banderas es igual a falso después de ellos. 629 00:33:14,470 --> 00:33:19,710 O puedo escribir esto de nuevo con un valor por defecto como b es igual a 2. 630 00:33:19,710 --> 00:33:26,289 Y entonces yo podría hacer f func, Voy a hacer 4, 1 este tiempo. 631 00:33:26,289 --> 00:33:28,580 Y el 17, que es 4 al cuadrado más 1, como se podría esperar. 632 00:33:28,580 --> 00:33:34,290 >> Pero podría también acaba llamar a este con func 4, 633 00:33:34,290 --> 00:33:36,970 y voy a conseguir 18, porque No especifico b. 634 00:33:36,970 --> 00:33:38,550 Así b obtiene el valor por defecto de 2. 635 00:33:38,550 --> 00:33:41,700 636 00:33:41,700 --> 00:33:47,200 >> OK, así que ahora si eres siguiente junto con la demo, 637 00:33:47,200 --> 00:33:51,010 escriba esta línea en su comando impulsar y ver qué sale. 638 00:33:51,010 --> 00:33:52,090 En realidad, no lo hagas. 639 00:33:52,090 --> 00:33:52,590 Escriba esto. 640 00:33:52,590 --> 00:33:57,780 641 00:33:57,780 --> 00:34:01,000 Usted debe obtener algo como esto. 642 00:34:01,000 --> 00:34:04,780 Así mtcars está construido en los datos establecer para esta demostración 643 00:34:04,780 --> 00:34:13,550 propósitos que viene con-- que viene en forma predeterminada con su distribución de r. 644 00:34:13,550 --> 00:34:19,211 Esta es una recopilación de las estadísticas de un número de la revista Motor Trend 1974 645 00:34:19,211 --> 00:34:20,710 en un número de diferentes modelos de automóviles. 646 00:34:20,710 --> 00:34:28,270 >> Así que hay millas por galón, cylinders-- Me olvido de lo disp es-- caballos de fuerza. 647 00:34:28,270 --> 00:34:31,610 648 00:34:31,610 --> 00:34:32,420 Probablemente. 649 00:34:32,420 --> 00:34:36,920 Si usted acaba de coches Google MT, entonces uno de los primeros resultados 650 00:34:36,920 --> 00:34:38,730 será a partir de la documentación oficial r 651 00:34:38,730 --> 00:34:41,080 y explicará todos estos campos de datos. 652 00:34:41,080 --> 00:34:47,020 Así peso es-- peso es peso del coche en toneladas. 653 00:34:47,020 --> 00:34:48,880 Q seg es el momento de cuarto de milla. 654 00:34:48,880 --> 00:34:52,409 655 00:34:52,409 --> 00:34:55,850 Así que ahora podemos hacer algunas cosas divertidas sobre los coches MT es un campo de datos. 656 00:34:55,850 --> 00:35:01,640 >> Por lo que podemos hacer las cosas como los nombres de fila, coches mt. 657 00:35:01,640 --> 00:35:05,490 Y esta es una lista de todas las filas de el conjunto de datos que son nombres de coches. 658 00:35:05,490 --> 00:35:10,780 Podemos hacer COLNAMES, automóviles mt esto. 659 00:35:10,780 --> 00:35:15,500 Si lo haces coches mt, subíndice numérico, como 2. 660 00:35:15,500 --> 00:35:18,177 tenemos la segunda columna de esto, que sería cilindros. 661 00:35:18,177 --> 00:35:19,370 >> AUDIENCIA: ¿Qué hiciste? 662 00:35:19,370 --> 00:35:21,570 >> CONNER HARRIS: Yo tecleó MT autos, soportes e, 663 00:35:21,570 --> 00:35:24,180 que me dio la segunda columna de coches mt. 664 00:35:24,180 --> 00:35:34,501 665 00:35:34,501 --> 00:35:38,110 O si queremos una fila, puedo escribir mtcars coma 2, por ejemplo. 666 00:35:38,110 --> 00:35:41,850 667 00:35:41,850 --> 00:35:46,390 Otra ronda 2 coma, así. 668 00:35:46,390 --> 00:35:48,880 Y eso va en su fila. 669 00:35:48,880 --> 00:35:54,680 Esta aquí sólo te da una columna, pero como un vector columna. 670 00:35:54,680 --> 00:36:04,634 671 00:36:04,634 --> 00:36:06,425 Me acabo de dar cuenta ahora se olvidó de demostrar 672 00:36:06,425 --> 00:36:09,150 algunas cosas interesantes acerca de vectores que se puede ver con los índices. 673 00:36:09,150 --> 00:36:10,480 Así que déjame hacer eso ahora mismo. 674 00:36:10,480 --> 00:36:17,130 Así que vamos a hacer c gets-- poner esto en pause-- 2 veces 1 a 10. 675 00:36:17,130 --> 00:36:21,360 Así que c es sólo va a ser el vector de 2 a 20. 676 00:36:21,360 --> 00:36:24,640 Puedo tomar elementos de este tipo, c2. 677 00:36:24,640 --> 00:36:30,942 Me puede pasar en un vector de esta manera, me C-- deje 678 00:36:30,942 --> 00:36:34,470 utilizar un nombre diferente que c, como c vec. 679 00:36:34,470 --> 00:36:37,591 680 00:36:37,591 --> 00:36:39,340 Básicamente, estoy haciendo esto para que no lo entiendo 681 00:36:39,340 --> 00:36:45,010 confundido entre c como función de la construcción del vector, 682 00:36:45,010 --> 00:36:48,800 y luego c como un nombre de variable. 683 00:36:48,800 --> 00:36:53,120 Soportes Vec c 4, 5, 7. 684 00:36:53,120 --> 00:36:56,540 Esto me va a salir del cuarto, quinto, y siete elementos de la matriz. 685 00:36:56,540 --> 00:37:01,740 Yo puedo hacer vec, poner en un negativo índice, como negativo 4. 686 00:37:01,740 --> 00:37:06,500 Eso sacarme esto con el cuarto elemento eliminado. 687 00:37:06,500 --> 00:37:10,140 Entonces, si yo quería hacer rodajas, Yo puedo hacer vec 2 a 6. 688 00:37:10,140 --> 00:37:15,480 2 puntos 6 es más que otra vector, que es 2, 3, 4, 5, 6. 689 00:37:15,480 --> 00:37:18,230 Escupe eso. 690 00:37:18,230 --> 00:37:20,770 >> Así que de todos modos, de nuevo a los coches mt. 691 00:37:20,770 --> 00:37:26,650 692 00:37:26,650 --> 00:37:28,450 Así que vamos a hacer algunas regresiones. 693 00:37:28,450 --> 00:37:34,240 Digamos modelo gets-- vamos linealmente regress-- No sé. 694 00:37:34,240 --> 00:37:41,780 En primer lugar vamos a hacer adjuntar mtcars, por supuesto. 695 00:37:41,780 --> 00:37:44,870 696 00:37:44,870 --> 00:38:00,010 Así que [inaudible] modelo lm, vamos van retrocediendo millas por galón en peso tilde. 697 00:38:00,010 --> 00:38:03,300 Y luego trama de datos es mtcars. 698 00:38:03,300 --> 00:38:06,830 Así modelo de resumen. 699 00:38:06,830 --> 00:38:12,900 700 00:38:12,900 --> 00:38:15,595 >> OK, así que esto parece un poco complicado. 701 00:38:15,595 --> 00:38:19,380 Pero, básicamente, ya que si nos tratar de expresar millas por galón 702 00:38:19,380 --> 00:38:23,970 como una función lineal de peso, entonces tenemos esta línea aquí, 703 00:38:23,970 --> 00:38:28,730 que intercepta a 37.28. 704 00:38:28,730 --> 00:38:33,830 37.28 serían las millas teóricas por galón de un coche que pesa cero. 705 00:38:33,830 --> 00:38:41,210 Y luego por cada tonelada adicional, usted golpea a unas cinco millas por galón 706 00:38:41,210 --> 00:38:42,440 fuera de eso. 707 00:38:42,440 --> 00:38:45,120 Ambos de estos coeficientes que puede ver, errores típicos allí. 708 00:38:45,120 --> 00:38:47,870 Y son muy Estadísticamente significante. 709 00:38:47,870 --> 00:38:55,740 >> Así que podemos estar muy seguros de 1 e 10 al negativo 10. 710 00:38:55,740 --> 00:38:59,510 Así 1 veces algo a lo negativo 10, que si haces un coche más pesado, 711 00:38:59,510 --> 00:39:01,440 tendrá peores millas por galón. 712 00:39:01,440 --> 00:39:04,940 713 00:39:04,940 --> 00:39:07,250 O podemos probar algún otro modelo. 714 00:39:07,250 --> 00:39:09,230 Al igual que en lugar de regresión esto en peso, 715 00:39:09,230 --> 00:39:12,600 vamos van retrocediendo en el registro de peso, porque a lo mejor el peso efectivo 716 00:39:12,600 --> 00:39:15,690 en el kilometraje no es de alguna manera lineal. 717 00:39:15,690 --> 00:39:18,540 >> Esto nos dio un r cuadrado de 0.7528. 718 00:39:18,540 --> 00:39:19,610 Así que vamos a probar esto. 719 00:39:19,610 --> 00:39:21,485 Esta vez vamos a hacer un diferentes variables, también. 720 00:39:21,485 --> 00:39:22,500 Model2. 721 00:39:22,500 --> 00:39:24,800 Así resumen, model2. 722 00:39:24,800 --> 00:39:28,200 723 00:39:28,200 --> 00:39:31,390 Muy bien, así que de nuevo, conseguimos nuestra línea de mejor ajuste aquí. 724 00:39:31,390 --> 00:39:36,160 Y este tiempo-- esto está diciendo, básicamente que cada vez que 725 00:39:36,160 --> 00:39:38,090 aumentar el peso de un coche por un factor de correo 726 00:39:38,090 --> 00:39:40,580 a perder esta cantidad de millas por galón. 727 00:39:40,580 --> 00:39:43,210 728 00:39:43,210 --> 00:39:50,326 >> Y así que esta vez nuestro nivel residual error it-- eso no importa, de verdad. 729 00:39:50,326 --> 00:39:53,540 El error estándar residual es básicamente el error estándar 730 00:39:53,540 --> 00:39:57,760 que has dejado después quitar la línea de tendencia. 731 00:39:57,760 --> 00:40:02,805 Y nuestro r cuadrado aquí es 0,81, que es un poco mejor que lo 732 00:40:02,805 --> 00:40:07,640 que teníamos antes, 0,52. 733 00:40:07,640 --> 00:40:09,750 >> Y así que ahora vamos a añadir un plazo para esta regresión. 734 00:40:09,750 --> 00:40:13,020 Así que vamos a van retrocediendo millas por galón tanto en el registro de los pesos 735 00:40:13,020 --> 00:40:21,130 y, vamos a hacer, q millas, tiempo de milla trimestre. 736 00:40:21,130 --> 00:40:26,190 OK, debe tener el-- bien, QseC. 737 00:40:26,190 --> 00:40:26,690 QseC. 738 00:40:26,690 --> 00:40:30,630 739 00:40:30,630 --> 00:40:35,000 Actually-- lo siento, ¿qué? 740 00:40:35,000 --> 00:40:37,000 Voy a llamar a esto algo más aparte model2. 741 00:40:37,000 --> 00:40:38,000 Voy a llamar a este MODEL3. 742 00:40:38,000 --> 00:40:40,860 743 00:40:40,860 --> 00:40:42,900 Y por lo que ahora podemos hacer resumen MODEL3. 744 00:40:42,900 --> 00:40:46,850 745 00:40:46,850 --> 00:40:49,100 Y así, una vez más, esto es, básicamente, lo que se podría esperar. 746 00:40:49,100 --> 00:40:51,750 Usted tiene intercepto positivo. 747 00:40:51,750 --> 00:40:54,550 La eficacia creciente peso es negativo. 748 00:40:54,550 --> 00:40:58,490 Y la efectiva aumentando trimestre tiempo millas 749 00:40:58,490 --> 00:41:02,420 es positivo, pero a pesar de en menor medida que el peso. 750 00:41:02,420 --> 00:41:06,010 Ahora intuitivamente, puede dar sentido a esto diciendo pensar en los coches deportivos. 751 00:41:06,010 --> 00:41:08,950 Hay una aceleración muy rápida, A muy poca veces cuarto de milla. 752 00:41:08,950 --> 00:41:13,729 También van a utilizar más gas, mientras que los coches más sensibles van 753 00:41:13,729 --> 00:41:16,020 para tener aceleración más lenta, mayores tiempos de cuarto de milla, 754 00:41:16,020 --> 00:41:20,890 y utilizar menos gas ,, por lo millas por galón más altos. 755 00:41:20,890 --> 00:41:21,390 Excelente. 756 00:41:21,390 --> 00:41:23,431 Y por lo que ahora es el momento de trazar algo como esto. 757 00:41:23,431 --> 00:41:27,810 Así que vamos a hacer-- tan desnudo huesos que pueden hacer plots-- 758 00:41:27,810 --> 00:41:35,280 porque yo he adjuntado esta trama de datos antes-- nos podemos hacer parcelas, mpg en peso. 759 00:41:35,280 --> 00:41:38,762 760 00:41:38,762 --> 00:41:39,720 Haga esto un poco más grande. 761 00:41:39,720 --> 00:41:55,050 762 00:41:55,050 --> 00:41:57,350 Allí, tenemos básicamente una diagrama de dispersión, pero los puntos 763 00:41:57,350 --> 00:41:58,690 son un poco difícil de ver en esto. 764 00:41:58,690 --> 00:42:04,860 765 00:42:04,860 --> 00:42:10,900 >> No me acuerdo de improviso lo que el sintaxis es para cambiar la trama. 766 00:42:10,900 --> 00:42:14,100 Así que supongo que esto será un buen momento para que aparezca, 767 00:42:14,100 --> 00:42:18,000 hay una muy buena ayuda incorporado función, cotizaciones de ayuda funcionan nombre. 768 00:42:18,000 --> 00:42:21,690 Vamos a plantear básicamente algo que te gustaría. 769 00:42:21,690 --> 00:42:28,010 770 00:42:28,010 --> 00:42:32,730 Creo que voy a hacer esto realidad Tipo es igual a p para puntos parcelas. 771 00:42:32,730 --> 00:42:34,369 ¿Eso cambia nada? 772 00:42:34,369 --> 00:42:35,160 Y no, no realmente. 773 00:42:35,160 --> 00:42:39,160 774 00:42:39,160 --> 00:42:39,660 Correcto. 775 00:42:39,660 --> 00:42:46,760 776 00:42:46,760 --> 00:42:49,580 >> Por alguna razón, cuando hice esto en mi propia computadora hace un tiempo, 777 00:42:49,580 --> 00:42:52,080 todos los puntos de dispersión eran mucho más clara. 778 00:42:52,080 --> 00:43:06,390 779 00:43:06,390 --> 00:43:13,970 De todos modos, son el tipo de dispersión de visible? 780 00:43:13,970 --> 00:43:15,124 No hay nadie allí. 781 00:43:15,124 --> 00:43:16,165 A pocos son, unos pocos allí. 782 00:43:16,165 --> 00:43:18,860 783 00:43:18,860 --> 00:43:21,185 Puede especie de verlos, ¿verdad? 784 00:43:21,185 --> 00:43:24,310 Así que si queremos añadir una línea de mejor ajuste a esta trama aquí, que es un poco desnudo 785 00:43:24,310 --> 00:43:29,290 bones-- quiero dejar un poco más agradable. 786 00:43:29,290 --> 00:43:38,075 Principal es igual frente peso. 787 00:43:38,075 --> 00:43:46,322 788 00:43:46,322 --> 00:43:49,740 Millas por galón. 789 00:43:49,740 --> 00:43:53,570 Una vez más, se puede ver lo útil argumentos opcionales están aquí con también 790 00:43:53,570 --> 00:43:58,090 no tener que poner las cosas en un cierto orden con los argumentos de teclado 791 00:43:58,090 --> 00:44:01,600 cuando se tiene parcelas, ya que éstas tienen un montón de argumentos. 792 00:44:01,600 --> 00:44:07,490 >> Xlab igual peso, peso, toneladas. 793 00:44:07,490 --> 00:44:10,091 794 00:44:10,091 --> 00:44:10,590 Correcto. 795 00:44:10,590 --> 00:44:17,340 796 00:44:17,340 --> 00:44:21,480 OK, sí, este dispositivo es ser un poco molesto. 797 00:44:21,480 --> 00:44:30,160 Pero se puede ver una especie de allá arriba, hay un título del gráfico en el lateral. 798 00:44:30,160 --> 00:44:35,260 Por aquí there's-- en la parte inferior aquí hay etiquetas de los ejes. 799 00:44:35,260 --> 00:44:37,700 No me acuerdo de improviso lo que los comandos ars-- 800 00:44:37,700 --> 00:44:41,000 lo que las funciones son aumentar el tamaño de esas etiquetas y títulos, 801 00:44:41,000 --> 00:44:43,110 pero están ahí. 802 00:44:43,110 --> 00:44:46,625 >> Y por lo que si queremos agregue la línea de mejor ajuste, 803 00:44:46,625 --> 00:44:49,250 podríamos hacer algo como-- I tener la sintaxis escrita aquí. 804 00:44:49,250 --> 00:44:52,280 805 00:44:52,280 --> 00:45:11,130 Así que recuerde que nosotros simplemente añadimos modelo fue mpg, peso, mtcars. 806 00:45:11,130 --> 00:45:16,470 Y así, si quería añadir un mejor ajuste line, lo que podía hacer un modelo de la línea b. 807 00:45:16,470 --> 00:45:18,556 Y auge, tenemos una línea de mejor ajuste. 808 00:45:18,556 --> 00:45:19,970 Es un poco difícil de ver de nuevo. 809 00:45:19,970 --> 00:45:22,178 Estoy bastante lo de la dificultades tecnológicas. 810 00:45:22,178 --> 00:45:25,230 Pero se ejecuta básicamente la parte superior izquierda a la inferior derecha. 811 00:45:25,230 --> 00:45:27,550 >> Y si la escala fuera más grande, se podía ver 812 00:45:27,550 --> 00:45:31,260 que la intersección es lo que pueda encontrar desde las estadísticas de resumen 813 00:45:31,260 --> 00:45:34,790 si escribe modelo de resumen. 814 00:45:34,790 --> 00:45:40,130 OK, así que espero que todo el mundo tiene algo así como un sentido de lo que 815 00:45:40,130 --> 00:45:42,030 R es, lo que es bueno para. 816 00:45:42,030 --> 00:45:45,520 Usted puede hacer mucho mejor que las parcelas esto en su propio tiempo, si lo desea. 817 00:45:45,520 --> 00:45:50,100 818 00:45:50,100 --> 00:45:53,950 >> Así que la interfaz de la función externa. 819 00:45:53,950 --> 00:46:00,330 Esto es algo que no suele ser cubierto de conferencias introductorias 820 00:46:00,330 --> 00:46:03,560 ni nada de introducción para r. 821 00:46:03,560 --> 00:46:05,584 No es probable que vas a necesitar. 822 00:46:05,584 --> 00:46:08,000 Sin embargo, me pareció útil en mis propios proyectos en el pasado. 823 00:46:08,000 --> 00:46:10,984 Y no hay buena tutorial para ello en línea. 824 00:46:10,984 --> 00:46:12,900 Así que sólo voy a todos ustedes se apresure a través de este 825 00:46:12,900 --> 00:46:16,606 y luego usted es libre de irse. 826 00:46:16,606 --> 00:46:18,480 Y así el extranjero interfaz de la función es lo que 827 00:46:18,480 --> 00:46:23,130 que puede utilizar para llamar a ver funciones con una R. Internamente, 828 00:46:23,130 --> 00:46:29,850 R se basa en la aritmética de C. R es sólo 64-bit aritmética de punto flotante de C, 829 00:46:29,850 --> 00:46:32,852 que es de tipo doble [inaudible]. 830 00:46:32,852 --> 00:46:35,060 Y es posible que desee hacer esto por un montón de razones. 831 00:46:35,060 --> 00:46:39,250 Por un lado, R es interpretada, es No compilado a código máquina. 832 00:46:39,250 --> 00:46:42,170 Así que usted puede reescribir su bucles internos en C y luego llegar 833 00:46:42,170 --> 00:46:45,920 la ventaja de utilizar R. Como que es un poco más cómodo que C. 834 00:46:45,920 --> 00:46:48,899 Tiene mejor gráfica instalaciones y otras cosas. 835 00:46:48,899 --> 00:46:51,690 Y sin dejar de ser capaz de llegar la velocidad máxima de los bucles internos, 836 00:46:51,690 --> 00:46:53,650 que es donde realmente lo necesitan. 837 00:46:53,650 --> 00:46:56,330 >> La reutilización de librerías C existentes, eso también es importante. 838 00:46:56,330 --> 00:47:00,320 Si usted tiene alguna biblioteca C por igual, No sé, transformadas de Fourier, 839 00:47:00,320 --> 00:47:05,190 o algunos muy Arcaico procedimiento utilizado estadísticas 840 00:47:05,190 --> 00:47:09,470 en la escuela de astrofísica de energía o algo así, no lo sé. 841 00:47:09,470 --> 00:47:13,058 Alta astrofísica energía no es ni siquiera un pensamiento, creo. 842 00:47:13,058 --> 00:47:16,480 Pero usted puede hacer que en lugar de tener escribir un puerto R nativa de ellos. 843 00:47:16,480 --> 00:47:22,725 Y en el-- y otra vez, como si buscar en la mayoría de las bibliotecas por defecto de R, 844 00:47:22,725 --> 00:47:25,600 en la parte interna, las partes internas son va a utilizar la función extranjera 845 00:47:25,600 --> 00:47:26,724 interfaz muy ampliamente. 846 00:47:26,724 --> 00:47:31,630 Van a tener cosas como Fourier transforma o computación de correlación 847 00:47:31,630 --> 00:47:34,890 coeficientes escritos en C, y que van a sólo hay envolturas R alrededor de ellos. 848 00:47:34,890 --> 00:47:38,230 La interfaz es una un poco difícil. creo 849 00:47:38,230 --> 00:47:43,750 su dificultad es exagerada en una Muchas de las instrucciones que encontrarás. 850 00:47:43,750 --> 00:47:46,200 Pero, sin embargo, es un poco confuso. 851 00:47:46,200 --> 00:47:48,650 Y yo no he sido capaz de encontrar un buen tutorial para ello, 852 00:47:48,650 --> 00:47:51,980 así que esto es ahora. 853 00:47:51,980 --> 00:47:55,360 Una vez más, todo este segmento es más para su posterior consulta. 854 00:47:55,360 --> 00:47:57,687 No te preocupes por la copia todo hasta ahora. 855 00:47:57,687 --> 00:48:00,020 Así que las siguientes instrucciones son para sistemas tipo Unix, 856 00:48:00,020 --> 00:48:05,150 Linux, BSD, OS X. No lo sé cómo funciona en Windows, 857 00:48:05,150 --> 00:48:08,280 pero por favor, simplemente no hacer su proyecto final en Windows. 858 00:48:08,280 --> 00:48:10,790 859 00:48:10,790 --> 00:48:12,460 Usted realmente no quiere. 860 00:48:12,460 --> 00:48:14,770 Unix es mucho mejor conjunto para la programación casual. 861 00:48:14,770 --> 00:48:19,320 862 00:48:19,320 --> 00:48:21,390 Así que, básicamente extranjera interfaz de la función. 863 00:48:21,390 --> 00:48:24,420 Si desea escribir un C función para su uso con R, 864 00:48:24,420 --> 00:48:27,250 tiene que tomar todo el argumentos como punteros. 865 00:48:27,250 --> 00:48:30,666 >> Así que para valores individuales, esta significa que está señalando el valor. 866 00:48:30,666 --> 00:48:33,040 Para las matrices, este es un puntero al primer elemento, el cual 867 00:48:33,040 --> 00:48:36,750 es lo que los nombres de matriz que realmente significan. 868 00:48:36,750 --> 00:48:40,140 Una vez más, esto es algo que debe tener bastante totalmente después de p establece cinco. 869 00:48:40,140 --> 00:48:43,334 Nombres de matriz son sólo punteros al primer elemento, 870 00:48:43,334 --> 00:48:44,750 El tipo de punto flotante es doble. 871 00:48:44,750 --> 00:48:47,310 Y su función tiene que volverá vacía. 872 00:48:47,310 --> 00:48:50,810 La única manera en que puede En realidad lo que ocurrió decirle R 873 00:48:50,810 --> 00:48:54,410 es mediante la modificación de la memoria que R dio a ella a través de la función extranjera 874 00:48:54,410 --> 00:48:54,910 interfaz. 875 00:48:54,910 --> 00:48:58,180 876 00:48:58,180 --> 00:49:00,127 >> Así que he escrito este ejemplo de ello, se trata de 877 00:49:00,127 --> 00:49:02,460 una función que calcula uso puntos producto de dos vectores. 878 00:49:02,460 --> 00:49:05,060 Se necesitan dos argumentos, vec1, vec2, que son los propios vectores, 879 00:49:05,060 --> 00:49:06,934 y luego n, que es una longitud, porque, de nuevo, 880 00:49:06,934 --> 00:49:12,630 R ha construido en el [inaudible] para averiguar la longitud de los vectores, pero C no. 881 00:49:12,630 --> 00:49:16,182 En C, los vectores es una arbitraria porción delimitada de memoria. 882 00:49:16,182 --> 00:49:17,890 Así que la forma en que puede calcular productos escalares 883 00:49:17,890 --> 00:49:23,470 se acaba de establecer este parámetro de salida a cero y luego recorrer 884 00:49:23,470 --> 00:49:28,760 de 1 a protagonizar n, porque n es un puntero a la longitud, 885 00:49:28,760 --> 00:49:32,929 sólo tiene que añadir algo para esto parámetro. 886 00:49:32,929 --> 00:49:34,970 Y puede ser una buena práctica si vas a hacer 887 00:49:34,970 --> 00:49:37,270 esto a escribir dos funciones C separadas. 888 00:49:37,270 --> 00:49:41,970 Uno de ellos has-- Uno de ellos sólo toma los argumentos y los tipos 889 00:49:41,970 --> 00:49:43,970 que tendrían ordinariamente en C. 890 00:49:43,970 --> 00:49:47,780 >> Por lo que toma una matriz argumentos como punteros. 891 00:49:47,780 --> 00:49:57,090 Pero los argumentos de valor único como n, sólo se necesita como valores por copia, 892 00:49:57,090 --> 00:49:57,917 sin punteros. 893 00:49:57,917 --> 00:49:59,750 Y luego no lo hace [Inaudible] a cabo puntero. 894 00:49:59,750 --> 00:50:01,290 Y entonces usted puede tener una diferente, básicamente, 895 00:50:01,290 --> 00:50:03,623 función de contenedor que, básicamente, maneja los requisitos 896 00:50:03,623 --> 00:50:07,740 de la función extranjera interfaz para usted. 897 00:50:07,740 --> 00:50:11,840 >> La forma en que usted llama esto en R es, una vez Tiene la función de su escrito en C, 898 00:50:11,840 --> 00:50:17,770 escribe R shlib cmd, R comando de biblioteca compartida, 899 00:50:17,770 --> 00:50:20,110 foo punto c, o lo que sea el nombre de archivo es, 900 00:50:20,110 --> 00:50:23,020 y el sistema operativo no shell en la terminal R. 901 00:50:23,020 --> 00:50:25,200 Y esto va a crear un biblioteca llamada foo dot así. 902 00:50:25,200 --> 00:50:28,180 Y entonces usted puede cargarlo en nuestro script o interactivamente 903 00:50:28,180 --> 00:50:32,310 con comando de carga de punto dyn. 904 00:50:32,310 --> 00:50:35,720 A continuación, hay una función en I llamado c punto. 905 00:50:35,720 --> 00:50:39,310 >> Esto toma argumentos que son primero el nombre de la función en C 906 00:50:39,310 --> 00:50:40,970 que desea llamar. 907 00:50:40,970 --> 00:50:43,920 Y entonces todos los parámetros a esa función, 908 00:50:43,920 --> 00:50:45,420 que tienen que estar en el orden correcto. 909 00:50:45,420 --> 00:50:48,580 Usted tiene que usar este tipo funciones de coerción como entero, como 910 00:50:48,580 --> 00:50:52,050 doble, como el carácter, y como lógico. 911 00:50:52,050 --> 00:50:54,710 Y luego, cuando se devuelve el lista, que a su vez es sólo 912 00:50:54,710 --> 00:50:57,550 una matriz asociada de la nombres de los parámetros y los valores 913 00:50:57,550 --> 00:51:00,950 después de la función se ha ejecutado. 914 00:51:00,950 --> 00:51:08,520 >> Así que en este caso, porque prod punto tiene argumentos vec1, vec2 y int n, n out. 915 00:51:08,520 --> 00:51:11,980 Poner los puntos c tenemos prod punto, el nombre de la función 916 00:51:11,980 --> 00:51:16,250 estamos llamando, vec1, vec2, tipo coaccionar. 917 00:51:16,250 --> 00:51:20,060 La longitud de cualquiera de vector, Acabo elegí vec1 arbitrariamente. 918 00:51:20,060 --> 00:51:25,479 Sería más robusto decir s Longitud min entero de vec1, longitud vec2. 919 00:51:25,479 --> 00:51:27,520 Entonces, justo cuando el doble cero, porque no lo hacemos realidad 920 00:51:27,520 --> 00:51:29,644 cuidar lo que entra en la cabo parámetro porque somos 921 00:51:29,644 --> 00:51:32,270 poniéndolo a cero de todos modos. 922 00:51:32,270 --> 00:51:37,560 >> Y a continuación, los resultados van a ser un array grande asociado de básicamente 923 00:51:37,560 --> 00:51:42,090 vec1 es lo que sea, vec2 es lo que sea. 924 00:51:42,090 --> 00:51:44,330 Pero nos interesa a cabo, por lo que podemos sacar eso. 925 00:51:44,330 --> 00:51:47,780 Esto es de nuevo, un ejemplo muy juguete de un interfaz de la función externa. 926 00:51:47,780 --> 00:51:54,160 Pero si usted tiene que calcular dot productos de vectores masivos en bucles, 927 00:51:54,160 --> 00:51:56,960 o si tiene que ver algo más en un bucle, 928 00:51:56,960 --> 00:51:59,850 y usted no quiere depender de R, que tiene un poco de sobrecarga 929 00:51:59,850 --> 00:52:02,830 construido en él, esto puede ser útil. 930 00:52:02,830 --> 00:52:05,870 >> Una vez más, esto no es generalmente un tema introductorio a R. 931 00:52:05,870 --> 00:52:08,571 No está muy bien documentado. 932 00:52:08,571 --> 00:52:11,070 Sólo estoy incluyendo porque He encontrado que es útil en el pasado. 933 00:52:11,070 --> 00:52:13,654 Así, las malas prácticas. 934 00:52:13,654 --> 00:52:15,820 He mencionado que hay un para el bucle en la función. 935 00:52:15,820 --> 00:52:21,150 En general, usted no debe, en el idioma, no la usamos. 936 00:52:21,150 --> 00:52:26,100 Basado en cómo R implementa iteración internamente, puede ser lento. 937 00:52:26,100 --> 00:52:28,540 Acaban también se ven feos. 938 00:52:28,540 --> 00:52:32,410 >> R maneja vectores muy bien, por lo muchas veces no es necesario utilizarlo. 939 00:52:32,410 --> 00:52:35,050 940 00:52:35,050 --> 00:52:38,900 Entonces usted puede usualmente reemplazar un vector a menudo 941 00:52:38,900 --> 00:52:42,490 con estas funciones llamadas de alta funciones de orden, Mapa, Reducir, 942 00:52:42,490 --> 00:52:44,404 Encuentra o filtro. 943 00:52:44,404 --> 00:52:46,320 Voy a dar algunos ejemplos de lo que ellos hacen. 944 00:52:46,320 --> 00:52:49,957 Mapa es una función de orden superior, ya que toma una función como argumento. 945 00:52:49,957 --> 00:52:52,290 Así que usted puede darle una función, usted puede darle una matriz, 946 00:52:52,290 --> 00:52:54,640 y va a aplicar la función a cada elemento de la matriz 947 00:52:54,640 --> 00:52:55,681 y devolver la nueva matriz. 948 00:52:55,681 --> 00:52:58,035 949 00:52:58,035 --> 00:53:00,160 Reducir, básicamente le das es una matriz, que le dan 950 00:53:00,160 --> 00:53:02,930 una función que toma dos argumentos. 951 00:53:02,930 --> 00:53:07,100 Se aplicará la función primera, la primera discusión con algún valor de arranque. 952 00:53:07,100 --> 00:53:09,440 Entonces a ese resultado en el segundo. 953 00:53:09,440 --> 00:53:12,590 Entonces a ese resultado en el tercero, luego a ese resultado en el cuarto. 954 00:53:12,590 --> 00:53:14,870 Y luego regresar cuando se llega al final. 955 00:53:14,870 --> 00:53:17,620 Así, por ejemplo, si quieres calcular la suma de todos los elementos 956 00:53:17,620 --> 00:53:23,240 en una matriz, lo que se podría llamar a reducir con [inaudible] reducir una adición 957 00:53:23,240 --> 00:53:26,620 función, como func a, b, volver a más b. 958 00:53:26,620 --> 00:53:28,960 Y a continuación, iniciar un valor de 0. 959 00:53:28,960 --> 00:53:32,950 >> Y todo esto, usted puede encontrarlos se describe en la documentación de R, 960 00:53:32,950 --> 00:53:35,720 en cualquier libro de texto sobre programación funcional. 961 00:53:35,720 --> 00:53:38,330 También hay esta clase de funciones llamadas funciones se aplican, 962 00:53:38,330 --> 00:53:42,807 que yo no-- son un poco difícil de explicar, 963 00:53:42,807 --> 00:53:45,640 pero si nos fijamos en [inaudible] reservado que he citado al principio, 964 00:53:45,640 --> 00:53:48,615 él les explica bastante bien en su apéndice sobre la programación R. 965 00:53:48,615 --> 00:53:51,599 966 00:53:51,599 --> 00:53:53,390 Más acerca de las prácticas, añadiendo a los vectores. 967 00:53:53,390 --> 00:53:57,570 968 00:53:57,570 --> 00:53:58,070 ¿Sí? 969 00:53:58,070 --> 00:54:01,651 970 00:54:01,651 --> 00:54:02,900 Creo que debería corregir eso. 971 00:54:02,900 --> 00:54:07,450 En esa primera línea, flecha vec, esa flecha no debería estar allí. 972 00:54:07,450 --> 00:54:10,920 Puede asignar a un vector, de nuevo, por tomar su longitud más 1 973 00:54:10,920 --> 00:54:13,220 y la asignación de un valor a eso. 974 00:54:13,220 --> 00:54:18,970 Que se extenderá el vector, o puede hacer equals vec c, nuevovalor vec. 975 00:54:18,970 --> 00:54:21,540 Una vez más, si se utiliza C con un argumento como un vector, 976 00:54:21,540 --> 00:54:23,300 la jerarquía resultante se aplana. 977 00:54:23,300 --> 00:54:27,160 Por lo que usted acaba de obtener un vector eso se extendió por 1. 978 00:54:27,160 --> 00:54:30,410 Nunca haga esto. 979 00:54:30,410 --> 00:54:33,330 >> La razón por la que no debe hacer esto es la siguiente. 980 00:54:33,330 --> 00:54:37,430 Al asignar un vector, que le da una cierta cantidad de memoria. 981 00:54:37,430 --> 00:54:40,680 Si aumenta ese tamaño del vector, tiene que reasignar el vector 982 00:54:40,680 --> 00:54:43,820 en algún otro lugar. 983 00:54:43,820 --> 00:54:46,980 Y así reasignación es bastante caro. 984 00:54:46,980 --> 00:54:50,530 No voy a entrar en los detalles de cómo asignadores de memoria se implementan 985 00:54:50,530 --> 00:54:57,280 en el nivel del sistema operativo, pero se necesita mucho tiempo 986 00:54:57,280 --> 00:54:58,962 encontrar un nuevo trozo de memoria. 987 00:54:58,962 --> 00:55:00,920 Y también, si usted es re-asignación de lotes y lotes 988 00:55:00,920 --> 00:55:03,500 de forma progresiva más grande trozos, que terminan 989 00:55:03,500 --> 00:55:06,420 con algo que se llama fragmentación de la memoria, 990 00:55:06,420 --> 00:55:09,390 donde la memoria disponible es dividido en un montón de pequeños bloques 991 00:55:09,390 --> 00:55:11,500 en el punto de vista asignadores de memoria. 992 00:55:11,500 --> 00:55:15,340 Y lo que es más y más difícil para encontrar la memoria para otras cosas. 993 00:55:15,340 --> 00:55:19,455 Así que en lugar, si lo que necesita hacer esto, si usted necesita para hacer crecer un vector de un extremo 994 00:55:19,455 --> 00:55:24,240 a la siguiente, en lugar de añadir a ella constantemente, debe pre-asignarlo. 995 00:55:24,240 --> 00:55:29,310 Flecha Vec, longitud del vector es igual a 1.000, o lo que sea. 996 00:55:29,310 --> 00:55:33,200 >> Y a continuación, puedes asignar a del vector de valores de un solo 997 00:55:33,200 --> 00:55:36,000 un tiempo después de que ha asignado una vez. 998 00:55:36,000 --> 00:55:40,140 Me encontré con esto, de nuevo, mi trabajo de verano cuando estaba escribiendo NRA diferencial 999 00:55:40,140 --> 00:55:42,120 resolución de ecuaciones. 1000 00:55:42,120 --> 00:55:43,180 No simbólica numérica. 1001 00:55:43,180 --> 00:55:49,290 La idea es que una vez que tienes un valor para su solución, 1002 00:55:49,290 --> 00:55:51,240 utiliza que para calcular la siguiente. 1003 00:55:51,240 --> 00:55:53,700 Así que mi natural, ingenuo impulso fue decir OK, 1004 00:55:53,700 --> 00:55:56,930 así que voy a empezar con un vector eso es un valor sustancial. 1005 00:55:56,930 --> 00:56:01,260 Calcular a partir de que el siguiente valor que va en mi solución vectorial, 1006 00:56:01,260 --> 00:56:02,630 y adjuntará dicha. 1007 00:56:02,630 --> 00:56:05,290 >> Crear algo más, anexar eso. 1008 00:56:05,290 --> 00:56:08,120 Fue muy, muy lentamente. 1009 00:56:08,120 --> 00:56:11,540 Y una vez que me di cuenta de esto y cambié mi sistema 1010 00:56:11,540 --> 00:56:16,020 añadiendo a partir de este vector al igual que entre 10.000 y 100.000 veces, 1011 00:56:16,020 --> 00:56:18,910 apenas pre-asignación de un vector y sólo correr con eso. 1012 00:56:18,910 --> 00:56:22,100 Tengo más de 1.000 veces la velocidad arriba. 1013 00:56:22,100 --> 00:56:26,280 Así que esta es una muy común trampa para la programación R. 1014 00:56:26,280 --> 00:56:31,560 Si usted necesita para construir un vector pieza por pieza, antes de asignar la misma. 1015 00:56:31,560 --> 00:56:35,360 1016 00:56:35,360 --> 00:56:40,240 >> Otro viaje común up-- esta es mi última diapositiva, no worry-- es el manejo de errores. 1017 00:56:40,240 --> 00:56:42,890 R, para ser franco, ¿no realmente hacer esto muy bien. 1018 00:56:42,890 --> 00:56:45,010 Hay una gran cantidad de problemas que pueden surgir. 1019 00:56:45,010 --> 00:56:48,360 Por ejemplo, si usted consigue un array o un vector de una función 1020 00:56:48,360 --> 00:56:52,377 que estabas esperando un solo valor que venir de, o viceversa, 1021 00:56:52,377 --> 00:56:55,460 y que pase esto en una función que Usted escribió esperando un solo valor, 1022 00:56:55,460 --> 00:56:57,270 que puede ser un problema. 1023 00:56:57,270 --> 00:57:01,440 >> Ciertas funciones devolver null como lo hacen, por ejemplo, 1024 00:57:01,440 --> 00:57:05,560 lectura de una clave inexistente en una lista. 1025 00:57:05,560 --> 00:57:08,527 Pero nula no es como C donde si intenta leer 1026 00:57:08,527 --> 00:57:11,360 de un viejo puntero, [inaudible] a puntero nulo, sólo SEG fallas 1027 00:57:11,360 --> 00:57:14,109 y si estás en el depurador se te dice exactamente dónde se encuentra. 1028 00:57:14,109 --> 00:57:17,080 1029 00:57:17,080 --> 00:57:20,772 En su lugar, será nula hacer-- funciones va a hacer cosas impredecibles 1030 00:57:20,772 --> 00:57:21,730 si son nulos mano. 1031 00:57:21,730 --> 00:57:24,575 Al igual que si usted está entregado max nulo, te dará infinito negativo. 1032 00:57:24,575 --> 00:57:27,230 1033 00:57:27,230 --> 00:57:28,190 Y así, sí. 1034 00:57:28,190 --> 00:57:30,880 1035 00:57:30,880 --> 00:57:32,630 Y así sucedió esto a mí una vez cuando tuve 1036 00:57:32,630 --> 00:57:34,771 cambiado un montón de campos en mi estructura de lista 1037 00:57:34,771 --> 00:57:37,520 una vez sin cambiar a otra parte cuando estaba leyendo de ellos. 1038 00:57:37,520 --> 00:57:40,670 Y luego recibí todo tipo de azar resultados infinito apareciendo 1039 00:57:40,670 --> 00:57:43,080 y yo no sabía de dónde venían. 1040 00:57:43,080 --> 00:57:45,310 Y, por desgracia, no hay hay modo estricto reales R 1041 00:57:45,310 --> 00:57:48,940 donde se puede decir si algo parece que podría ser un error, 1042 00:57:48,940 --> 00:57:51,960 simplemente parar allí, así que puedo ser disciplinado y arreglar eso. 1043 00:57:51,960 --> 00:57:55,282 1044 00:57:55,282 --> 00:57:57,240 Sin embargo, hay algo llamado parada si no. 1045 00:57:57,240 --> 00:58:00,480 Esto es equivalente a afirmar de C, si usted ha hablado de eso. 1046 00:58:00,480 --> 00:58:02,690 No creo que C afirman es un tema de la conferencia, 1047 00:58:02,690 --> 00:58:06,370 pero su jefe de sección podría haber ido por encima. 1048 00:58:06,370 --> 00:58:10,393 Y parar si no básicamente toma ninguna predicado, por lo que cualquier declaración que 1049 00:58:10,393 --> 00:58:11,824 puede ser verdadera o falsa. 1050 00:58:11,824 --> 00:58:13,490 Y si es falsa, que se detenga su programa. 1051 00:58:13,490 --> 00:58:18,260 Le dice exactamente lo que la línea eran y qué estado fallido. 1052 00:58:18,260 --> 00:58:21,910 >> Y esto muy útil, por ejemplo, comprobación de cordura, entradas de función. 1053 00:58:21,910 --> 00:58:25,110 Así que si usted tiene una función y espera, por ejemplo, 1054 00:58:25,110 --> 00:58:29,640 si usted me debe dar una fecha, que quiero las fechas sean sólo un vector de longitud 1 1055 00:58:29,640 --> 00:58:31,735 y en algún lugar entre el 1 y 31. 1056 00:58:31,735 --> 00:58:34,420 1057 00:58:34,420 --> 00:58:36,170 Y si no, lo sé algo ha ido mal. 1058 00:58:36,170 --> 00:58:40,280 Y decido parar allí antes de esto tiene golpe al azar sobre los efectos con el código de 1059 00:58:40,280 --> 00:58:44,190 que es más difícil de rastrear a través. 1060 00:58:44,190 --> 00:58:47,170 Así que esa es una de las posibles utilizar para la parada si no. 1061 00:58:47,170 --> 00:58:48,660 >> De todos modos, en Aceptar. 1062 00:58:48,660 --> 00:58:49,690 Así que ese es el final. 1063 00:58:49,690 --> 00:58:51,290 Muchas gracias por haber venido. 1064 00:58:51,290 --> 00:58:53,710 Yo soy un amateur en esto. 1065 00:58:53,710 --> 00:58:57,270 Así que lo siento si estás aburrido o confundido o lo que sea. 1066 00:58:57,270 --> 00:59:01,670 Estoy feliz de tener preguntas por correo electrónico en connorharris@college.harvard.edu. 1067 00:59:01,670 --> 00:59:07,230 Esto va también para todo el mundo viendo esto en directo o después. 1068 00:59:07,230 --> 00:59:10,190 También, aunque no estoy un TF, también soy muy 1069 00:59:10,190 --> 00:59:13,900 dispuesto a servir como un oficial asesor para cualquier persona que es 1070 00:59:13,900 --> 00:59:15,460 utilizando R en un proyecto final. 1071 00:59:15,460 --> 00:59:19,900 >> Si desea que, a continuación, sólo hablar con su TF 1072 00:59:19,900 --> 00:59:23,750 y luego me escriba un correo electrónico para Sé lo que estás trabajando 1073 00:59:23,750 --> 00:59:26,680 y para que pueda configurar reunión veces con usted si usted quiere. 1074 00:59:26,680 --> 00:59:27,990 Así que de nuevo, muchas gracias. 1075 00:59:27,990 --> 00:59:28,960 Espero que lo hayan disfrutado. 1076 00:59:28,960 --> 00:59:29,450 >> AUDIENCIA: [inaudible]. 1077 00:59:29,450 --> 00:59:30,617 >> CONNER HARRIS: Por supuesto. 1078 00:59:30,617 --> 00:59:34,910 >> AUDIENCIA: ¿Qué clase de proyecto sería un estudiante CS utilizar R para? 1079 00:59:34,910 --> 00:59:37,427 1080 00:59:37,427 --> 00:59:40,510 CONNER HARRIS: Así que si usted no está haces algo que es puramente en la minería de datos, 1081 00:59:40,510 --> 00:59:43,790 por ejemplo, y hay un montón de cosas 1082 00:59:43,790 --> 00:59:46,692 usted podría hacer con ese con los datos minería y aprendizaje automático. 1083 00:59:46,692 --> 00:59:48,900 Es posible que desee utilizar R para un componente de algo. 1084 00:59:48,900 --> 00:59:52,022 Me crié, en un principio, el ejemplo de si usted está escribiendo una página web 1085 00:59:52,022 --> 00:59:54,730 y desea ejecutar automatizado análisis estadístico de su servidor 1086 00:59:54,730 --> 00:59:57,990 registros en un cierto tiempo todos los días, eso podría ser algo que es 1087 00:59:57,990 --> 01:00:01,260 muy fácil de hacer en tan sólo una breve R script que puede programar 1088 01:00:01,260 --> 01:00:04,200 para ejecutar cada noche, por ejemplo. 1089 01:00:04,200 --> 01:00:06,550 >> Y estoy seguro que, si no hay ninguna razón por la que habría 1090 01:00:06,550 --> 01:00:11,520 quiero estadísticas o capacidades gráficas y tener esta carrera automáticamente en lugar 1091 01:00:11,520 --> 01:00:13,790 de tener que interactuar con las cosas en Excel, 1092 01:00:13,790 --> 01:00:16,750 por ejemplo, eso es algo es posible que desee utilizar R para. 1093 01:00:16,750 --> 01:00:21,190 Así que más preguntas antes de irme? 1094 01:00:21,190 --> 01:00:21,690 ¿No? 1095 01:00:21,690 --> 01:00:24,960 Muy bien, bueno, de nuevo, gracias gracias por venir. 1096 01:00:24,960 --> 01:00:29,417