Connor HARRIS: Vẫn còn tôi nghĩ rằng một số video thú vị
sản xuất bởi một tư vấn chuyên nghiệp có sử dụng R rất nhiều trong công việc của mình.
>> Người kể chuyện: Có gì đằng sau những số liệu thống kê, các phân tích, và visualizations
các nhà khoa học dữ liệu sáng nhất của ngày hôm nay và các nhà lãnh đạo kinh doanh dựa trên
để đưa ra quyết định mạnh mẽ?
Bạn có thể không bao giờ nhìn thấy nó.
Nhưng nó ở đó.
Nó được gọi là R, mã nguồn mở R-- sự ngôn ngữ lập trình thống kê
mà các chuyên gia dữ liệu thế giới qua sử dụng cho tất cả mọi thứ
từ lập bản đồ rộng xã hội và xu hướng tiếp thị trực tuyến
để phát triển tài chính và khí hậu mô hình giúp lái nền kinh tế của chúng tôi
và cộng đồng.
>> Nhưng chính xác là R và ở đâu R bắt đầu?
Vâng ban đầu, R bắt đầu ở đây với hai giáo sư
ai muốn có một thống kê tốt hơn nền tảng cho học sinh của mình.
Vì vậy, họ đã tạo ra một mô hình sau khi các ngôn ngữ thống kê S.
Họ, cùng với nhiều người khác, giữ làm việc trên và sử dụng R,
tạo ra công cụ cho R và tìm kiếm ứng dụng mới cho R mỗi ngày.
>> Nhờ vào điều này là nỗ lực cộng đồng trên toàn thế giới,
R giữ ngày càng tăng với hàng ngàn của thư viện người dùng tạo xây dựng
để tăng cường chức năng R và xác nhận chất lượng khán giả có nguồn gốc
và hỗ trợ từ các công nhận nhất các nhà lãnh đạo ngành công nghiệp trong mọi lĩnh vực mà
sử dụng R. Mà là tuyệt vời, vì R là tốt nhất những gì nó làm.
Vừa chớm nở nhanh chóng và chuyên gia dễ dàng giải thích, tương tác với,
và hiển thị dữ liệu cho thấy họ nhanh chóng cộng đồng ngày càng tăng của người dùng trên toàn thế giới R
và xem mã nguồn mở như thế nào R tiếp tục định hình
tương lai của thống kê phân tích dữ liệu và khoa học.
>> Connor HARRIS: OK, tuyệt vời.
Vì vậy, bài thuyết trình của riêng tôi sẽ được một chút tỉnh táo hơn.
Nó sẽ không liên quan đến nhiều nền âm nhạc thú vị.
Tuy nhiên, như bạn đã thấy trong đoạn video, R là loại của một chương trình ngôn ngữ mục đích chung.
Nhưng nó đã được tạo ra chủ yếu cho công tác thống kê.
>> Vì vậy, nó được thiết kế cho các thống kê, để phân tích dữ liệu, khai thác dữ liệu.
Và như vậy bạn có thể thấy điều này trong rất nhiều sự lựa chọn thiết kế mà các nhà hoạch định của R
làm.
Nó được thiết kế cho phần lớn, những người không
các chuyên gia trong lập trình, người chỉ chọn lên lập trình
bên cạnh để họ có thể làm công việc của họ trong khoa học xã hội hoặc trong thống kê
hoặc bất cứ điều gì.
>> Nó có rất nhiều rất khác biệt quan trọng từ C.
Nhưng cú pháp và mô hình nó sử dụng một cách rộng rãi là giống nhau.
Và bạn nên cảm thấy khá nhiều ở nhà ngay lập tức.
Đây là một ngôn ngữ mệnh lệnh.
>> Đừng lo lắng quá nhiều về điều đó nếu bạn không biết thuật ngữ này.
Nhưng có một sự phân biệt giữa bắt buộc, khai báo,
và chức năng.
Bắt buộc chỉ có nghĩa là bạn thực hiện báo cáo rằng về cơ bản lệnh.
Và sau đó, người phiên dịch hoặc các máy tính sau từng cái một.
Nó yếu đánh máy, có không có tờ khai loại trong R.
>> Và sau đó các dòng giữa các loại khác nhau
là nhiều hơn một chút lỏng lẻo hơn họ đang có trong C, ví dụ.
Và như tôi đã nói có cơ sở rất rộng
cho đồ họa, cho thống kê phân tích, khai thác dữ liệu.
Những đều được xây dựng vào ngôn ngữ và, như một đoạn video cho biết,
hàng ngàn thư viện của bên thứ ba mà bạn có thể tải về và sử dụng miễn phí
với điều kiện giấy phép rất lỏng lẻo.
>> Vì vậy, nói chung, tôi muốn khuyên bạn nên bạn nhìn vào hai cuốn sách này
nếu bạn đang đi để làm việc trên R. Một của họ là chính thức R mới bắt đầu
hướng dẫn.
Nó duy trì bởi phát triển cốt lõi của R.
Bạn có thể tải về nó một lần nữa, miễn phí và hợp pháp tại trang liên kết đó.
Tất cả các slide đang đi lên trên internet, trên trang web CS50
sau này được thực hiện.
Vì vậy, không cần phải sao chép điều xuống điên cuồng.
>> Một trong những khác là một sách giáo khoa bằng Cosma Shalizi,
là một giáo sư môn thống kê tại Carnegie Mellon, được gọi là dữ liệu tiên tiến
Phân tích từ một Point of View Elementary.
Đây không phải là một cuốn sách chủ yếu R.
Đó là một cuốn sách thống kê và đó là một cuốn sách phân tích dữ liệu.
Nhưng nó rất dễ tiếp cận với những người có một chút kiến ​​thức về thống kê.
>> Tôi đã không bao giờ thực hiện một khóa học chính thức.
Tôi chỉ biết các bit và miếng từ đối tượng đồng minh khác nhau
mà tôi đã thực hiện các khóa học trong.
Và tôi đã có thể hiểu được nó hoàn toàn tốt.
>> Tất cả các con số được đưa ra trong R. Chúng được làm R
và họ cũng có danh sách mã dưới mỗi con số mà cho bạn
làm thế nào bạn làm cho mỗi con số với mã R.
Và đó là rất hữu ích nếu bạn đang cố gắng thi đua
một số con số mà bạn nhìn thấy trong một cuốn sách.
>> Và tải lại miễn phí stat.cmu.edu/cshalizi/ Xin lỗi,
mà nên được giảm cshalizi dấu ngã.
Tôi sẽ làm cho chắc chắn để sửa mà khi các slide chính thức đi lên.
/ ADAfaEPoV mà chỉ là từ viết tắt của tên sách.
>> Vì vậy, nói chung caveats-- R có rất nhiều khả năng.
Tôi chỉ đi để có thể trang trải bề mặt của rất nhiều thứ.
Ngoài ra phần đầu tiên của hội thảo là có được một cái gì đó của một bãi chứa dữ liệu.
Tôi khá tiếc về điều đó.
Về cơ bản, tôi sẽ giới thiệu với bạn rất nhiều điều
ngay lập tức, đi càng nhanh càng tốt.
Và sau đó chúng tôi nhận được phần thú vị, đó là
demo, nơi tôi có thể hiển thị cho bạn mọi thứ mà chúng ta đã bàn về trên màn hình.
Và bạn có thể chơi xung quanh trên của riêng bạn.
Vì vậy, có đi có rất nhiều công cụ kỹ thuật ném lên trên đây.
Đừng lo lắng về việc sao chép tất cả mà xuống.
Bởi vì A, bạn có thể nhận được tất cả các công cụ trên trang web CS50 sau.
Và B, nó không thực sự là quan trọng để ghi nhớ điều này từ các slide.
Nó quan trọng hơn là bạn nhận được một số cơ sở trực quan với nó
và đến từ chỉ chơi xung quanh.
>> Vì vậy, tại sao sử dụng R?
Về cơ bản, nếu bạn có một dự án liên quan đến việc khai thác dữ liệu lớn, dữ liệu
trực quan, bạn nên sử dụng R. Nếu bạn đang
làm phân tích thống kê phức tạp, Nó sẽ rất khó để trong Excel,
Ví dụ, nó sẽ cũng được good-- cũng
nếu bạn đang làm thống kê phân tích đó là tự động.
Hãy nói rằng bạn đang duy trì một trang web.
Và bạn muốn đọc nhật ký máy chủ mỗi ngày và biên dịch một số danh sách,
như các nước hàng đầu mà người dùng của bạn đang đến từ,
một số thống kê tóm tắt về cách dài họ chi tiêu trên trang web của bạn hoặc bất cứ.
Và bạn muốn chạy này mỗi ngày.
>> Bây giờ nếu bạn đang làm điều này trong Excel, bạn phải đi để đăng nhập máy chủ của bạn,
nhập khẩu mà vào một Bảng tính dữ liệu Excel,
chạy tất cả các phân tích bằng tay.
Với R, bạn chỉ có thể viết một kịch bản.
Lịch để chạy hàng ngày từ hệ thống điều hành của bạn.
Và sau đó mỗi đêm vào lúc 02:00, hoặc bất cứ khi nào bạn lên kế hoạch cho nó chạy,
nó sẽ xem xét thông qua của bạn lưu lượng truy cập internet cho ngày hôm đó.
Và sau đó vào ngày hôm sau, bạn sẽ có sáng bóng, báo cáo mới này
hoặc bất cứ điều gì với tất cả các thông tin bạn yêu cầu.
>> Vì vậy, về cơ bản là R cho Cisco lập trình so với phân tích của Cisco.
Sơ bộ được thực hiện.
Hãy đi vào những điều thực sự.
Vì vậy, có ba thực loại trong ngôn ngữ.
Có số loại.
Có loại một sự khác biệt giữa số nguyên và các điểm nổi,
nhưng không thực sự.
Có một nhân vật gõ, đó là chuỗi.
Và có một logic gõ, mà là Boolean.
>> Và bạn có thể chuyển đổi giữa các loại sử dụng các chức năng này là số,
như nhân vật, như logic.
Nếu bạn gọi, ví dụ, như số trên một chuỗi,
nó sẽ cố gắng để đọc chuỗi như một số, giống như cách
rằng a2i và scanf làm, và C. Nếu bạn gọi như số trên đúng hay sai
nó sẽ chuyển đổi thành 1 hoặc 0.
Nếu bạn gọi là nhân vật về bất cứ điều gì nó sẽ thấy
chuyển đổi đó vào một đại diện của chuỗi.
>> Và sau đó có vectơ và ma trận.
Vì vậy, về cơ bản là vectơ 1 mảng chiều.
Họ là những gì chúng ta gọi là mảng trong C. Ma trận, 2 mảng chiều.
Và sau đó cao hơn mảng chiều bạn có thể
có 3, 4, 5 chiều hoặc bất cứ điều gì các giá trị số, chuỗi,
giá trị của logic.
>> Bạn cũng có danh sách đó là một loại mảng kết hợp.
Tôi sẽ nhận được vào đó một chút.
Vì vậy, một điều quan trọng rằng chuyến đi người trong R
là không có thực, các loại nguyên tử tinh khiết.
Không có sự phân biệt giữa thực tế một số, giống như một giá trị số,
và một danh sách các giá trị số.
Các giá trị số thực sự là giống như các vectơ có độ dài 1.
Và điều này có một số ý nghĩa quan trọng.
Một, nó có nghĩa là bạn có thể làm những điều rất dễ dàng có liên quan đến
giống như thêm một số thành một vector.
R sẽ cơ bản hình ra những gì bạn có nghĩa là bằng cách đó.
Và tôi sẽ nhận được rằng trong một giây.
Nó cũng có nghĩa là không có cách nào cho các loại checker-- đến mức
rằng một cái gì đó như thế tồn tại trong R-- nói
khi bạn đã vượt qua các giá trị duy nhất khi nó hy vọng một mảng hoặc ngược lại.
Và đó có thể gây ra một số lẻ khó khăn mà tôi chạy vào khi
Tôi đã sử dụng R trong công việc mùa hè của tôi.
Và không có mảng hỗn hợp loại.
Vì vậy, bạn không thể có một mảng là các yếu tố đầu tiên là, tôi không biết,
chuỗi "John" và Yếu tố thứ hai là số 42.
Nếu bạn cố gắng để làm điều đó, sau đó bạn sẽ nhận được tất cả mọi thứ chỉ chuyển thành một chuỗi.
Vì vậy, chúng ta có chuỗi John, chuỗi 42.
>> Cú pháp nên kỳ lạ nhất Tính Năng của R cú pháp là rất tương tự như C.
Có một vài sự khác biệt quan trọng.
Typing là rất yếu.
Vì vậy, không có khai báo biến.
Chuyển nhượng sử dụng lạ điều hành lỗi ít hơn dấu gạch ngang.
Bình luận là với dấu băm.
Bây giờ tôi đoán ngày chúng tôi gọi nó là hashtag mặc dù đó không phải là thực sự không accurate--
các dấu gạch chéo kép.
>> Dư lượng modul không có dấu hiệu %%.
Phân chia số nguyên là với% /% đó là rất khó đọc khi nó được chiếu
lên trên màn hình.
Bạn có thể nhận được các phạm vi của số nguyên với đại tràng.
Vì vậy, 2,5 sẽ cung cấp cho bạn một vector của tất cả các số từ 2 đến 5.
>> Mảng được một lập chỉ mục, mà vít rất nhiều người
lên nếu họ đang từ hơn ngôn ngữ lập trình điển hình,
như C, nơi mà hầu hết điều này là không lập chỉ mục.
Một lần nữa, đây là nơi mà di sản của R như là một ngôn ngữ cho như không
lập trình viên chuyên nghiệp đến.
Nếu bạn là một nhà xã hội học hay một nhà kinh tế hoặc một cái gì đó
và bạn đang cố gắng sử dụng R về cơ bản như một thuốc hỗ trợ
để bạn quan trọng hơn làm việc chuyên nghiệp,
bạn đang đi tìm một chỉ mục một chút tự nhiên hơn.
Bởi vì bạn bắt đầu đếm tại 1 trong cuộc sống hàng ngày, không 0.
>> Cho-vòng, điều này cũng tương tự như foreach xây dựng trong PHP,
mà bạn sẽ nhận được để học in-- khá sớm.
Mà là cho giá trị trong vector và sau đó bạn có thể làm những điều có giá trị.
Đung Đó là đưa ra trong bài giảng.
Connor HARRIS: Oh, đó là đi lên giảng, tuyệt vời.
Đung Việc chuyển nhượng, là nó phải chỉ từ phải sang trái?
Connor HARRIS: Từ phải sang trái, phải.
Bạn có thể nghĩ về nó như là giá trị trên quyền đẩy vào biến
bên trái.
Đung OK.
>> Connor HARRIS: Và cuối cùng chức năng cú pháp là một chút lạ.
Bạn có foo tên hàm, giao chức năng từ khóa này, tiếp theo
bởi tất cả các đối số và sau đó các cơ quan chức năng sau đó.
Một lần nữa những điều này có thể có vẻ hơi kỳ lạ.
Họ sẽ trở thành bản chất thứ hai sau bạn làm việc với ngôn ngữ cho một chút.
Vì vậy, vectơ, đường bạn xây dựng một vector
là bạn loại C, đó là một từ khóa, sau đó tất cả các số bạn muốn hoặc dây
hoặc bất cứ điều gì.
Luận cũng là vectơ.
Nhưng các mảng kết quả bị đốn ngã.
Vì vậy, bạn không thể có mảng nơi một số yếu tố là con số duy nhất
và một số yếu tố là mảng mình.
>> Vì vậy, nếu bạn cố gắng để xây dựng một mảng là yếu tố đầu tiên là 4
và yếu tố thứ hai là mảng 3,5 bạn sẽ
chỉ cần có được một mảng ba yếu tố, 4,3,5.
Họ không thể là kiểu hỗn hợp.
Nếu bạn cố gắng đọc hoặc viết bên ngoài các giới hạn của một vector
bạn sẽ nhận được giá trị này được gọi là một NA đó là viết tắt cho một giá trị thiếu.
Và điều này là để dành cho như các nhà thống kê người
đang làm việc với các tập dữ liệu không đầy đủ.
>> Nếu bạn áp dụng một chức năng đó là nghĩa vụ để lấy một số cho một mảng
sau đó những gì bạn sẽ nhận được là, chức năng sẽ bản đồ trên mảng.
Vì vậy, nếu chức năng của bạn hãy nói mất một số và trả về nó vuông.
Bạn áp dụng được cho các mảng 2,3,5 Mảng 4,9,25 những gì bạn sẽ nhận được.
>> Và đó là rất hữu ích bởi vì nó có nghĩa là bạn
không phải viết cho vòng cho làm những điều rất đơn giản như áp dụng
một chức năng để tất cả các thành viên của một tập hợp dữ liệu.
Mà nếu bạn đang làm việc với lớn bộ dữ liệu, bạn phải làm rất nhiều.
Hàm nhị phân là nhập ứng dụng bằng cách nhập cảnh.
Tôi sẽ nhận được vào đó.
Bạn có thể truy cập chúng với mảng hoặc vectơ với dấu ngoặc vuông.
Dấu ngoặc để tên vector vuông 1 sẽ cung cấp cho bạn những phần tử đầu tiên.
Tên Vector dấu ngoặc vuông 2 sẽ cung cấp cho bạn các yếu tố thứ hai.
>> Bạn có thể vượt qua trên một vector của chỉ số và bạn sẽ
lấy lại ra về cơ bản là một yếu tố phụ.
Vì vậy, bạn có thể làm vector khung tên C, 2,4 và bạn sẽ nhận ra một vector chứa
thứ hai và thứ tư phần tử của mảng.
Và nếu bạn chỉ muốn một Thống kê tóm tắt nhanh chóng
của một vector như tứ phân vị phạm vi, trung bình, tối đa, bất cứ điều gì,
bạn có thể chỉ cần gõ tóm tắt Tên vector và nhận ra rằng.
Đó không phải là thực sự hữu ích trong lập trình nhưng nếu bạn đang chơi
xung quanh các bộ dữ liệu, nó tiện.
>> Matrices-- cơ bản mảng nhiều chiều hơn.
Họ có cú pháp ký hiệu đặc biệt này.
Ma trận với một mảng mà được điền in-- xin lỗi, ma trận với dữ liệu,
số hàng, số cột.
Khi bạn có một số dữ liệu, nó lấp mảng về cơ bản tiến trên xuống dưới
Thứ nhất.
Sau đó, từ trái sang phải.
Vì vậy, như thế.
Và R đã xây dựng trong phép nhân ma trận,
phân hủy quang phổ, diagonalization, rất nhiều thứ.
Nếu bạn muốn chiều cao mảng, vì vậy 3, 4, 5,
hoặc bất cứ kích thước nào bạn có thể làm điều đó.
Cú pháp là mảng mờ bằng c, sau đó danh sách của các kích thước.
Vì vậy, nếu bạn muốn có một mảng 4 chiều với kích thước 4, 7, 8, 9, mảng,
dim bằng c (4,7,8,9).
>> Bạn truy cập vào các giá trị duy nhất với dấu ngoặc entry đầu tiên dấu phẩy vào thứ hai.
Bạn có thể nhận được toàn bộ lát của hàng hoặc cột.
Với cú pháp không hoàn chỉnh này nó chỉ chèo dấu phẩy số cột hoặc dấu phẩy
con số.
Vì vậy, danh sách này là một loại mảng liên quan.
Họ có cú pháp riêng của họ ở đây.
Một lần nữa không điên cuồng sao chép tất cả xuống này.
Đây chỉ là để mọi người đi qua các slide sau
có tất cả trong một tài liệu tham khảo tốt đẹp.
Và điều này sẽ trở thành một lần rất tự nhiên Tôi thực sự đi bộ qua các bản demo.
Vì vậy, liệt kê một mảng cơ bản liên quan.
Bạn có thể truy cập các giá trị với Tên danh sách, ký hiệu đô la, chìa khóa.
Vì vậy, nếu danh sách của bạn được đặt tên foo, sau đó bạn có thể truy cập nó như thế.
Bạn có thể nhận được một cặp toàn bộ giá trị quan trọng bằng cách đi qua trong chỉ số khung hình vuông.
Nếu bạn đọc từ một không tồn tại phím, bạn sẽ nhận được null.
Nó sẽ không lỗi.
Thing là, R sẽ làm như nhiều với null như nó có thể.
Và điều này có nghĩa là nếu bạn đang không mong đợi để nhận được null ra
của một số danh sách đọc, bạn sẽ nhận được một số lỗi không thể đoán trước tiếp tục xuống
dòng.
>> Điều này xảy ra với tôi của tôi công việc mùa hè khi tôi đã sử dụng R
nơi tôi đã thay đổi như thế nào nhất định danh sách đã được xác định ở một chỗ
nhưng không thay đổi sau này trên mã mà đọc giá trị từ nó.
Và vì vậy những gì đã xảy ra là tôi đã đọc các giá trị null trong danh sách này,
chuyển chúng thành các chức năng, và đang được rất bối rối
khi tôi nhận tất cả các loại infinities ngẫu nhiên xén lên
trong chức năng này.
Bởi vì nếu bạn áp dụng tối đa nhất định hoặc các chức năng tối thiểu để null,
bạn sẽ nhận được giá trị vô hạn ra.
>> Khung dữ liệu, chúng tôi là một lớp con của danh sách.
Mỗi giá trị là một vector có cùng chiều dài.
Và chúng được sử dụng để trình bày, về cơ bản, các bảng dữ liệu.
Có cú pháp khởi tạo này.
Điều này sẽ tất cả, một lần nữa, có nhiều rõ ràng hơn khi bạn nhận được để demo.
Và những điều tốt đẹp về khung dữ liệu là bạn
có thể cung cấp tên cho tất cả các cột và tên để tất cả các hàng.
Và vì vậy mà làm cho truy cập chúng một chút thân thiện.
Ngoài ra đây là cách hầu hết các chức năng mà đọc dữ liệu từ các bảng tính Excel
hoặc từ các tập tin văn bản, ví dụ, sẽ đọc dữ liệu của họ.
Họ sẽ đặt nó vào một số loại khung dữ liệu.
Vì vậy functions-- chức năng Cú pháp là một chút lạ.
Một lần nữa nó là tên của hàm, phân công, chức năng từ khóa này và sau đó
danh sách các đối số.
Vì vậy, có một số những điều tốt đẹp về chức năng làm việc ở đây.
Đối với một, bạn thực sự có thể gán giá trị mặc định cho tham số nhất định.
Vì vậy, bạn có thể nói R1 equals-- bạn có thể nói foo
là một chức năng mà R1 bằng gì gì đó theo mặc định nếu người dùng chỉ định
không có đối số.
Nếu không, nó là bất cứ điều gì ông đặt trong.
Và điều này là rất tiện dụng bởi vì rất nhiều chức năng của chúng tôi
có thường hàng chục hoặc hàng trăm đối số.
Ví dụ những người cho âm mưu đồ thị hoặc vẽ biểu đồ phân tán
có lập luận rằng kiểm soát tất cả mọi thứ từ các tiêu đề và trục
nhãn với màu sắc của đường hồi quy.
Và do đó, nếu bạn không muốn để làm cho mọi người chỉ định
mỗi một đơn của các hàng trăm đối số
kiểm soát mọi khía cạnh của một cốt truyện hoặc một hồi quy hay bất cứ điều gì,
nó là tốt đẹp để có các giá trị mặc định.
>> Và sau đó bạn có thể thực sự viết như bạn đã thấy trở lại đây.
Hoặc tìm một ví dụ tốt hơn.
Khi bạn gọi chức năng mà bạn có thể thực sự gọi chúng bằng những cái tên đối số.
Vì vậy, đây là một ví dụ của nhà xây dựng ma trận.
Phải mất ba đối số.
Thông thường, bạn có dữ liệu, mà là một vector.
Bạn có N hàng, mà là số lượng hàng.
Bạn có N cols-- số cột.
Có điều là nếu bạn gõ N hàng bằng bất cứ điều gì
và N col bằng bất cứ điều gì khi bạn đang gọi điện thoại chức năng này,
bạn thực sự có thể đảo ngược chúng.
Vì vậy, bạn có thể đặt N col đầu tiên và N hàng thứ hai và nó sẽ làm cho không có sự khác biệt.
Vì vậy, đó là một tính năng ít tốt đẹp.
>> Đã nhập khẩu và xuất khẩu.
Điều này có thể được thực hiện, về cơ bản.
Ngoài ra còn có các cơ sở để viết ra tùy R đối tượng vào một tập tin nhị phân
và sau đó đọc chúng trở lại sau đó.
Đó là tiện dụng nếu bạn đang làm một lớn tương tác phiên R
và bạn cần phải lưu những điều rất nhanh chóng.
Theo mặc định R có một thư mục làm việc rằng các tập tin được viết ra vào
và đọc lại từ.
Bạn có thể thấy rằng với getwg, thay đổi nó với setdw.
Không có gì đặc biệt thú vị ở đây
>> Vì vậy, bây giờ các số liệu thống kê thực tế stuff-- hồi quy đa tuyến.
Vì vậy, cú pháp thông thường là một chút phức tạp.
Mô hình này là một đối tượng lớn về cơ bản.
Nó được gán vào lm, đó là một cuộc gọi chức năng.
Yếu tố đầu tiên, các y x1 dấu ngã cộng với bất cứ điều gì.
Cú pháp của tôi ở đây là một chút bối rối.
Tôi khá tiếc, điều này là cách tiêu chuẩn
rằng những cuốn sách khoa học máy tính làm điều này.
Nhưng nó là một chút lạ.
>> Vì vậy, về cơ bản, nó lm ngoặc, mục đầu tiên
được variable-- xin lỗi, phụ thuộc x1 dấu ngã biến cộng với x2 cộng
Tuy nhiên nhiều độc lập biến mà bạn có.
Và sau đó những có thể là bạn vectơ, tất cả cùng độ dài.
Hoặc họ có thể là cột tiêu đề trong một khung dữ liệu
mà bạn chỉ cần chỉ định trong số thứ hai khung dữ liệu.
>> Bạn cũng có thể chỉ định một công thức phức tạp hơn
do đó bạn không phải tuyến tính thoái một biến phụ thuộc một,
hoặc một vector trên một vector có sẵn từ trước.
Bạn có thể làm, ví dụ, một thành phần vector y bình phương cộng với 1
và thoái mà chống lại đăng nhập của một số vector khác.
Bạn có thể in những tóm tắt mô hình với lệnh này được gọi là
summary-- chỉ tóm tắt mô hình dấu ngoặc.
Một lần nữa cái gì khác tôi cần phải làm rõ.
Cái gì khác mà sẽ được điều chỉnh khi các slide đi lên trên internet.
Nếu bạn chỉ muốn tính toán một tương quan đơn giản
bạn có thể sử dụng vector tương quan 1 vector 2 chức năng cốt lõi.
Phương pháp là theo mặc định Pearson tương quan.
Đó là những tiêu chuẩn mà bạn có thể làm.
Có cũng Spearman và Kendell tương quan
đó là một số nhiều thứ tự xếp hạng tương quan.
Vâng họ không tính toán sản phẩm khoảnh khắc giữa các vectơ mình,
nhưng lệnh rank của vector.
Tôi sẽ giải thích sau.
>> Đung Nhanh câu hỏi
>> CONNER HARRIS: Chắc chắn rồi.
>> Đung Vì vậy, khi bạn đang tính toán cho các mối tương quan đơn giản làm
bạn cho rằng có một thống kê ý nghĩa đối với tương quan?
CONNER HARRIS: Bạn không cần phải.
An lm là về cơ bản chỉ là một máy.
Nó sẽ mất trong hai điều và nó sẽ nhổ ra
hệ số của các dòng phù hợp nhất.
Nó cũng báo cáo tiêu chuẩn lỗi trên những hệ số.
Và nó sẽ cho bạn biết, như là đánh chặn ý nghĩa thống kê
hoặc chênh lệch từ 0.
Là độ dốc của tốt nhất dòng phù hợp thống kê
khác nhau từ số không, vân vân.
Vì vậy, nó giả định không có gì, tôi nghĩ là câu trả lời tốt nhất cho câu hỏi của bạn.
ĐƯỢC.
>> Plotting-- vậy lý do chính mà bạn nên sử dụng R, giống như hồi quy đa tuyến.
Về cơ bản mỗi ngôn ngữ có một số cơ sở cho điều đó.
Và cú pháp một cách trung thực R cho hồi quy là một phức tạp chút.
Nhưng âm mưu là nơi mà nó thực sự tỏa sáng.
>> Các chức năng Workhorse là cốt truyện và phải mất hai vectơ, x và y.
Và sau đó là viết tắt của một elip rất số lượng lớn các đối số tùy chọn mà
kiểm soát tất cả mọi thứ từ tiêu đề đến màu sắc các dòng khác nhau hoặc các điểm khác nhau,
đến các loại âm mưu.
Bạn có thể phải phân tán lô hoặc lô hàng.
>> [Không nghe thấy] 2 vectơ có cùng chiều dài.
Bạn có thể đặt trước này với đính kèm khung dữ liệu trong kịch bản của bạn.
Và điều này sẽ cho phép bạn chỉ cần sử dụng cột tiêu đề thay vì vectơ riêng.
Bạn có thể thêm đường phù hợp nhất và địa phương đường cong hồi quy để đồ thị của bạn.
>> Những lệnh này được liệt kê ở đây, ab dòng và đường dây,
theo mặc định các nhận bằng văn bản vào cửa sổ pop up
vì nó cho rằng bạn đang sử dụng R tương tác.
Nếu bạn không phải là bạn có thể viết hai tập tin đó
đang thực sự bất kỳ định dạng nào bạn muốn.
Xin lỗi, tôi có một lỗi đánh máy Tôi chỉ nhận ra.
Nếu bạn muốn mở một thiết bị đồ họa
bạn có thể sử dụng chức năng này được gọi là PNG hoặc JPEG hoặc rất nhiều định dạng hình ảnh khác.
Và bạn có thể viết các đồ thị để bất cứ tên tập tin bạn chỉ định.
Để hủy mà bạn phải use-- Tôi đã không viết này trong slide--
nhưng có một chức năng gọi là dev dot ra rằng sẽ không có đối số.
>> Sau đó, có cơ sở cho 3D vẽ
và đường viền cho âm mưu nếu bạn muốn làm cho
đồ thị của hai biến độc lập.
Tôi sẽ không nhận được vào những ngay bây giờ.
>> Cũng có một số có cơ sở vật chất cho hoạt hình
những người thường duy trì bởi các bên thứ ba.
Tôi đã làm hình ảnh động với đồ thị R, nhưng tôi đã không được sử dụng các bên thứ ba
thư viện.
Vì vậy, tôi có thể không thực sự chứng thực làm thế nào để chúng tốt.
Những gì tôi khuyên nếu bạn muốn để làm cho hình ảnh động bằng cách sử dụng R
là bạn có thể ghi lại tất cả các các khung cho hình ảnh động
và sau đó bạn có thể sử dụng một program-- bên thứ ba
những điển hình được gọi là FFmpeg hoặc ImageMagick-- để khâu
tất cả các khung hình của bạn thành một hình ảnh động.
>> Vì vậy, thời gian cho bản demo.
Vì vậy, nếu bạn đang sử dụng bất kỳ hệ thống Unix như đó là Linux BSD nhưng người sử dụng BSD.
OS X mở một cửa sổ terminal và gõ R tại dấu nhắc lệnh.
Nếu bạn có R studio hay như thế, mà cũng làm việc.
Đối với người dùng Windows, bạn nên có có thể tìm thấy R trong menu Start của bạn.
Nó nên được gọi là một cái gì đó như R x64 3 điểm bất cứ điều gì.
Mở mà lên đó.
>> Vì vậy, bây giờ hãy để tôi chỉ mở một cửa sổ terminal.
Tất cả các quyền, tìm kiếm.
Đung Command-Space
CONNER HARRIS: Command-Space, cảm ơn bạn.
Tôi không thường sử dụng máy Mac.
Thiết bị đầu cuối, hiển thị cửa sổ mới.
Cửa sổ mới là thiết lập cơ bản, R. Vì vậy, bạn sẽ nhận được
một thông điệp chào mừng, một cái gì đó như thế này.
>> Vì vậy, tôi đang sử dụng R tương tác.
Bạn cũng có thể viết kịch bản R của khóa học.
Về cơ bản script chạy cách chính xác giống như
nếu bạn đang ngồi tại máy tính gõ vào từng dòng một lúc.
Vì vậy, chúng ta hãy bắt đầu bằng cách làm cho một vector.
Một mũi tên C 1, 2.
1, 2, 4.
OK chắc chắn.
Tôi có thể làm cho kích thước phông chữ lớn hơn.
>> ĐỐI TƯỢNG: Command-Plus
>> CONNER HARRIS: Command-Plus.
Command-Plus.
Tất cả các quyền, làm thế nào vậy?
Tốt?
ĐƯỢC.
Vì vậy, hãy bắt đầu bằng tuyên bố một danh sách vector.
Làm một, mũi tên, C 1,2,4.
Chúng ta có thể thấy một.
Đừng lo lắng về độ đó.
Các dấu ngoặc là vì vậy nếu bạn in ra mảng rất dài, chúng ta có thể bạn đang ở đâu.
Một ví dụ là nếu tôi chỉ muốn phạm vi 2-200.
Nếu tôi in rất mảng dài, các dấu ngoặc
chỉ để tôi có thể giữ theo dõi trong đó chỉ số
chúng ta đang ở trên nếu tôi đang tìm thông qua trực quan này.
Vì vậy, dù sao đi nữa, chúng ta có một.
>> Vì vậy, tôi đã nói trước khi các mảng tương tác rất độc đáo với, ví dụ,
hoạt động nguyên phân như thế này.
Vì vậy, những gì bạn nghĩ rằng tôi sẽ nhận được nếu tôi gõ một cộng 1?
Vâng.
Phải, bây giờ tôi sẽ làm cho mảng khác nhau này.
Hãy nói rằng b c 20,40, 80.
Vậy bạn nghĩ như thế nào lệnh này sẽ làm gì?
Thêm các yếu tố.
Và như vậy về cơ bản đó là những gì nó.
Vì vậy, điều này là khá thuận tiện.
Vì vậy, tôi làm thế nào về tôi làm điều này. c là, chúng ta hãy nói, 6 lần 1-10.
Vì vậy, những gì tôi muốn xem chứa, bạn có nghĩ?
Vì vậy, tất cả các bội của sáu.
Bây giờ, những gì bạn nghĩ sẽ xảy ra nếu tôi làm thế này?
Tôi sẽ làm một chút rõ ràng hơn này, c, c.
Vì vậy, những gì sẽ xảy ra, làm bạn nghĩ rằng, nếu tôi làm điều này?
một cộng c.
[Không nghe thấy]
>> Đung Hoặc là một lỗi hoặc nó chỉ cần thêm ba yếu tố đầu tiên.
>> CONNER HARRIS: Không hẳn.
Đây là những gì chúng tôi đã nhận.
Điều gì xảy ra là một ngắn hơn mảng, một, đã đạp xe.
Vì vậy, chúng tôi đã nhận 124, 124, 124.
Yeah.
Và về cơ bản, bạn có thể xem hành vi này trước đây, một cộng với 1,
là một lớp con của hành vi này, nơi mảng ngắn nhất là chỉ số
1, mà là một mảng một phần tử.
Tôi chỉ nói được tất cả các vector thời gian thay vì mảng,
bởi vì đó là những gì r tài liệu thường làm.
Đây là một thói quen ăn sâu c.
>> OK, và vì vậy bây giờ chúng ta có mảng này.
Vì vậy, chúng ta có mảng này, c.
Chúng tôi có thể nhận được bản tóm tắt thống kê về c, tóm tắt c.
Và đó là tốt đẹp.
Vì vậy, bây giờ chúng ta hãy làm một số thứ ma trận.
Hãy nói rằng m là một ma trận.
Hãy làm cho nó một ba ba một.
Vì vậy nrows bằng 3, và ncols bằng 3.
Và đối với dữ liệu cho phép của do-- vì vậy những gì Bạn nghĩ điều này sẽ làm gì?
>> Phải, đó là một trong những tiếp theo.
Đó là nrow và ncolumn.
Vì vậy, những gì tôi đã thực hiện Tôi đã là tuyên bố một ba ba ma trận
và tôi đã vượt qua một mảng chín phần tử.
Vì vậy, logarit của tất cả các các yếu tố một đến chín.
Và tất cả những giá trị điền lên xin lỗi array--?
Đung Đó là những cơ sở 10 bản ghi?
CONNER HARRIS: Không, log là logarit tự nhiên, vì vậy cơ số e.
Vâng, nếu bạn muốn cơ sở 10 log, tôi nghĩ rằng bạn phải
để đăng nhập bất cứ điều gì, chia log 10.
Và do đó, các dữ liệu của [Không nghe thấy] chỉ lấp đầy mảng, vì vậy trên xuống dưới,
sau đó trái sang phải.
Và nếu bạn muốn làm một số khác mảng, chúng ta hãy nói n là ma trận.
Hãy làm, tôi không biết, 2-13.
Hoặc tôi sẽ làm điều gì đó thú vị hơn.
Tôi sẽ làm 2-4.
nrow bằng với, hãy nói, 3.
ncol bằng 4.
n.
Vì vậy, chúng tôi đã có này.
>> Và bây giờ nếu chúng ta muốn nhân này, chúng tôi sẽ làm lần n trăm phần trăm,
bởi vì đó là n.
Và chúng tôi có các sản phẩm ma trận.
Bởi họ cách, bạn có thấy như thế nào khi tôi tuyên bố n, 2-4
vector đã đạp xe đến nó lấp đầy tất cả các n?
Nếu bạn muốn chụp phân hủy eigenvalue,
đây là một cái gì đó chúng ta có thể làm rất dễ dàng.
Chúng tôi có thể làm eigen n.
Và do đó, đây là lần đầu tiên của chúng tôi gặp phải với một danh sách.
>> Vì vậy, n eigen là một danh sách với hai phím.
Giá trị, đó là mảng này đây.
Và vectơ, đó là mảng này đây.
Vì vậy, nếu bạn muốn trích xuất, nói, cột thứ ba này
từ các vector riêng ma trận, bởi vì các vector riêng là vectơ cột.
Vì vậy, chúng ta có thể làm eigen vec dấu n đô la vectơ, dấu phẩy 3, trong [không nghe được].
Vec.
Là, như bạn có thể mong đợi.
>> Sau đó, nói n lần lần trăm vec.
Vì vậy, kết quả ở đây chắc chắn trông giống như nếu chúng ta lấy eigenvalue thứ ba ở đây,
tương ứng với các vector riêng thứ ba.
Nó chỉ nhân tất cả mọi thứ trong eigenvector này, thành phần khôn ngoan,
bởi eigenvalue.
Và đó là những gì chúng ta mong đợi, bởi vì đó là những gì giá trị riêng là.
Có ai ở đây không lấy đại số tuyến tính?
Một vài người, OK.
Chỉ cần bật bộ não của bạn ra cho một chút.
Và quả thực nếu chúng ta lấy eigen n đồng đô la giá trị dấu hiệu 3 lần vec,
cũng có được điều tương tự.
Nó định dạng khác nhau như là một hàng vector thay vì một vector cột,
nhưng vấn đề lớn.
Và do đó, những cơ bản là đẹp những điều mà chúng ta có thể làm gì với ma trận,
danh sách chứng minh.
Tôi phải chứng minh đẹp điều về chức năng là tốt.
>> Vì vậy, hãy say-- [Không nghe thấy] chức năng, cuộc gọi cho phép của
nó func thống chống n n squared-- trên thực tế, đó là không thực sự tốt nhất.
a, b, a bình phương cộng với b.
Vì vậy, một điều về chức năng, một lần nữa, là họ
không cần phải báo cáo lợi nhuận rõ ràng.
Vì vậy, bạn có thể just-- sự Tuyên bố cuối cùng được đánh giá
sẽ được tuyên bố trở lại, hoặc giá trị trả về.
Vì vậy, trong trường hợp này, chúng ta chỉ đánh giá một tuyên bố, một cộng với bình phương b.
Đó sẽ là sự trở về giá trị mặc định.
Nó không bao giờ đau để đưa vào giá trị trả lại một cách rõ ràng,
đặc biệt là nếu bạn đang đối phó với một chức năng logic rất phức tạp
Dòng chảy.
Nhưng bạn không cần đến chúng.
Vì vậy, bây giờ chúng tôi có thể làm func 5, 1, và này về cơ bản là những gì bạn mong muốn.
Cái gì khác chúng ta có thể làm, chúng tôi thực sự có thể làm func b
bằng 1, một bằng 5.
Vì vậy, nếu chúng ta xác định số lượng ở đây, mà lập luận đi để mà tranh luận
trong chức năng, chúng ta có thể lật xung quanh những giá trị này bất cứ nơi nào chúng ta muốn.
>> Đung Có một lý do để viết nó ra với các b
bằng như trái ngược với chỉ sử dụng những con số và các dấu phẩy?
CONNER HARRIS: Yeah, thường làm điều này nếu bạn có chức năng
với rất nhiều tranh cãi.
Điều đó thường có thể được như thế lá cờ mà bạn muốn chỉ
muốn sử dụng trong những dịp hiếm hoi.
Và cách này bạn có thể only-- bạn có thể tham khảo những lập luận cụ thể
mà bạn muốn sử dụng giá trị mặc định không cho,
và bạn không cần phải viết ra một bó cờ bằng giả sau khi họ.
Hoặc tôi có thể viết này một lần nữa với một giá trị mặc định như b = 2.
Và sau đó tôi có thể làm f func, Tôi sẽ làm 4, 1 thời gian này.
Và 17, đó là 4 phương cộng với 1, như bạn mong đợi.
>> Nhưng tôi cũng có thể chỉ gọi này với func 4,
và tôi sẽ nhận được 18, vì Tôi không chỉ định b.
Vì vậy, b được các giá trị mặc định của 2.
>> OK, vì vậy bây giờ nếu bạn sau cùng với các bản demo,
gõ dòng này tại lệnh của bạn nhắc và xem những gì đi lên.
Trên thực tế, không làm điều đó.
Loại này.
Bạn sẽ nhận được một cái gì đó như thế này.
Vì vậy mtcars được tích hợp sẵn trong dữ liệu thiết cho cuộc biểu tình này
mục đích mà đến with-- mà đến tại theo mặc định với phân phối r của bạn.
Đây là một tập hợp các số liệu thống kê từ một vấn đề năm 1974 của tạp chí Motor Trend
trên một số mẫu xe khác nhau.
>> Vì vậy, có dặm mỗi gallon, cylinders-- Tôi quên những gì disp is-- mã lực.
Có lẽ.
Nếu bạn chỉ cần chiếc xe Google MT, sau đó một trong những kết quả đầu tiên
sẽ được từ tài liệu chính thức r
và nó sẽ giải thích tất cả các trường dữ liệu.
Vì vậy, trọng lượng is-- wt là trọng lượng của chiếc xe trong tấn.
Q giây là thời gian quý dặm.
Vì vậy, bây giờ chúng tôi có thể làm một số những điều thú vị về xe MT là một trường dữ liệu.
>> Vì vậy, chúng ta có thể làm mọi thứ như tên hàng, xe mt.
Và đây là một danh sách của tất cả các hàng trong tập dữ liệu đó là tên của chiếc xe.
Chúng tôi có thể làm colnames, mt xe này.
Nếu bạn làm xe mt, chỉ số tiểu số, giống như 2.
chúng tôi nhận được cột thứ hai trong số này, đó sẽ là hình trụ.
>> Đung bạn đã làm gì?
>> CONNER HARRIS: Tôi đánh máy mt ô tô, khung e,
đó đã cho tôi thứ hai cột ra khỏi xe tấn.
Hoặc nếu chúng ta muốn có một hàng, tôi có thể loại mtcars dấu phẩy 2, ví dụ.
Khác vòng 2 dấu phẩy, như thế.
Và rằng đi trong hàng của bạn.
Điều này ở đây chỉ mang lại cho bạn một cột, nhưng cột như là một vector.
Tôi chỉ nhận ra bây giờ tôi quên để chứng minh
một số điều thú vị về vectơ mà bạn có thể làm với các chỉ số.
Vì vậy, hãy để tôi làm điều đó ngay bây giờ.
Vì vậy, chúng ta hãy làm c gets-- đặt này trên pause-- 2 lần 1-10.
Vì vậy, c chỉ là có được các vector 2 đến 20.
Tôi có thể có các yếu tố như thế này, c2.
Tôi có thể vượt qua trong một vector như thế này, c-- cho tôi
sử dụng tên khác so với c, như vec c.
Về cơ bản, tôi đang làm này, do đó bạn không nhận được
nhầm lẫn giữa c như là một chức năng xây dựng vector,
và sau đó c là một tên biến.
Ngoặc Vec c 4, 5, 7.
Điều này sẽ làm cho tôi ra thứ tư, thứ năm, và bảy yếu tố của mảng.
Tôi có thể làm vec, đặt trong một âm chỉ số, như tiêu cực 4.
Điều đó sẽ giúp tôi ra khỏi đây với yếu tố thứ tư loại bỏ.
Sau đó, nếu tôi muốn làm lát, Tôi có thể làm vec 2 thông qua 6.
2 ruột 6 chỉ khác là vector, mà là 2, 3, 4, 5, 6.
Phun ra rằng.
>> Vì vậy, dù sao đi nữa, trở lại xe mt.
Vì vậy, chúng ta hãy làm một số hồi quy.
Hãy nói rằng mô hình gets-- hãy tuyến tính regress-- Tôi không biết.
Đầu tiên chúng ta hãy làm đính kèm mtcars, tất nhiên.
Vì vậy, [nghe được] mô hình lm, hãy thoái dặm mỗi gallon vào cân nặng dấu ngã.
Và sau đó khung dữ liệu là mtcars.
Vì vậy, mô hình tóm tắt.
>> OK, vì vậy điều này có vẻ hơi phức tạp.
Nhưng về cơ bản, nhìn thấy là nếu chúng tôi cố gắng thể hiện dặm cho mỗi gallon
như là một hàm tuyến tính của trọng lượng, sau đó chúng tôi có dòng này ở đây,
mà chặn tại 37,28.
37,28 sẽ là dặm lý thuyết mỗi gallon của một chiếc xe có trọng lượng bằng không.
Và sau đó cho mỗi tấn bổ sung, bạn gõ khoảng năm dặm mỗi gallon
tắt của đó.
Cả hai hệ số bạn có thể thấy, sai số chuẩn đó.
Và họ rất ý nghĩa thống kê.
>> Vì vậy, chúng ta có thể rất chắc chắn để 1 e 10 đến âm 10.
Vì vậy, 1 lần một cái gì đó để tiêu cực 10, rằng nếu bạn thực hiện một chiếc xe nặng hơn,
nó sẽ có dặm tồi tệ hơn cho mỗi gallon.
Hoặc chúng ta có thể kiểm tra một số mô hình khác.
Giống như thay vì thoái này trên trọng lượng,
hãy thoái nó vào nhật ký của trọng lượng, bởi vì có lẽ các cân hiệu quả
trên quãng đường đi là bằng cách nào đó không tuyến tính.
>> Điều này đã cho chúng tôi một r bình phương của 0,7528.
Vì vậy, hãy cố gắng này.
Lần này chúng ta hãy làm một biến khác nhau, quá.
Model2.
Vì vậy, tóm tắt, model2.
Được rồi, vậy một lần nữa, chúng tôi có dòng này phù hợp tốt nhất của chúng tôi ở đây.
Và điều này time-- này là nói, về cơ bản là mỗi khi bạn
tăng trọng lượng của một chiếc xe do một yếu tố của e
bạn bị mất này nhiều dặm mỗi gallon.
>> Và vì vậy thời gian này tiêu chuẩn còn lại của chúng tôi lỗi it-- đó không quan trọng, thực sự.
Các lỗi tiêu chuẩn còn lại là về cơ bản chỉ là sai số chuẩn
rằng bạn đã để lại sau khi bạn lấy đi các đường xu hướng.
Và r bình phương của chúng tôi ở đây là 0,81, đó là một chút tốt hơn so với những gì
chúng ta có trước, 0,52.
>> Và vì vậy bây giờ chúng ta hãy thêm một hạn để hồi quy này.
Vì vậy, hãy thoái dặm cho mỗi gallon cả trên nhật ký của các trọng
và, chúng ta hãy làm, q dặm, Hiện phần tư dặm.
OK, nó phải có the-- tất cả các quyền, QseC.
QseC.
Actually-- xin lỗi, những gì?
Hãy để tôi gọi cái gì đó này khác ngoài model2.
Hãy để tôi gọi model3 này.
Và bây giờ chúng ta có thể làm bản tóm tắt model3.
Và như vậy một lần nữa, đây là cơ bản những gì bạn có thể mong đợi.
Bạn có chặn tích cực.
Các hiệu quả ngày càng tăng trọng lượng là tiêu cực.
Và hiệu quả tăng thời gian tư dặm
là tích cực, nhưng dù ít hơn so với trọng lượng.
Bây giờ trực giác, bạn có thể làm cho tinh thần của này bằng cách nói rằng suy nghĩ về những chiếc xe thể thao.
Có một khả năng tăng tốc rất nhanh, rất ngắn thời gian quý dặm.
Họ cũng đang sử dụng gas hơn, trong khi chiếc xe hợp lý hơn sẽ
có khả năng tăng tốc chậm hơn, lần phần tư dặm cao,
và sử dụng khí đốt ít ,, vậy dặm cao hơn cho mỗi gallon.
Thật tuyệt.
Và vì vậy bây giờ nó là thời gian để vẽ một cái gì đó như thế này.
Vì vậy, hãy do-- do đó, trần xương chúng ta có thể làm plots--
bởi vì tôi đã gắn khung dữ liệu này before-- chúng ta chỉ có thể làm lô, mpg wt.
Thực hiện điều này lớn hơn một chút.
Có, chúng tôi về cơ bản có một biểu đồ phân tán, nhưng những điểm
là loại khó để nhìn thấy trên này.
>> Tôi không nhớ ngay những gì Cú pháp là cho thay đổi cốt truyện.
Vì vậy, tôi đoán đây sẽ là một thời điểm tốt để đưa lên,
có một sự trợ giúp dựng sẵn rất đẹp tính năng, giúp đỡ báo giá hoạt động tên.
Chúng tôi sẽ mang đến cơ bản bất cứ điều gì bạn muốn.
Tôi nghĩ rằng tôi thực sự sẽ làm điều này loại bằng p cho điểm lô.
Đã làm điều đó thay đổi bất cứ điều gì?
Và không có, không thực sự.
Được rồi.
>> Đối với một số lý do, khi tôi đã làm điều này trên máy tính của riêng mình trong khi trước đây,
tất cả các điểm phân tán là rõ ràng hơn nhiều.
Nhưng dù sao, là những loại phân tán của thể nhìn thấy?
Có ai ở đó.
Một vài đó, một vài có.
Bạn có thể sắp xếp gặp họ, phải không?
Vì vậy, nếu chúng ta muốn thêm một dòng phù hợp nhất để âm mưu này ở đây, đó là một chút trần
bones-- cho tôi làm cho nó một chút đẹp hơn.
Chính bằng và trọng lượng.
Dặm mỗi gallon.
Một lần nữa, bạn có thể thấy hữu ích đối số tùy chọn ở đây với cũng
không phải đặt mọi thứ trong một thứ tự nhất định với đối số bàn phím
khi bạn có âm mưu, bởi vì những mất rất nhiều tranh cãi.
>> Xlab bằng trọng lượng, trọng lượng, tấn.
Được rồi.
OK, yeah, thiết bị này đang được một chút khó chịu.
Nhưng bạn có thể nhìn thấy loại lên ở đó, có một tiêu đề đồ thị trên mặt.
Trên đây there's-- ở phía dưới ở đây có những trục nhãn.
Tôi không nhớ ngay những gì các lệnh ars--
những gì các chức năng là để tăng kích thước của những nhãn và tiêu đề,
nhưng họ đang có.
>> Và như vậy, nếu chúng ta muốn thêm dòng phù hợp nhất,
chúng ta có thể làm điều gì đó like-- tôi có cú pháp viết lên đây.
Vì vậy, hãy nhớ chúng ta chỉ cần thêm mô hình là mpg, trọng lượng, mtcars.
Và vì vậy nếu tôi muốn thêm một sự phù hợp tốt nhất dòng, tôi có thể làm một mô hình dòng b.
Và sự bùng nổ, chúng tôi có một dòng phù hợp nhất.
Đó là loại khó để nhìn thấy một lần nữa.
Tôi khá tiếc về khó khăn công nghệ.
Nhưng nó chạy về cơ bản trên trái sang góc dưới bên phải.
>> Và nếu quy mô là lớn hơn, bạn có thể nhìn thấy
mà đánh chặn là những gì bạn có thể tìm thấy từ các số liệu thống kê tóm tắt
nếu bạn gõ mô hình tóm tắt.
OK, vì vậy tôi hy vọng tất cả mọi người được một cái gì đó của một ý thức về những gì
R là, những gì nó có tốt cho.
Bạn có thể làm cho mảnh đất xa đẹp hơn này vào thời gian riêng của bạn, nếu bạn thích.
>> Vì vậy, các giao diện chức năng nước ngoài.
Đây là điều mà không phải là thường bảo hiểm trong các bài giảng nhập môn
hoặc bất cứ điều gì giới thiệu cho r.
Nó không có khả năng bạn sẽ cần đến nó.
Tuy nhiên, tôi thấy nó hữu ích trong các dự án riêng của tôi trong quá khứ.
Và không có tốt hướng dẫn cho nó trực tuyến.
Vì vậy, tôi chỉ cần đi tới vội vàng tất cả các bạn thông qua này
và sau đó bạn có thể tự do rời khỏi.
Và do đó, các nước ngoài giao diện chức năng là gì
bạn có thể sử dụng để gọi ra để xem chức năng với một R. Bên trong,
R được xây dựng trên số học C. R chỉ là 64-bit điểm số học của C,
đó là kiểu double [không nghe được].
Và bạn có thể muốn làm này cho một loạt các lý do.
Đối với một, R được giải thích, đó là không được biên dịch xuống mã máy.
Vì vậy, bạn có thể viết lại của bạn vòng bên trong C và sau đó nhận được
lợi thế của việc sử dụng R. Like nó là nhiều hơn một chút thuận tiện hơn C.
Nó có đồ họa tốt hơn cơ sở vật chất và không có điều gì.
Và trong khi vẫn có thể có được tốc độ đầu ra của các vòng trong,
đó là nơi mà bạn thực sự cần nó.
>> Dùng lại các thư viện C hiện có, đó cũng là quan trọng.
Nếu bạn có một số thư viện C cho như thế, Tôi không biết, biến đổi Fourier,
hoặc một số rất Thái cổ thống kê thủ tục sử dụng
trong vật lý học thiên năng lượng cao hoặc một cái gì đó, tôi không biết.
Vật lý học thiên năng lượng cao thậm chí không một suy nghĩ, tôi nghĩ.
Nhưng bạn có thể làm điều đó thay vì có để viết một cổng R bản xứ của họ.
Và trên the-- và một lần nữa, giống như nếu bạn tìm trong hầu hết các thư viện mặc định của R,
vào các ruột, phần bên trong là sẽ sử dụng các chức năng nước ngoài
giao diện rất rộng rãi.
Họ sẽ có những thứ như Fourier biến hoặc máy tính tương quan
hệ số được viết bằng C, và họ sẽ chỉ có R hàm bao quanh chúng.
Giao diện là một chút khó khăn. tôi nghĩ
khó khăn của nó được phóng đại trong một rất nhiều các hướng dẫn, bạn sẽ tìm thấy.
Nhưng tuy nhiên, nó là một chút bối rối.
Và tôi đã không thể tìm một hướng dẫn tốt cho nó,
vì vậy đây là nó ngay bây giờ.
Một lần nữa, toàn bộ phân khúc này là nhiều hơn để tham khảo sau này.
Đừng lo lắng về việc sao chép tất cả mọi thứ xuống ngay bây giờ.
Vì vậy, các hướng dẫn sau đây là cho các hệ thống Unix-like,
Linux, BSD, OS X. Tôi không biết cách này hoạt động trên Windows,
nhưng xin vui lòng chỉ không làm bạn dự án cuối cùng trên Windows.
Bạn thực sự không muốn.
Unix là bộ tốt hơn nhiều up cho lập trình bình thường.
Vì vậy, về cơ bản nước ngoài chức năng giao diện.
Nếu bạn muốn viết một C chức năng để sử dụng với R,
nó có để có tất cả các đối số là con trỏ.
>> Vì vậy, đối với các giá trị duy nhất, điều này có nghĩa là nó chỉ ra giá trị.
Đối với mảng, đây là một con trỏ đến các yếu tố đầu tiên,
là những gì tên mảng thực sự có ý nghĩa.
Một lần nữa, đây là một cái gì đó bạn nên có khá hoàn toàn xuống sau khi p thiết lập năm.
Tên mảng là chỉ con trỏ đến các yếu tố đầu tiên,
Các loại nổi-điểm là đôi.
Và chức năng của bạn phải trả về void.
Cách duy nhất mà nó có thể thực sự cho R gì đã xảy ra
là bằng cách thay đổi các bộ nhớ mà R đã cho cho nó thông qua các chức năng nước ngoài
giao diện.
>> Vì vậy, tôi đã viết này ví dụ ở đây, đây là
một chức năng mà tính toán sử dụng dot sản phẩm của hai vectơ.
Phải mất hai đối số, vec1, vec2, đó là các vector tự,
và sau đó n, mà là một chiều dài, bởi vì một lần nữa,
R đã xây dựng trong [không nghe được] để tìm hiểu độ dài của vectơ, nhưng C không.
Trong C, vectơ là một tùy ý đoạn phân cách của bộ nhớ.
Vì vậy, cách bạn có thể tính toán dấu chấm sản phẩm
được chỉ định này ra tham số không và sau đó lặp qua
từ 1 đến n sao, bởi vì n là một con trỏ đến chiều dài,
chỉ cần thêm một cái gì đó để này ra tham số.
Và nó có thể được thực hành tốt nếu bạn đang đi làm
này để viết hai chức năng riêng biệt C.
Một trong số họ has-- một trong số họ chỉ có các tham số và các loại
rằng họ sẽ thường có trong C.
>> Vì vậy, phải mất một mảng đối số là con trỏ.
Nhưng lập luận duy nhất có giá trị như n, nó chỉ mất như giá trị của bản sao,
mà không có con trỏ.
Và sau đó nó không [Không nghe thấy] ra con trỏ.
Và sau đó bạn có thể có một khác nhau, về cơ bản,
chức năng bao bọc mà về cơ bản xử lý các yêu cầu
các chức năng nước ngoài giao diện cho bạn.
>> Cách bạn gọi này trong R là, một lần bạn có chức năng của bạn được viết bằng C,
bạn gõ cmd shlib R, R thư viện chia sẻ lệnh,
foo dot c, hoặc bất cứ điều gì Tên tập tin của bạn,
và các hệ điều hành bao không có trong thiết bị đầu cuối R.
Và điều này sẽ tạo ra một thư viện gọi là foo chấm như vậy.
Và sau đó bạn có thể tải nó trong kịch bản của chúng tôi hoặc tương tác
với lệnh dyn dot tải.
Sau đó, có một chức năng trong R được gọi là chấm c.
>> Này có lập luận rằng là đầu tiên tên của hàm trong C
mà bạn muốn gọi.
Và sau đó tất cả các thông số đến chức năng mà,
họ phải theo đúng thứ tự.
Bạn phải sử dụng các loại chức năng cưỡng chế như số nguyên, như
đôi, như nhân vật, và là hợp lý.
Và sau đó khi nó trả về danh sách, mà lại chỉ là
một mảng liên kết của các tên tham số và các giá trị
sau khi chức năng đã chạy.
>> Vì vậy, trong trường hợp này, vì dot sản có đối số vec1, vec2, và int n, n ra.
Để chấm c chúng ta phải chấm sản, tên của các chức năng
chúng ta đang gọi điện thoại, vec1, vec2, kiểu ép buộc.
Chiều dài của một trong hai vector, Tôi chỉ chọn vec1 tùy tiện.
Nó sẽ mạnh mẽ hơn để nói s nguyên chiều dài min của vec1, chiều dài vec2.
Sau đó chỉ cần như zero đôi, bởi vì chúng ta không thực sự
quan tâm những gì diễn ra vào ra tham số bởi vì chúng tôi
thiết lập nó để không anyway.
>> Và sau đó kết quả sẽ là một mảng liên quan lớn về cơ bản
vec1 là bất cứ điều gì, bất cứ điều gì là vec2.
Nhưng chúng tôi quan tâm ra, vì vậy chúng tôi có thể nhận ra điều đó.
Đây lại là một ví dụ rất đồ chơi của một giao diện chức năng nước ngoài.
Nhưng nếu bạn phải tính toán dấu chấm sản phẩm của vectơ lớn trong vòng,
hoặc nếu bạn phải làm cái gì khác trong vòng một,
và bạn không muốn dựa vào R, mà không có một chút trên không
xây dựng vào nó, điều này có thể có ích.
>> Một lần nữa, đây không phải là thường một chủ đề giới thiệu đến R.
Nó không phải rất tốt tài liệu.
Tôi chỉ bao gồm nó vì Tôi tìm thấy nó hữu ích trong quá khứ.
Thực hành như vậy, xấu.
Tôi đã đề cập rằng có một cho vòng lặp trong hàm.
Nói chung bạn không nên, trong ngôn ngữ, không sử dụng nó.
Dựa vào cách R thực hiện lặp đi lặp lại nội bộ, nó có thể được làm chậm.
Họ chỉ còn trông xấu xí.
>> R xử lý vector rất độc đáo, vì vậy đôi khi bạn không cần phải sử dụng nó.
Sau đó, bạn có thể thường thay thế một vector thường
với các chức năng này được gọi là cao chức năng đặt hàng, bản đồ, Giảm,
Tìm, hoặc lọc.
Tôi sẽ chỉ đưa ra một số ví dụ về những gì những làm.
Bản đồ là một chức năng bậc cao vì phải mất một chức năng như một tham số.
Vì vậy, bạn có thể cung cấp cho nó một chức năng, bạn có thể cho nó một mảng,
và nó sẽ được áp dụng các chức năng để mọi phần tử của mảng
và trả về mảng mới.
Giảm thiểu, về cơ bản bạn cung cấp cho nó một mảng, bạn cho nó
một chức năng mà phải mất hai đối số.
Nó sẽ áp dụng các chức năng đầu tiên, Đối số đầu tiên với một số giá trị khởi.
Sau đó, để kết quả là trong lần thứ hai.
Sau đó, để kết quả là ở một phần ba, sau đó đến kết quả đó trong thứ tư.
Và sau đó quay trở lại khi nó được đến cùng.
Vì vậy, ví dụ, nếu bạn muốn tính tổng của tất cả các yếu tố
trong một mảng, hơn bạn có thể gọi là giảm với [không nghe được] giảm một sự bổ sung
chức năng, như func a, b, trả về một cộng b.
Và sau đó bắt đầu một giá trị 0.
>> Và tất cả điều này, bạn có thể tìm thấy chúng được mô tả trong tài liệu hướng R,
trong bất kỳ cuốn sách giáo khoa về lập trình chức năng.
Ngoài ra còn có lớp này chức năng được gọi là áp dụng các chức năng,
mà tôi don't-- họ một chút khó khăn để giải thích,
nhưng nếu bạn nhìn vào [Không nghe thấy] đặt mà tôi đã trích dẫn ở đầu,
ông giải thích cho họ khá tốt trong ruột thừa trên R lập trình.
Thêm về thực tiễn, phụ thêm vào vector.
Yeah?
Tôi nghĩ rằng tôi nên đúng đó.
Trong dòng đầu tiên, mũi tên vec, mũi tên mà không cần phải có.
Bạn có thể gán cho một vector, một lần nữa, bằng cách lấy chiều dài của nó cộng với 1
và gán một số giá trị cho rằng.
Điều đó sẽ mở rộng các vector, hoặc bạn có thể làm equals vec c, newvalue vec.
Một lần nữa, nếu bạn sử dụng C với một đối số là một vector,
hệ thống phân cấp kết quả bị đốn ngã.
Vì vậy, bạn sẽ chỉ nhận được một vector đó là mở rộng bằng 1.
Không bao giờ làm điều này.
>> Lý do tại sao bạn không nên làm điều này là điều này.
Khi bạn phân bổ một vector, nó cung cấp cho nó một đoạn bộ nhớ nhất định.
Nếu bạn tăng kích thước vector, nó phải phân bổ lại các vector
ở một nơi khác.
Và do đó, việc phân bổ lại khá tốn kém.
Tôi sẽ không đi vào chi tiết như thế nào cấp phát bộ nhớ được thực hiện
trên mức hệ điều hành, nhưng phải mất rất nhiều thời gian
để tìm một đoạn mới của bộ nhớ.
Và cũng có thể, nếu bạn tái cấp rất nhiều và rất nhiều
của lớn dần khối, bạn kết thúc
với một cái gì đó gọi là phân mảnh bộ nhớ,
nơi bộ nhớ có sẵn chia thành nhiều khối nhỏ
trong cấp phát bộ nhớ quan điểm.
Và nó trở nên khó khăn hơn và khó hơn để tìm bộ nhớ cho những thứ khác.
Vì vậy, thay vào đó, nếu bạn cần phải làm điều này, nếu bạn cần để phát triển một vector từ một đầu
đến tiếp theo, thay vì phụ thêm để nó liên tục, bạn nên tiền phân bổ nó.
Mũi tên Vec, độ dài vectơ tương đương 1.000, hoặc bất cứ điều gì.
>> Và sau đó bạn chỉ có thể gán với các giá trị của một trong các vector
một thời gian sau khi bạn đã phân bổ nó một lần.
Tôi chạy vào điều này, một lần nữa, công việc mùa hè của tôi khi tôi đang viết NRA khác biệt
phương trình giải quyết.
Không biểu tượng số.
Ý tưởng là khi bạn có một giá trị cho giải pháp của bạn,
bạn sử dụng để tính toán tiếp theo.
Vì vậy, tự nhiên tôi ngây thơ nghiêng là để nói OK,
vì vậy tôi sẽ bắt đầu với một vector đó là một giá trị đáng kể.
Tính từ đó các giá trị tiếp theo mà đi vào vector giải pháp của tôi,
và thêm rằng.
>> Tạo một cái gì đó khác, thêm đó.
Nó đã đi rất, rất chậm.
Và một khi tôi nhận ra điều này và tôi đã thay đổi hệ thống của tôi
từ phụ thêm vào vector này như 10.000 đến 100.000 lần,
chỉ trước phân bổ một vector và chỉ chạy với điều đó.
Tôi nhận được hơn 1.000 lần tốc độ lên.
Vì vậy, đây là một rất phổ biến bẫy cho lập trình R.
Nếu bạn cần phải xây dựng một vector từng mảnh, tiền phân bổ nó.
>> Một chuyến đi chung up-- này là cuối cùng của tôi slide, không worry-- là xử lý lỗi.
R, để được thẳng thắn, không thực sự làm điều này rất tốt.
Có rất nhiều vấn đề có thể nảy sinh.
Ví dụ, nếu bạn nhận được một mảng hoặc một vector ra của một hàm
mà bạn đang mong đợi một đơn giá trị đến từ, hoặc ngược lại,
và bạn vượt qua mà vào một chức năng mà bạn wrote mong một giá trị duy nhất,
đó có thể là một vấn đề.
>> Một số chức năng trả về null là làm, nói,
đọc từ một chìa khóa không tồn tại trong một danh sách.
Nhưng null là không thích C mà nếu bạn cố gắng đọc
từ một con trỏ cũ, [nghe được] để null con trỏ, nó chỉ seg lỗi
và nếu bạn đang ở trong trình gỡ lỗi của bạn nó cho bạn biết chính xác bạn đang ở đâu.
Thay vào đó, null sẽ do-- chức năng sẽ làm những điều không thể đoán trước
nếu họ đang tay null.
Cũng giống như nếu bạn đang trao max null, nó sẽ cung cấp cho bạn vô cùng tiêu cực.
Và như vậy, yeah.
Và vì vậy điều này đã xảy ra với tôi một lần khi tôi đã có
thay đổi một loạt các lĩnh vực trong cơ cấu danh mục của tôi
một lần mà không thay đổi chúng ở nơi khác khi tôi đã được đọc từ họ.
Và sau đó tôi nhận tất cả các loại ngẫu nhiên kết quả vô cùng xén lên
và tôi không có ý tưởng họ đến từ đâu.
Và thật không may, có không thực R chế độ nghiêm ngặt
nơi bạn có thể nói nếu có điều gì có vẻ như nó có thể là một lỗi,
chỉ dừng lại ở đó vì vậy tôi có thể xử lý kỷ luật và khắc phục điều đó.
Tuy nhiên, có cái gì đó gọi là dừng nếu không.
Điều này tương đương với khẳng định của C, nếu bạn đã nói về điều đó.
Tôi không nghĩ rằng C khẳng định là một chủ đề bài giảng,
nhưng lãnh đạo phần của bạn có thể đã đi qua nó.
Và dừng lại nếu không có bất kỳ cơ bản vị ngữ, vì vậy bất kỳ tuyên bố rằng
có thể là đúng hay sai.
Và nếu nó sai, nó dừng lại chương trình của nó.
Nó sẽ cho bạn biết chính xác những gì bạn xếp hàng là trên và những gì tình trạng thất bại.
>> Và điều này rất hữu ích, ví dụ, kiểm tra sự tỉnh táo, đầu vào chức năng.
Vì vậy, nếu bạn có một hàm và bạn mong đợi, nói,
nếu bạn cần đưa cho tôi một ngày, tôi muốn những ngày được chỉ là một vector có độ dài 1
và ở đâu đó giữa 1 và 31.
Và nếu không, tôi biết một cái gì đó đi sai.
Và tôi chọn để dừng lại ở đó trước đây có tiếng gõ ngẫu nhiên trên tác dụng với mã
rằng nó khó hơn để theo dõi thông qua.
Vì vậy, đó là một thể sử dụng cho dừng nếu không.
>> Nhưng dù sao, OK.
Vì vậy, đó là kết thúc.
Cảm ơn bạn rất nhiều vì đã đến.
Tôi là một người nghiệp dư hạng tại đây.
Vì vậy, xin lỗi nếu bạn đang buồn chán hoặc bối rối hoặc những gì có bạn.
Tôi đang hạnh phúc để nhận câu hỏi qua email tại connorharris@college.harvard.edu.
Điều này cũng đi cho tất cả mọi người xem này sống hoặc sau này.
Ngoài ra, mặc dù tôi không một TF, tôi cũng rất
sẵn sàng để phục vụ như là một không chính thức cố vấn cho bất cứ ai
sử dụng R trong một dự án cuối cùng.
>> Nếu bạn muốn rằng, sau đó chỉ cần nói chuyện với TF của bạn
và sau đó viết cho tôi một email như vậy Tôi biết những gì bạn đang làm việc trên
và vì vậy tôi có thể thiết lập cuộc họp lần với bạn nếu bạn muốn.
Vì vậy, một lần nữa, cảm ơn bạn rất nhiều.
Tôi hy vọng bạn thích nó.
>> Đung [không nghe được].
>> CONNER HARRIS: Tất nhiên.
>> Đung Những loại của một dự án một sinh viên CS sẽ sử dụng R cho?
CONNER HARRIS: Vì vậy, nếu bạn không làm cái gì đó là hoàn toàn trong khai thác dữ liệu,
ví dụ, và có rất nhiều điều
bạn có thể làm với điều đó với dữ liệu khai thác và học máy.
Bạn có thể muốn sử dụng R cho một thành phần của một cái gì đó.
Tôi đưa ra, ban đầu, ví dụ của nếu bạn đang viết một trang web
và bạn muốn chạy tự động phân tích thống kê các máy chủ của bạn
bản ghi tại một thời điểm nhất định mỗi ngày, đó có thể là một cái gì đó
rất dễ dàng để làm chỉ trong ngắn R kịch bản mà bạn có thể lên lịch
để chạy mỗi đêm, cho ví dụ.
>> Và tôi chắc chắn rằng, nếu có lý do nào bạn muốn
muốn thống kê hoặc các tính năng đồ họa và có này chạy tự động thay
của việc có để tương tác với những thứ trong Excel,
ví dụ, đó là một cái gì đó bạn có thể muốn sử dụng R cho.
Vì vậy, bất kỳ câu hỏi nhiều hơn nữa trước khi tôi rời khỏi?
Không?
Tất cả các bên phải, tốt, một lần nữa, cảm ơn bạn rất nhiều vì đã đến.