Конър HARRIS: Still I че някои вълнуващо видео произведена от професионална консултация който използва R много в работата си. Разказвач: Какво се крие зад статистиката, на анализи и визуализациите че днешните учени-ярките данни и бизнес лидери разчитат на да направи мощни решения? Вие не може винаги да го видите. Но това е там. Тя се нарича R, с отворен код r-- на Статистически програмен език че експерти на данни в света повече от употреба за всичко от картографиране широка социална и маркетингови тенденции онлайн за развитието на финансовия и климат модели, които помагат на двигател за икономиките ни и общности. Но какво точно е R и откъде да започне R? Ами първоначално, R започна тук с двама професори които искаха по-добра статистическа платформа за своите ученици. Така те създават една моделирани след статистическата език S. Те, наред с много други, държат на работа и използването на R, създаване на инструменти за R и намиране нови приложения за R всеки ден. Благодарение на това е в световен мащаб усилия на общността, R продължиха да нарастват с хиляди на създадени от потребителя библиотеки, построени да се подобри функционалността на R и валидиране на качеството на тълпата и подкрепа от най-признатите индустриални лидери във всяка област, които използва R. Което е страхотно, защото R е най-добрият в това, което прави. Талантливи млади експерти бързо и лесно се тълкува, взаимодействат с, и визуализиране на данни, показващ тяхната бързо нарастващата общност на R потребители по целия свят и да видим как с отворен код R продължава да оформя бъдеще на статистическа анализ и науката данни. Конър HARRIS: OK, страхотно. Така че моята собствена презентация ще бъде малко по-трезвен. Той не включва толкова вълнуваща музика за фон. Но както видяхте във видеото, R е нещо на общ език за програмиране цел. Но то е създадено най-вече за статистическата работа. Така че той е проектиран за статистиката, за анализ на данните, за извличане на данни. И така можете да видите това в много избор на дизайн, че създателите на R направено. Той е проектиран за до голяма степен, хора, които не са експерти в програмирането, които са просто бране на програмиране на страната, така че те могат да вършат своята работа в социалните науки или в областта на статистиката или нещо такова. Тя има много много важни разлики от C. Но синтаксиса и парадигмите че той използва широко са еднакви. И трябва да се чувстват доста у дома правото на разстояние бухалката. Това е наложително език. Не се притеснявайте твърде много за това ако не знаете този термин. Но има разлика между наложително, декларативно, и функционални. Наложително просто означава, че можете да отчети, които са основно команди. И тогава преводачът или компютър тях следва една по една. Той е слабо написали, има Не декларации тип в R. И след това линиите между различни видове са малко повече, отколкото в насипно състояние те са в ° С, например. И както казах има много широки възможности за графики, за статистическа анализ, за ​​извличане на данни. Това са двата вградени в език и, като видеото каза, хиляди библиотеки на трети страни, които можете да изтеглите и използвате безплатно с много либерални условия за лицензии. Така че като цяло, бих препоръчал че се вгледате в тези две книги ако ти започваш да работят на R. One от тях е официален R начинаещи направлява. Той е поддържан от основните разработчици на R. Можете да го изтеглите отново, свободен от зареждате и законно в тази връзка съществува. Всички тези слайдове ще отидат нагоре в интернет, на CS50 сайт След това се прави. Така че няма нужда да копирате нещата надолу трескаво. Другият е учебник по Козма Shalizi, който е професор в статистиката Carnegie Mellon, наречена Advanced Data Анализ от Начални Гледна точка. Това не е основно на R книга. Това е една книга, статистика и това е анализ на данните книга. Но това е много достъпна за хора, които имат поне малко статистика знания. Аз никога не са взели официално разбира се. Просто знам, бита и парчета от различни съюзнически теми че съм направил курсове инча И аз бях в състояние да се разбере то много добре. Всички са дадени цифрите в R. Те са изработени в R и те също имат кодови обяви под всяка цифра, която ви кажа как се правят всяка фигура с R-код. И това е много полезно, ако която се опитвате да подражават някоя личност, което виждате в една книга. И отново за сваляне безплатно stat.cmu.edu/cshalizi/ Съжаляваме, че трябва да се намали Тилда cshalizi. Ще се погрижа да се коригира, че когато официалните слайдовете вървят нагоре. / ADAfaEPoV който е само на акроним на заглавието на книгата. Така че като цяло caveats-- R има много възможности. Аз само ще бъде в състояние да покрие повърхността на много неща. Също като първата част на семинара ще бъде нещо като сметище данни. Аз съм доста съжалявам за това. По принцип, аз отивам да се ви запозная с много неща правото на разстояние бухалката, ще възможно най-бързо. И тогава стигаме до най-забавната част, което е демото, където мога да ви покажа всичко че сме говорили за по екрана. И вие можете да си поиграете на собствения си. Така че там ще бъде много технически неща се изхвърля нагоре от тук. Не се притеснявайте за копиране на всички, че надолу. Тъй като A, можете да получите всички неща на сайта на CS50-късно. И B, това не е наистина толкова важно да запомни това от слайдовете. По-важно е, че можете да получите някои интуитивен съоръжение с него и че идва от само играя наоколо. Така че защо да използвате R? По принцип, ако имате проект, който включва добив на големи масиви от данни, информация визуализация, вие трябва да използвате R. Ако сте правене на сложни статистически анализи, че би било трудно в Excel, например, би да бъдат също good-- ако правиш статистическа анализ, който е автоматизирано. Нека кажем, че поддържането на интернет страница. И искате да прочетете дневника на сървъра всеки ден и събират някои списък, като най-добрите страни, които Вашите потребители идват, някои обобщени статистически данни за колко време те харчат за вашия сайт или каквото. И вие искате да стартирате това всеки ден. Сега, ако правиш това в Excel, ще трябва да отидете на вашия сървър лог, внасят, че в едно Таблица Excel данни, тече всички анализа ръчно. С R, можете да напишете един скрипт просто. График тя да тече всеки ден от вашата операционна система. И след това всяка вечер в 2:00 AM, или когато сте го планирате да тичам, тя ще изглежда през вашия интернет трафик за този ден. И тогава, като на следващия ден, вие ще получите този лъскав, нов доклад или каквото и с всички информация, която поиска. Така че основно R е за Cisco програмиране в сравнение Cisco анализ. Предварително е направено. Нека влязат в истинските неща. Така че има три недвижими типове в езика. Има цифров тип. Има нещо като разлика между числа и плаващи точки, но не съвсем. Има един герой написали, което е струни. И има логична написали, което е Булев тип. И вие можете да конвертирате между типове използването на тези функции, цифров, като характер, като логично. Ако се обадите, например, с цифри, като на низ, тя ще се опита да прочете, че низ като брой, по същия начин, че a2i и scanf направи, и C. Ако ти се обадя като числова на истина или лъжа тя ще се превърнат в 1 или 0. Ако се обадите по характер за всичко това ще конвертирате, че в низ. И тогава там са вектори и матрици. Така вектори са основно 1 масиви. Те са това, което ние наричаме масиви в C. Матрици, 2 масиви. И след това по-висока масиви можете да има 3, 4, 5 или каквото и размери на числови стойности, от низове, на логическите стойности. Можете също така да разполагат със списъци, които са един вид асоциативен масив. Аз ще вляза в тази малко. Така че едно важно нещо че хората пътувания в R е, че не са налице реални, чисти атомни видове. Няма никаква разлика между действителното редица, като числова стойност, както и списък на числови стойности. Числени стойности са всъщност Същото като вектори на дължина 1. И това има редица важни последици. One, това означава, че можете да направите нещата много лесно, които включват като добавяне на номер към вектор. R ще основно фигура какво искаш да кажеш с това. И аз ще стигнем до това в секунда. Това означава също така, че няма начин за типа checker-- до степен че нещо подобно съществува в r-- да кажа когато сте преминали в единния стойност когато тя очаква масив или обратното. И това може да доведе до някои странни проблеми, които се натъкнах, когато Бях с R по време на моята работа през лятото. И няма никакви смесен тип масиви. Така че не може да има множество бяха Първите елементи се, аз не знам, низа "John" и Вторият елемент е номер 42. Ако се опитаме да направим това, тогава вие ще получите всичко просто се превръща в низ. Така че ние имаме низ John, низ 42. Така необичайно синтактична features-- най- на R синтаксис е много подобен на C. Има няколко важни разлики. Писането е много слаб. Така че няма никакви декларации на променливи. Възлагане използва странното Операторът грешка по-малко от тире. Коментари са с марката на хеш. Предполагам, че сега дни ние го наричаме таг макар, че не е наистина не accurate-- двойната черта. Остатъци Модулни са с %% знаци. Integer разделение е с% /%, което е много трудно да се чете, когато е проектирана на екрана. Можете да получите диапазони на числа с дебелото черво. Така че 2,5 ще ви дам един вектор на всички числа от 2 до 5. Масивите са една-индексирани, които винтове много хора нагоре, ако те са от по- типични езици за програмиране, като C, където най- нещата са нулеви индексирани. Отново, това е мястото, където R е наследство като език за подобно не професионални програмисти идва инча Ако сте социолог или икономист или нещо и вие се опитвате да използвате R основно като допълнение да си по-важен професионална работа, започваш да се намери една индексиране на малко по-естествено. Тъй като започнете да броим към 1 в ежедневието, а не 0. За-линии, това е подобно на на foreach изгради в PHP, които вие ще получите, за да научите in-- съвсем скоро. Кое е за стойност в вектор и След това можете да правите неща с стойност. АУДИТОРИЯ: Това е дошъл в лекция. Конър HARRIS: О, това е излезе лекция, отлична. АУДИТОРИЯ: Заданието, че е трябва да се отбележи, от дясно на ляво? Конър HARRIS: От дясно на ляво, да. Можете да мислите за него като стойността на правото блъсна в променливата наляво. АУДИТОРИЯ: OK. Конър HARRIS: И накрая синтактична функция е малко странно. Имате на Mt. на името на функцията, назначена към тази дума функция, следван от всички аргументи и след това тяло на функцията след това. Отново тези неща може изглежда малко странно. Те ще станат втора природа след работите с езика за малко. Така вектори, начина можете конструира вектор е ли тип C, което е ключова дума, а след това всички числа, които искате или струни или нещо такова. Аргументите да бъдат вектори. Но в резултат на масива получава повален. Така че не може да има масиви, където е някои елементи са единични номера и някои елементи са самите масиви. Така че, ако се опитате да се конструира масив са първият елемент е 4 и вторият елемент е 3,5 масив ще просто се три елемента масив, 4,3,5. Те не може да бъде от смесен тип. Ако се опитате да четат или пишат извън пределите на вектор вие ще получите тази стойност, наречена NA а което е съкращение от липсваща стойност. Това е предназначено за като статистици, които Работим с непълни данни. Ако приложите функция, която е трябвало да вземе само един номер към масив След това, което ще получите, толкова по- функция ще очертае над масива. Така че, ако си функция да речем отнема номер и го връща кв. Можете да прилагат тази масива 2,3,5 Какво ще получите е масива 4,9,25. И това е много полезно защото това означава, че вие не се налага да пиша за вериги за справя много прости неща, като се прилага функция за всички членове на набор данни. Което, ако работите с голям набори от данни, които трябва да се направи много. Двоични функции са приложни влизане чрез вписване. Аз ще вляза в тази. Можете да получите достъп до тях с масиви или вектори с квадратни скоби. Така че името вектор квадратни скоби 1 ще ви даде първия елемент. Име Vector квадратни скоби 2 ще ви даде на втория елемент. Можете да давате на вектор на индексите и ще се върна от основно под фактор. Така че можете да направите вектор име скоби C, 2,4 и ще се измъкнем вектор, съдържащ на втория и четвъртия елементи на масива. А ако искате просто обобщено статистика на вектор като интерквартилен диапазон, средната, максималната, независимо, можете просто да напишете резюме Име на вектор и се получи, че навън. Това не е наистина полезно в програмиране, но ако играете около масивите от данни, това е удобен. Matrices-- основно високи масиви. Те имат тази специална нотация синтаксис. Matrix с масив, който получава попълнено in-- Съжалявам, матрица с данни, брой редове, брой колони. Когато имате някои данни, той попълва масива основно става отгоре надолу на първо място. Тогава ляво на дясно. Така, така. И R е построен в матрични умножения, спектрален разлагане, diagonalization, много неща. Ако искате по-високи измерения масиви, така че 3, 4, 5, или каквото и размери, можете да направите това. Синтаксисът е масив мъждивата равнява с, след списъка на размерите. Така че, ако искате по 4 мерен масив с размери 4, 7, 8, 9, масива, мъждивата равнява в (4,7,8,9). Можете достъп единични стойности с брекети първото влизане запетая втория пост. Можете да получите целия филийки на редове или колони. С тази непълна синтаксис това е Просто ред номер със запетая или запетая колона номер. Така списъци са един вид, свързан масив. Те имат собствен синтаксис тук. Отново не трескаво копирате всичко това надолу. Това е просто, така че хората преминавайки през слайдовете по-късно имаме всичко това в хубава справка. И това ще стане много естествено веднъж Аз всъщност ходи през демоса. Така изброява основно свързани масиви. Можете да получите достъп до стойности с Име на списъка, знака за долар, ключ. Така че, ако вашия списък е кръстен Foo, След това можете да получите достъп до него по този начин. Можете да получите цялата ключ-стойност двойка чрез преминаване в индекса на квадратен скоба. Ако четете от несъществуващ ключ, вие ще получите нула. Тя няма да грешка. Работата е там, R ще направи, както много с нищожна, тъй като може. И това може да означава, че ако сте Не очаквах да се получи нула навън на някои списък за четене, вие ще получите някои непредвидими грешки по-надолу линията. Това се случи на мен ми сезонна работа през лятото, когато бях с R където съм променил начина, определен списък е определена на едно място но не се промени по-късно през код, който чете стойности от него. И така, това, което се случи, беше Бях четене нула стойности от този списък, прекарването им в функции, и е много объркана когато имам всички видове произволни безкрайности пълзят в тази функция. Защото, ако се прилага определена максимална или минимални функции за нищожна, вие ще получите безкрайно стойности навън. Рамки за данни, те са подклас на списъка. Всяка стойност е вектор със същата дължина. И те се използват за представяне, основно, таблици с данни. Има тази инициализация синтаксис. Това ще всички отново да бъде много по-ясна, когато стигнем до демото. И хубавото кадри от данни е, че сте може да даде имена на всеки колоните и имената на всички редове. И така, това прави достъпа до ги малко по-приятелски. Също така това е как повечето функции, които Прочети в електронни таблици Excel данни от или от текстови файлове, например, ще прочетете в техните данни. Те ще го сложи в някакъв вид данни рамка. Така functions-- функциите синтаксис е малко странно. Отново това е името на функцията, възлага, тази ключова дума функция и след това списъка от аргументи. Така че има някои хубави неща за това как функции работят тук. От една страна, всъщност можете да зададете приети стойности за някои аргументи. Така че може да се каже R1 equals-- може да се каже Foo е функция, където R1 равнява нещо по подразбиране, ако потребителят се уточнява без аргументи. В противен случай, това е, което той постави инча И това е много удобен защото много от нашите функции Трябва често десетки или стотици аргументи. Например тези за заговор графики или заговор разсейване има доводи, които контролират всичко от титлата, а оста етикети до цвета на регресионни линии. И така, ако не искате да накара хората да уточнят всеки един от тях стотици аргументи контролиране на всеки един аспект от парцел или регресия или каквото и да, това е хубаво да има тези стойности по подразбиране. И тогава всъщност можете да напиши като те видях тук. Или намери по-добър пример за това. Когато се обадите функции всъщност можете да им се обадя, използвайки име на аргумент. Така че тук е един пример за матрицата конструктора. Отнема три аргумента. Обикновено имате данни, който е вектор. Имате N ред, които е броят редове. Имате N cols-- брой колони. Работата е там, ако сте написали N ред е равен на каквото и и N цв равнява каквото и когато се обаждате на тази функция, всъщност можете да ги обърне. Така че можете да сложите N цв първо и N ред второ и той ще направи никаква разлика. Така че това е една хубава малка особеност. Знаете внос и износ. Това може да стане, по същество. Има и съоръжения, за да напишете произволна R възразява двоичен файл и след това да ги прочетете отново по-късно. Кое е по-удобно, ако сте прави голяма интерактивна сесия R и вие трябва да запазите нещата много бързо. По подразбиране R има работна директория че файловете се изписват в и прочетете отново от. Можете да видите, че с getwg, променете го с setdw. Нищо особено интересно тук Така че сега реалните статистически данни stuff-- многопараметричен регресия. Така обичайната синтаксис е малко по-сложно. Моделът е голям обект, основно. Той получава назначен LM, което е функция повикване. Първият елемент, ш Тилда x1 плюс каквото. Синтаксис My тук е малко объркващо. Аз съм доста Съжалявам, това е стандартен начин че по компютърни науки книги правят това. Но това е малко странно. Така че основно, това е л.м. скоби, първа позиция е variable-- Съжалявам, зависим променлива Тилда x1 x2 плюс плюс Въпреки това много от независим променливи, които имате. И след това те могат да бъдат или вектори, всички с еднаква дължина. Или те могат да бъдат колона хедъри в рамката на данни че просто зададени в Вторият аргумент данни рамка. Можете също да укажете по-сложна формула така че не е нужно да се линейно регрес на една зависима променлива, или един вектор на по-рано съществуващото вектор. Можете да го направите, например, вектор компонент у квадрат плюс 1 и регрес, че се изправя срещу влезте от някакъв друг вектор. Можете да отпечатате резюмета на модел с тази команда, наречена summary-- просто обобщение parens модел. Отново нещо друго, което трябва да се изясни. Нещо друго, което ще се коригира когато стъклата се изкачат в интернет. Ако просто искате да се изчисли проста корелация можете да използвате корелация вектор 1 вектор 2 функция ядро. Метод е по подразбиране Pearson корелации. Това са стандартните които можете да направите. Има също така и Спиърмън Kendell корелации които са сред разнообразие от ранг корелация ред. Ами те не изчисляват продукт моменти между самите вектори, но на класиране поръчки на вектора. Ще ти обясня по-късно. АУДИТОРИЯ: Quick въпрос Конър HARRIS: Разбира се. АУДИТОРИЯ: Така че, когато сте изчисляване за простите корелациите направя можете да приемем, че има статистическа значение за връзката? Конър HARRIS: Не е нужно да. Един л.м. е основно само една машина. Това ще отнеме от две неща и той ще изплюе Коефициентите за най-добре линия. Той също така съобщава, стандарт грешки на тези коефициенти. И това ще ти кажа, като е отрязъкът статистически значима или разликата от 0. Дали склон на най-добрия годни линия статистически различно от нула, и така нататък. Така тя приема нищо, аз мисля, Най-добре е отговор на въпроса си. ДОБРЕ. Plotting-- така, че основната причина, че трябва използвате R, като многопараметричен регресия. По принцип всеки език има някои съоръжение за това. И синтаксис честно R за регресия е малко тайнствена. Но заговор е мястото, където тя наистина блести. Функцията за кон е парцел и отнема два вектора, х и у. И тогава елипсите стендове за много голям брой допълнителни аргументи, които контролира всичко от заглавия в цветове на различни линии или различни точки, вида на парцел. Можете да имате разпръсна строителство или договорени за строителство. [Недоловим] 2 вектори със същата дължина. Можете да го предшестват с прикачите данни рамка във вашия скрипт. И това ще ви позволи да използвате само колона хедъри, вместо отделни вектори. Можете да добавите най-добрите линии годни и местно кривите на регресия към вашата графика. Тези команди, изброени Оттук аб линия и линии, По подразбиране те се писмено в поп-нагоре прозорци защото тя предполага, че вие използвате R интерактивно. Ако не сте се може напиши два файла, които са в наистина всеки формат, който искате. За съжаление, имам правописна грешка Току-що разбрах. Ако искате да отворите друго графично устройство можете да използвате тази функция, наречена PNG или JPEG или много други графични формати. И вие можете да пишете на графики каквото и име на файл сте задали. За да отмените, че трябва да use-- Аз не пиша това в slide-- но има функция, наречена Дев точка на разстояние, което отнема без аргументи. Тогава там са съоръжения за 3D чертане и за нанасяне контур ако искате да се графики на две независими променливи. Аз няма да отида в тях точно сега. Има и някои съоръжения за анимация тези, които обикновено са поддържани от трети лица. Аз направих анимации с R графики, но аз не съм използвал тези от трета страна библиотеки. Така че аз наистина не може да удостовери до колко са добри. Това, което аз препоръчвам, ако искате да направят анимации използващи R се можете да напишете всички рамки за анимациите и след това можете да използвате program-- трета страна типични такива се наричат ​​FFmpeg или ImageMagick-- да бод всичките си кадри в една анимация. Така че време за демо. Така че, ако използвате някоя Unix система, подобна на което е Linux BSD, но който използва BSD. OS X отворете терминален прозорец и Типове R в командния ред. Ако имате R студио или подобни, които също работи. За потребителите на Windows трябва да бъде в състояние да намери R във вашето меню Start. Трябва да се нарича нещо като R x64 3 точка каквото. Отворете, че там горе. Така че сега ме пусне само отворете терминален прозорец. Добре, търсене. АУДИТОРИЯ: Command-Space Конър HARRIS: Command-Space, благодаря ви. Аз не обикновено използват Mac-ове. Terminal, покаже нов прозорец. New прозорец е настройки основни, R. Така че вие ​​трябва да получите приветствено съобщение, нещо подобно на това. Така че аз съм с R интерактивно. Можете също да напишете R скриптове, разбира се. Основно се изпълняват скриптове точно същия начин, както ако седяхте пред компютъра пишете във всяка линия един по един. Така че нека да започнем, като вектор. Една стрелка с 1, 2. 1, 2, 4. OK, разбира се. Аз може да направи по-голям размер на шрифта. АУДИТОРИЯ: Command-Plus Конър HARRIS: Command-Plus. Command-Plus. Добре, как е това? Добър? ДОБРЕ. Така че нека да започнем от обявява списък на вектор. Направете, стрелка, C 1.2.4. Ние можем да видим. Не се притеснявайте за конзолата там. Скобите са така че ако разпечатате много дълги редици, ние можем къде се намирате. Един пример ще бъде, ако аз Просто искам диапазон 2-200. Ако аз отпечатани много дълго масив, конзолите са просто толкова мога да продължа следите на която индекс ние сме от това, ако аз търся чрез това визуално. Така или иначе, ние имаме. Така казах и преди, че масиви взаимодействат много добре с, например, унарен операции като тази. Така че това, което мисля, че ще получите, ако пиша плюс 1? Да. Точно така, сега аз ще направя този различен спектър. Да речем, б в 20,40, 80. И така, какво мислите тази команда ще правим? Добави елементите. И така, в общи линии това е, което го прави. Така че това е доста удобно. Така че аз как за да направя това. ° С е, да речем, 6 пъти от 1 до 10. Така че това, което правя аз искам да видя съдържаща се, как мислиш? Така че всички кратни на шест. Сега, какво мислите ще се случи, ако го направя? Ще направя това малко по-ясно, C, C. Така че това, което се случва, което правите мисля, ако мога да направя това? плюс гр. [Недоловим] АУДИТОРИЯ: Или грешка или да го просто добавя първите три елемента. Конър HARRIS: Не съвсем. Това е това, което имаме. Какво се случва, е по-къс масив, а, имам карах. Така че ние имаме 124, 124, 124. Да. И в общи линии, можете да видите това поведение преди, плюс 1, като подклас на този проблем, където най-краткия масива е само броя 1, който е един масив. Аз просто се казва вектор всички времето, вместо масив, защото това е, което на R документация обикновено прави. Това е вкоренено в навик. OK, и така сега имаме този масив. Така че ние имаме този масив, гр. Можем да получим обобщение статистика за в, обобщена в. И това е хубаво. Така че сега нека да направим някои матрични неща. Да кажем, че m е матрица. Нека си го направи по три една. Така nrows равнява на 3, и ncols равнява 3. И за данни нека do-- и какво от това мислите ли, че това ще бъде направено? Точно така, това е следващата. Това е nrow и ncolumn. Така че това, което съм направил е Нямам Обявен е за по три матрица и съм преминал през девет масив. Така логаритъм на всички елементи един през девет. И всички тези ценности изпълват нагоре по array-- съжалявам? АУДИТОРИЯ: Тези са базови 10 трупи? Конър HARRIS: Не, дневник е натурални логаритми, така базова д. Да, ако искате база 10 дневник, мисля, че ще трябва да влезете независимо, разделено на лог 10. И така данните от [недоловим] само запълва масива, така че горе до долу, след това от ляво на дясно. И ако искаш да направиш някакъв друг масив, нека да кажем, п е матрица. Нека да направим, аз не знам, 2-13. Или аз ще направя нещо по-интересно. Ще направя 2-4. nrow равна, да речем, 3. Ncol равнява 4. п. Така че ние имаме това. И сега, ако искаме да се размножават тези, ние ще направим п сто пъти процента, защото това е п. И ние имаме матрични продукти. Чрез тях начин, видя ли как когато бях обявен за п, на 2 до 4 вектор имам карах, докато запълниха всички п? Ако исках да взема собствена стойност разлагане, това е нещо, което можем да направим много лесно. Ние можем да направим характерно п. И така, това е първата ни сблъскате със списък. Така характерно п е даден списък с два ключа. Стойности, което е този масив тук. И вектори, които е този масив тук. Така че, ако искате да извлечете, да речем, тази трета колона от собствени вектори на матрицата, тъй собствените вектори са колона вектори. Така че ние можем да направим ВЕЦ характерно п знака за долар вектори, запетая 3, на [недоловим]. Vec. Е, че, както може да се очаква. След това кажете п пъти процента пъти ВЕЦ. Така резултатът тук със сигурност изглежда като ако ние зае трето собствена стойност тук, което съответства третата собствен вектор. Тя просто се умножава всичко в тази собствен вектор, компонент-мъдър, от собствена стойност. И това е, което бихме могли да очакваме, защото това е, което собствени стойности са. Има ли някой тук не взети линейна алгебра? Няколко души, OK. Просто включете вашите мозъци разстояние за малко. И наистина, ако вземем характерно п знак за долар стойности 3 пъти VEC, добре се получи едно и също нещо. Той е форматиран по различен начин като ред вектор вместо вектор колона, но голяма работа. И така, тези, които са в основата на хубаво неща, които можем да направим с матрици, демонстрирани списъци. Аз трябва да демонстрира хубаво неща за функции, както и. Така че нека да say-- [недоловим] функция, разговор нека да тя функция против функция п п squared-- Всъщност, това всъщност не е най-добрия. а, б, а на квадрат плюс б. Така че едно нещо за функции, отново, е те не се нуждаят от ясни изявления за връщане. Така че можете да just-- на Последното твърдение оценена ще бъде на изложението се върна, или стойността върната. Така че в този случай, ние сме само оценяване една декларация, а на квадрат плюс б. Това ще бъде върнатата стойност по подразбиране. Никога не боли да се постави в върнете изрично стойности, особено ако сте се занимават с функция на много сложна логика тече. Но не е нужно да ги. Така че сега можем да направим функция 5, 1, и Това е в общи линии това, което очаквате. Нещо друго, което можем да направим, всъщност можем да направим функционален б е равно на 1, а се равнява на 5. Така че, ако ние, посочете кои номер тук, които аргумент отива в които аргумент във функцията, можем да флип около тези стойности, където искаме. АУДИТОРИЯ: Има ли причина да го напиша с б равнява за разлика от само с помощта номерата и запетаята? Конър HARRIS: Да, обикновено направите това, ако имате функции с много аргументи. Това често може да бъде като знамена, че вие ​​само ще искате да използвате в редки случаи. И по този начин можете да сте only-- може да се отнася до конкретните доводи че искате да използвате стойности не са по подразбиране за, и не е нужно да се напишат куп знамена равнява невярна след тях. Или мога да напиша това отново с стойност по подразбиране като б е равно на 2. И след това не можех да направя е функция, Ще направя 4, 1 и този път. И 17, което е с 4 на квадрат плюс 1, както може да се очаква. Но аз също може просто наричаме това с функция 4, и аз ще получа 18, защото Аз не уточни б. Така б получава стойността по подразбиране на 2. ОК, така че сега, ако сте след заедно с демото, въведете този ред на ваше командване подкани и да видим какво идва. Всъщност, не прави това. Въведете този. Трябва да се получи нещо подобно. Така mtcars е вградена данни определен за тази демонстрация цели, които идва with-- който идва в по подразбиране с вашата дистрибуция г. Това е компилация от статистиката от а 1974 брой на списание Motor Trend е по редица различни модели автомобили. Така че има мили на галон, cylinders-- Забравям какво еднокр is-- конски сили. Вероятно. Ако просто Google MT автомобили, След това един от първите резултати ще бъде от официална документация г и ще обясня всички тези полета с данни. Така теглото is-- т е теглото на автомобила в т. Q сек е времето на четвърт миля. Така че сега можем да направим някои забавни неща около MT автомобили е поле за данни. Така че ние можем да правим неща, като имена ред, MT автомобили. И това е списък на всички редове в данните, които са имената на автомобили. Ние можем да направим colnames, MT коли тази. Ако направя MT автомобили, под-числения индекс, като 2. получаваме втората колона от това, което би било цилиндри. АУДИТОРИЯ: Какво направихте? Конър HARRIS: Написах м-т скоби автомобили, д, който ми даде Второто колона от автомобили MT. Или ако искаме един ред, мога да объркате mtcars със запетая 2, например. Друг кръг 2 запетая, като това. И това отива във вашия ред. Това тук просто ви дава колона, но колона като вектор. Току-що разбрах сега Забравих да докаже, някои готини неща за вектори които можете да правите с индекси. Така че нека да го направя точно сега. Така че нека да се направи в gets-- извеждайки тази на pause-- 2 пъти от 1 до 10. Така че в е просто ще бъде вектора 2 до 20. Мога да взема елементи като този, c2. Аз може да премине във вектор като този, c-- ме пусне използвате различно име, отколкото с, като ВЕЦ гр. По принцип, аз съм правиш това, за да не се получи объркан между гр като строителство функция вектор, и след това в като име на променлива. Vec скоби гр 4, 5, 7. Това ще ми излезе на четвърто, пето, и седем елементи на масива. Мога да направя ВЕЦ, сложи в негативна индекс, като отрицателна 4. Това ще ме измъкнеш това с Четвъртият елемент отстранява. След това, ако аз исках да направя филийки, Мога да направя ВЕЦ 2 до 6. 2 на колона 6 е просто още вектор, който е 2, 3, 4, 5, 6. Изплюва това. Така или иначе, обратно към МТ автомобили. Така че нека да се направят някои регресии. Да речем, модел gets-- нека си линейно regress-- аз не знам. Първо нека да прикачите mtcars, разбира се. Така [недоловим] модел л.м., нека да регресират мили на галон на Тилда тегло. И тогава данни рамка е mtcars. Така обобщение модел. ОК, така че това изглежда малко сложно. Но в основата си, виждайки, като че ли сме опитам да изразя мили на галон като линейна функция на тегло, След това имаме тази линия тук, която прихваща при 37.28. 37.28 ще бъде теоретичните мили за галон кола, която тежи нула. И тогава за всеки допълнителен тон, ви свалям около пет мили на галон на разстояние от това. И на тези коефициенти ви да видим, стандартни грешки там. И те са много статистически значима. Така че можем да бъдем много сигурно 1 е 10 до 10 отрицателен. Така че 1 пъти нещо, което да е отрицателен 10, че ако се направи по-тежка кола, тя ще има по-лоши мили на галон. Или можем да тестваме някои друг модел. Като вместо регресиращи тази на тегло, нека си го регрес на регистър на тегло, защото може би ефективното тегло на пробег по някакъв начин не е линейна. Това ни даде г квадрат на 0.7528. Така че нека да опитаме това. Този път нека да направим едно различна променлива, също. Model2. Така обобщение, model2. Добре, така че веднъж, ние Трябва ни най-добро напасване линия тук. И това time-- това се казва, основно, че всеки път, вие увеличаване на теглото на кола с коефициент от д губите това много мили на галон. И така, този път нашата остатъчната стандартна грешка it--, че не е от значение, наистина. Остатъчното стандартната грешка е основно само стандартната грешка че ти остава, след като сте отнеме тренд линията. И нашата R квадрат тук е 0.81, което е малко по-добре от това, което имахме преди, 0.52. И така, нека сега да добавите Терминът за тази регресия. Така че нека да регресират мили на галон както на дневника на тежестите и, нека да направим, р мили, четвърт миля време. OK, тя трябва да има the-- наред, qsec. Qsec. Actually-- съжалявам, какво от това? Нека да наречем това нещо друг освен model2. Нека да наречем този model3. И така, сега можем да направим обобщение model3. И така, отново, това е в общи линии какво може да се очаква. Имате положителна отсечка. Ефективното увеличаване тегло е отрицателна. И ефективното увеличаване на времето четвърт миля е положителен, но все пак по-малко от теглото. Сега интуитивно, можете да придаде смисъл на това, като казва мисля за спортни автомобили. Има една много бързо ускорение, много кратко време четвърт миля. Те също така ще използва повече газ, като има предвид по-разумно коли вървят да има по-бавно ускорение, високи пъти четвърт миля, и да използват по-малко газ ,, така високи мили на галон. Страхотен. И така, сега е време да парцел нещо подобно. Така че нека да do-- така гола кости можем да направим plots-- защото съм прикрепен тази рамка данни before-- просто не можем да направим за строителство, т мили на галон. Направи това малко по-големи. Има, ние основно имат разпръсна парцел, но точките са малко трудно да се види по този въпрос. Не си спомням какво импровизирано синтаксис е за промяна на парцела. Така че предполагам, че това ще бъде добро време, за да изведете, има една много хубава вградена помощ функция, помощ кавички функционират име. Ние ще доведе до основно нещо, което искате. Мисля, че действително ще направи това Тип равнява р за точки за строителство. Знаете, че се промени ли нещо? И не, не съвсем. Всичко е наред. По някаква причина, когато го направих това на собствения си компютър, преди известно време, всички разпръсна точки са много по-ясни. Във всеки случай, са разпръсна вида на видима? Има един там. А малцина, а малцина. Можете да ги видите нещо, нали? Така че, ако искаме да добавите най-добро напасване линия до този парцел тук, което е малко гола bones-- нека да го направи малко по-хубав. Main равнява спрямо теглото. Мили на галон. Отново можете да видите колко полезно незадължителни аргументи са тук с също Не се налага да постави нещата в определен ред с клавишни доводи когато имате бизнес, защото те отнеме много аргументи. Xlab равнява на теглото, тегло, т. Всичко е наред. OK, да, това устройство се е малко досадно. Но можете да видите нещо там горе, има заглавие графика на страната. Насам there's-- на дъното тук има ос етикети. Не помня импровизирано какви команди ars-- какви функции са да се увеличи размерът на тези етикети и заглавия, но те са там. И така, ако искаме да добавете най-добре линията, бихме могли да направим нещо like-- I имат следния синтаксис написано тук. Така че не забравяйте, че ние просто добавете модел беше мили на галон, тегло, mtcars. И така, ако исках да добавите най-добре линия, което можех да направя, а, б линия модел. И бум, ние имаме най-добро съвпадане на линия. Това е малко трудно да се видим отново. Аз съм доста съжалявам за технологични трудности. Но той работи основно Горе в ляво долу в дясно. И ако скалата бяха голяма, можете да видите че пресечната е това, което можете, намерите от обобщените статистически данни за ако напишете резюме модел. ОК, така че аз се надявам всеки получава нещо, от чувство за това, което R е, това, което е добро за. Може да се направи много по-хубав, отколкото за бизнес това на свой собствен път, ако искаш. Така че интерфейсът на чуждестранна функция. Това е нещо, което не е типично покрит с встъпителни лекции или уводна нищо за отс. Това не е вероятно, че ще се нуждаят от нея. Въпреки това, открих, че е полезен при моите собствени проекти в миналото. И там не е добре урок за него онлайн. Така че аз съм просто ще всичко, което се втурне през тази и след това сте свободни да си тръгне. И така чуждото функция интерфейс е това, което можете да използвате, за да се обадя, за да видите функции с R. Вътрешно, R е построен върху аритметична C. R е само 64-битов аритметика с плаваща точка C е, която е тип двойно [недоловим]. И вие може да искате да направите, това за един куп причини. От една страна, R се тълкува, че е не компилира до машинен код. Така че можете да пренапише си вътрешни линии в C и след това да получите предимството на използването R. Подобно това е малко по-удобно, отколкото C. Той има по-добри графики съоръжения и какво ли още не. И докато все още е в състояние да получи максимална скорост от вътрешните контури, което е мястото, където можете наистина нужда от нея. Повторно използване на съществуващите C библиотеки, това е важно също. Ако имате някаква C библиотека за харесват, Аз не знам, трансформации на Фурие, или някои много Archean използва процедура статистика в висока енергийна астрофизиката или нещо, аз не знам. Енергийно астрофизиката дори не е мозъчен, мисля. Но можете да направите това вместо да се налага Напиши родния R порт от тях. И на the-- и отново, като, ако Погледнете в повечето от стандартните библиотеки на R, на вътрешността, вътрешността са възнамерявате да използвате чужд функция намесвам много широко. Те ще имат неща като Фурие трансформира или изчислителна корелация коефициенти, написани на C, и те ще Просто трябва R обвивки около тях. Интерфейсът е малко трудно. мисля нейната трудност е преувеличена в Много от инструкциите, които ще намерите. Но независимо от това, че е малко объркващо. И аз не съм бил в състояние да намери добър урок за това, така че това е точно сега. Отново, това цял сегмент е повече за последващи справки. Не се притеснявайте за копиране всичко надолу точно сега. Така следните инструкции са за Unix-подобни системи, Linux, BSD, OS X. Аз не знам как това работи на Windows, но моля, просто не си върши окончателния проект на Windows. Вие наистина не искам да. Unix е много по-добър набор за случайни програмиране. Така че, общо взето чуждестранна функция интерфейс. Ако искате да напишете C функция за използване с R, тя трябва да вземе всички аргументи като указатели. Така че за отделни стойности, това означава, че е посочи стойността. За масиви, това е указател на първия елемент, който е какви имена масив означават в действителност. Отново, това е нещо, което трябва да има доста напълно надолу след р зададете пет. Имена масиви са само указатели на първия елемент, Типът на плаваща точка е двойна. И си функция трябва да се върне за невалидни. Единственият начин, че да може всъщност кажа R какво се е случило е чрез промяна на паметта, че R е дал да го чрез външна функция интерфейс. Така че аз съм писал това Например тук, това е функция, която изчислява ползване точка продукт на два вектора. Това отнема два аргумента, vec1, vec2, които са самите вектори, и след това N, което е дължина, защото отново, R е построен през [недоловим], за да разберете дължината на вектори, но В не. В C, вектори е произволно разграничена парче от паметта. Така че начина, по който можете да изчисли дот продукти е просто зададете този параметър се на нула и след това чрез обхождане от 1 до п звезда, защото п е указател към дължината, просто добавете нещо, което да това се параметър. И това може да бъде добра практика ако ти започваш да се направи това да напише две отделни функции C. Един от тях has-- Един от тях просто отнема аргументите и видовете че те обикновено ще бъде в C. Така Отнема масив аргументи като указатели. Но аргументи единична стойност, като п, тя просто приема като стойности от копие, без указатели. И след това не го прави [Недоловим] от показалеца. И тогава може да има различен, в общи линии, обвивка функция, която в общи линии дръжки на изискванията на чуждестранното функция намесвам за вас. Начинът, по който наричаме това в R е, веднъж като сте си функция написан на C, изпишете R ПМС shlib, R команда споделена библиотека, Foo точка с, или каквото името на файла е, и операционната система не плащам в R терминал. И това ще създаде библиотека, наречена Foo Дот така. А след това можете да го заредите в нашия скрипт или интерактивно с командния DYN дот натоварване. След това е функция в R, наречена точка в. Това отнема аргументи, които са първо името на функцията в С който искате да се обадите. И тогава всички параметри за тази функция, те трябва да са в правилния ред. Трябва да използвате този тип принуда функции като цяло число, като двойна, тъй като характер, и като логично. И тогава, когато тя се връща на списък, който отново е просто асоцииран масив на параметър имена и стойностите след като функцията е свършила. Така че в този случай, защото има точка про доводи vec1, vec2 и INT п, п навън. До точка, в точка ние имаме про, името на функцията ние се обаждате, vec1, vec2, тип принуждаване. Дължината на или вектор, Аз просто избра vec1 произволно. Тя ще бъде по-силен, за да се каже, и число мин дължина vec1, дължина vec2. След това просто като двойна нула, защото ние наистина не интересува какво отива в от параметър, защото ние сме то определяне на нула, така или иначе. И тогава резултатите ще бъдат по- голяма свързан набор от основно vec1 е независимо, vec2 е независимо. Но ние сме заинтересовани в вън, така че ние може да се получи, че навън. Това е отново, много например играчка на интерфейс чужд функция. Но ако трябва да се изчисли дот продукти от масивни вектори в примки, или ако трябва да направите, нещо друго в една линия, и вие не искате да се разчита на R, което наистина има малко режийни вграден в него, това може да бъде полезно. Отново, това обикновено не е въвеждаща тема към R. Това не е много добре документирана. Аз съм просто това число, защото Открих, че е полезно в миналото. Така че, лоши практики. Споменах, че има за контур във функцията. По принцип не би трябвало, в езика, не го използвайте. Въз основа на това как R изпълнява итерация вътрешно, тя може да бъде бавен. Те просто също изглеждат грозно. R дръжки вектори много добре, така че често не е нужно да го използвам. Тогава обикновено могат да замени вектор често с тези функции, наречени висока ред функции, Map, Намаляване, Намерете или Filter. Аз просто ще дам някои примери за това, което те правят. Карта е по-висока функционална цел, защото това отнема функция като аргумент. Така че можете да му се даде функция, можете да го даде на масив, и тя ще се прилага функцията за всеки елемент на масива и да се върнете на новия масив. Намаляване, основно ви дам тя масив, ти я дам функция, която отнема два аргумента. Тя ще се прилага функцията първата, Първият аргумент с някои стартер стойност. След това към този резултат в секунда. След това с този резултат в третия, След това с този резултат в четвъртия рунд. И след това се върнете, когато тя стане до края. Така например, ако искате да изчисли сумата на всички елементи в масив, отколкото може да се обадите намали с [недоловим] намали добавка функция, като функция а, б, върнете плюс б. И след това да започне стойност 0. И всичко това, можете да ги намерите описано в документацията на R, във всеки учебник по функционално програмиране. Има също така и този клас функции, наречени прилагат функции, което аз don't-- те са малко трудно да се обясни, но ако се вгледате в [недоловим] резервирана че цитираната в началото, Той им обяснява доста добре в Допълнение си на R програмиране. Повече за практики, прикрепянето вектори. Да? Мисля, че трябва да се коригира това. В тази първа линия, ВЕЦ стрелка, че стрелката не трябва да има. Можете да зададете до вектор, отново, като се вземат неговата дължина плюс 1 и възлагане на някои стойност на това. Това ще удължи вектор, или сте може да направи VEC равнява гр, ВЕЦ newvalue. Отново, ако използвате C с един аргумент като вектор, получената йерархията получава сплескан. Така че просто ще получите вектор който е удължен с един. Никога не правете това. Причината, поради която Не трябва да се направи това е този. Когато се разпределят вектор, то дава определена парче памет. Ако увеличите този размер вектор, тя трябва да се преразпределят на вектора някъде другаде. И така преразпределение е доста скъпо. Аз няма да навлизам в подробности за това как памет разпределители са приложени на ниво операционна система, но това отнема много време да се намери ново парче от паметта. И също така, ако сте повторно разпределяне на много и много на прогресивно по-голям парчета, вие се окажете с нещо, наречено фрагментация на паметта, където наличната памет е разделен на много малко блокове в точката на паметта разпределители гледка. И това става все по-трудно да се намери памет за други неща. Така че вместо това, ако имате нужда да направите това, ако което трябва да расте вектор от единия край към следващата, вместо да се положат постоянно, трябва да го предварително разпредели. Vec стрелка, вектор дължина се равнява на 1 000, или нещо такова. И тогава можете просто да зададете на вектора стойности една време, след като сте го разпределя веднъж. Аз се блъсна в тази, отново, моята работа през лятото когато пишех диференциално НАП уравнение решаване. Не е символична числено. Идеята е, че след като имате една стойност за вашето решение, използвате, че за изчисляване на следващия. Така че моето физическо наивна склонност е да се каже, OK, така че аз ще започна с вектор това е една значителна стойност. Изчисляват се от това на следващата стойност която отива към моето решение вектор, и прилага този. Създаване на нещо друго, прилага този. Той мина много, много бавно. И след като разбрах това и аз смених система от прикрепянето този вектор като 10 000 до 100 000 пъти, само предварително разпределяне вектор и само с тичане с това. Имам повече от 1000 пъти скорост. Така че това е много често срещана капан за R програмиране. Ако имате нужда от изграждане на вектор парче по парче, тя предварително се разпределят. Друг често срещан пътуване up-- това е последната ми пързалка, не worry-- е обработка на грешки. R, за да бъда откровен, не го прави наистина това много добре. Има много проблеми, които могат да се появят и. Например, ако получите масив или вектор от функция че сте очаквали единична стойност да дойде от, или обратното, и вие така, че в една функция, която Ти си написал очаквайки една стойност, че може да е проблем. Някои функции върне нулев както, да речем, четене от несъществуващ ключ в списък. Но нищожна не е като C когато, ако се опитате да прочетете от стар показалеца, [недоловим] до нула показалеца, той просто SEG неизправности и ако сте във вашата дебъгер него ви казва точно къде се намирате. Вместо това, за нищожна ще do-- функции ще направи непредвидими неща ако те са ръка за нищожна. Подобно ако подаде макс нищожна, тя ще ви даде отрицателна безкрайност. И така, да. И така, това се е случило веднъж ми, когато имах променило куп полета в списъка за моята структура веднъж, без да ги променя другаде когато четях от тях. И тогава аз имам всякакви случайни резултати инфинити пълзят и аз няма представа откъде са дошли. И за съжаление, има няма реална R строг режим където може да се каже, ако нещо изглежда, че може да е грешка, просто спрете там, така че мога да бъда дисциплиниран и поправи това. Въпреки това, има нещо нарича стоп, ако не. Това е еквивалентно да се твърди, C е, ако сте говорили за това. Аз не мисля, C отстояват е лекция на тема, но вашият лидер вписванията може да са отишли ​​над него. И спре, ако не основно отнема всякаква предикат, така че всяко изявление, че може да бъде вярно или невярно. И ако това е невярно, той спира своята програма. Той ви казва точно това, което ви се подредят са били на и в какво състояние се провали. Това е много полезно, например, проверка здрав разум, функционални входове. Така че, ако имате функция и очакваш, да речем, ако трябва да ми даде дата, искам датите да бъдат само на вектор с дължина 1 и някъде между 1 и 31. И ако не, аз знам, нещо се е объркало. И аз избирам да се спре там, преди това има случаен почука ефекти с код че е по-трудно да се проследи чрез. Така че това е един от възможните използвате за спиране, ако не. Във всеки случай, OK. Така че това е края. Благодаря ви много, че дойдохте. Аз съм аматьор в това. Така че съжалявам, ако ви е скучно или объркан или това, което имате. Щастлив съм да взема въпроси по електронна поща най connorharris@college.harvard.edu. Това се отнася и за всички гледам това живеят или по-късно. Също така, въпреки че аз не съм с TF, аз също съм много готови да служат като неофициален съветник за всеки, който е използване на R в краен проект. Ако искате да, че, след това просто се консултирайте с Вашия TF и след това да ми напишете имейл, така Знам, че това, което работи по и за да мога да се създаде среща пъти с вас, ако искате. Така че отново, благодаря ви много. Надявам се да ви радва. АУДИТОРИЯ: [недоловим]. Конър HARRIS: Разбира се. АУДИТОРИЯ: Какъв проект ще използва студент CS R за? Конър HARRIS: Така че, ако не сте се направи нещо, което е чисто в извличане на данни, Например, и там много неща бихте могли да направите с тази с данни минното дело и машинно обучение. Може би искате да използвате за R компонент на нещо. Аз изведох, първоначално, примерът на ако пишете на уебсайт и искате да стартирате автоматизирана статистически анализ на вашия сървър трупи в определено време всеки ден, че може да е нещо, което е много лесно да се направи само за кратко R скрипт, който можете да планирате да тичам всяка вечер, например. И аз съм сигурен, ако има някаква причина искате Искам статистика или графични възможности и имат това се стартира автоматично, вместо се налага да си взаимодействат с неща в Excel, например, това е нещо, може да искате да използвате за R. Така че повече въпроси, преди да замина? Не? Добре, добре, отново, благодаря Много ви, че дойдохте.