Cách tiếp cận tốt để dạy R trong phòng thí nghiệm máy tính là gì?


15

Đã có một số câu hỏi hay và bộ câu trả lời về sách giới thiệu hoặc phương pháp tiếp cận để học R, ví dụ ở đâyđây . Nhưng tôi có một vấn đề hơi khác - cách tốt nhất để chạy một phiên dài một giờ (hoặc một vài phiên như vậy) trong phòng thí nghiệm máy tính sẽ khiến mọi người bắt đầu ở R, làm quen với cách tiếp cận cơ bản của nó, v.v.

Kế hoạch hiện tại của tôi sẽ là làm việc hiệu quả thông qua các chương giới thiệu của một thứ như SimpleR của Verzani và sau đó giới thiệu một bộ dữ liệu quen thuộc, nhưng có cách tiếp cận nào khác mà mọi người thấy hữu ích không? Ví dụ, có tốt không khi giới thiệu dữ liệu thực ngay lập tức hoặc giải quyết các vấn đề theo cách trừu tượng hơn? Tôi có nên tìm hiểu kỹ về cách sử dụng dấu ngoặc vuông hay kích thích mọi người bằng các ví dụ về đồ họa mạng?

Đối tượng mục tiêu của tôi quen thuộc với các số liệu thống kê (mặc dù không phải là chuyên gia) và người dùng SPSS có thẩm quyền; không quen thuộc với các ngôn ngữ lập trình ngoài loại macro và tập lệnh mà bạn có trong SPSS và những thứ tương tự.

Bất kỳ lời khuyên hoặc tài liệu tham khảo cho kế hoạch bài học sẽ được đánh giá cao. Tuy nhiên, tôi không muốn sao chép nhiều danh sách tốt các tài liệu trực tuyến giới thiệu R - tham khảo nghiêm ngặt câu hỏi hướng dẫn trực tiếp.


Có lẽ nên là một wiki cộng đồng, phải không?
Peter Ellis

1
Âm thanh như một ý tưởng tốt cho tôi. :)
Michelle

1
Điều thực sự quan trọng đối với cách trả lời câu hỏi này là thiết lập của bạn sẽ là gì. Nếu bạn có một single "giờ phiên dài ... trong một phòng thí nghiệm máy tính" có được sẽ rất ít bạn có thể làm và bạn sẽ có rất ít người cải đạo. Nếu bạn có "một vài thứ như vậy" và họ đã biết các số liệu thống kê và lập trình cơ bản khá kỹ lưỡng, bạn có thể ưu tiên máy bơm để chúng có thể tự mình tiến về phía trước và nhiệt tình thử, nhưng cách này đòi hỏi một cách tiếp cận khác. Đối với những người có một số thống kê và không có kiến thức lập trình, một khóa học kéo dài một học kỳ sẽ là lý tưởng.
gung - Tái lập Monica

Hmm, điểm tốt @gung, ok, thiết lập khá cụ thể. Tôi là người quản lý của họ và vì vậy chỉ có thể nói cho họ biết phải làm gì. Chúng tôi có một phiên kéo dài hai tuần một lần về các kỹ năng thống kê (một số người trong số chúng tôi thay phiên trình bày) sẽ thực tế hơn nhiều và chúng tôi đã đồng ý thực hiện nhiều điều đó trong phòng thí nghiệm trên các máy có dữ liệu thực. Vì vậy, tôi nên xác định rằng yêu cầu thực sự là làm cho họ đủ quen thuộc với R trong một hoặc hai phiên mà khi chúng ta làm những việc như mô hình hồi quy phù hợp hoặc xem xét các sơ đồ chẩn đoán trong các phiên tiếp theo, chúng ta sẽ không bị phân tâm hoàn toàn bởi những điều cơ bản.
Peter Ellis

2
@gung +1 lớn cho nhận xét kỹ lưỡng của bạn. Tôi đã dạy R từ lâu và cuối cùng tôi đã đi đến một kết luận tương tự: mọi người không hiểu gì về lập trình hoặc một dấu nhắc dòng lệnh có thể sẽ gặp một số khó khăn khi đối phó với R. Nó trở nên tồi tệ hơn khi chúng ta phải làm cho học sinh quen với thống kê sử dụng R trong vài giờ ...
chl

Câu trả lời:


6

Tôi tranh luận về một cách tiếp cận hoàn toàn khác. Tôi đã thấy các hướng dẫn R được dạy từ hai quan điểm khác nhau: cách tiếp cận khối xây dựng, trong đó người dùng được giới thiệu các khái niệm cơ bản của R và cách tiếp cận gây sốc, trong đó người dùng được thể hiện khả năng tuyệt vời của R nhưng vẫn còn tương đối ít hiểu biết về cách làm bất cứ điều gì. Loại thứ hai chắc chắn tạo ra tiếng vang mạnh mẽ hơn với các học sinh, nhưng không ai có vẻ rất hiệu quả trong việc tạo ra người dùng thực sự.

Thay vào đó, tôi sẽ thực hiện một nhiệm vụ phổ biến và tương đối đơn giản trong SPSS và chuyển qua chuyển đổi nó thành R, với một chút ngây thơ giả tạo về phía bạn - ví dụ, làm theo gợi ý tuyệt vời của Xi'an để tìm kiếm một số chức năng mong muốn ??thay vì chỉ nhớ lại chức năng đúng từ bộ nhớ. Người mới của bạn gần như chắc chắn sẽ chuyển đổi các quy trình hiện có khi họ học R, không viết chúng từ đầu - vậy tại sao không chỉ cho họ chính xác cách bạn thực hiện điều đó?

Một ví dụ điển hình có thể bao gồm chỉ tải dữ liệu, thực hiện một số mô tả và bật ra một số sơ đồ cơ bản. lm()có thể rất, rất đơn giản và tạo ra kết quả mà họ sẽ hiểu và có thể so sánh với đầu ra SPSS, do đó cũng có thể tốt.

Đối với bài tập về nhà, hãy yêu cầu họ thực hiện chuyển đổi một trong các quy trình đơn giản của họ hoặc tải và khám phá bộ dữ liệu mà họ rất quen thuộc. Cung cấp cho họ một lần một lần để tìm ra nơi nào đang xảy ra sự cố, sau đó bao gồm những điều đó trong phiên tiếp theo với nhiều chuyển đổi ví dụ hơn. Các khái niệm từ danh sách của bạn chắc chắn sẽ xuất hiện (đặt cược của tôi: các yếu tố so với vectơ ký tự, so với áp dụng) - và sau đó bạn sẽ có một động lực trong thế giới thực để che đậy chúng. Nếu họ không đến (attach ), thì họ chưa thực sự cần thiết - nếu điều đó có nghĩa là người mới của bạn viết một mã không thành ngữ sớm ( forthay vì apply), tôi sẽ không thấy tác hại.

Bằng cách này, sinh viên của bạn có thể tiến bộ giống như cách sinh viên ngoại ngữ làm (hoặc ít nhất là cách tôi đã làm): bản dịch thô sơ của các biểu thức đơn giản thúc đẩy mong muốn diễn đạt phức tạp hơn, điều này gây ra mong muốn hiểu sâu hơn về ngữ pháp , mà cuối cùng dẫn đến biểu hiện thành ngữ. Đừng nhảy vào "ngữ pháp" quá sớm và đừng quá lo lắng về việc dạy cho họ những điều họ không hỏi vì dù sao họ cũng sẽ quên nó. Con trỏ nhẹ nhàng về biểu hiện thành ngữ là tuyệt vời ( forso với apply), nhưng điều chính là để làm cho chúng tạo ra đầu ra và tự khám phá.


(+1) Cảm ơn, Matt, nghe có vẻ như những lời khuyên tuyệt vời. Tôi đặc biệt thích hai đoạn cuối.
chl

Cảm ơn Matt (và tất cả những người khác - tất cả sự giúp đỡ tuyệt vời). Tôi chắc chắn sẽ sử dụng ?? tiếp cận và yêu cầu họ tạo lại trong phòng thí nghiệm và làm các công việc chung mà họ làm với các phần mềm khác (SPSS và Harmoni, về cơ bản là một gói chéo). Tôi vẫn cần một cái gì đó hợp lý chỉ thị để khiến họ mở ra và biết bắt đầu từ đâu (và tôi đã sửa đổi kế hoạch bài học 1 của mình cho phù hợp) nhưng tôi nghĩ thúc đẩy việc tự học bên ngoài phòng thí nghiệm chắc chắn là cách tốt nhất.
Peter Ellis

7

OK, đây là câu trả lời của riêng tôi cho đến nay về những gì tôi nghĩ sẽ khiến mọi người bắt đầu và thúc đẩy họ tìm hiểu thêm (tôi đang cố gắng loại bỏ chúng khỏi SPSS, theo nghĩa đen không thể thực hiện một số điều chúng ta cần để phân tích khảo sát phức tạp, ít nhất là mà không mua thêm các mô-đun mà tôi từ chối làm).

Vào cuối phiên đầu tiên, bạn sẽ có thể:

Khái niệm cơ bản

  • Sử dụng giao diện để thực hiện các phép tính đơn giản (sử dụng R làm máy tính)
  • Bắt đầu, lưu và tải một cửa sổ script và sử dụng nó một cách hiệu quả
  • Tạo và xóa các đối tượng trong không gian làm việc của bạn
  • Xem thư mục nào là thư mục làm việc của bạn
  • Hiểu cách thư mục P: / R / yourid hoạt động và việc lưu không gian làm việc khi thoát không
  • Tải hình ảnh của một không gian làm việc bao gồm cả XXX (dữ liệu thường được sử dụng của chúng tôi)
  • Liệt kê các đối tượng trong bộ nhớ
  • Liệt kê tên của các cột (biến) trong khung dữ liệu
  • In một đối tượng ra màn hình
  • Đính kèm và tách khung dữ liệu
  • Biết ý nghĩa của: đối tượng, hàm, đối số (đối với hàm), không gian làm việc, vectơ, khung dữ liệu, ma trận, số, hệ số
  • Biết cách tìm kiếm trợ giúp về một chức năng
  • Sử dụng ?? để tìm danh sách các chức năng liên quan
  • Đi đâu trên web và sách địa phương và mạng LAN của chúng tôi để có thêm tài nguyên
  • hiểu đủ các kiến ​​thức cơ bản về R để tham gia các buổi thí nghiệm về các kỹ thuật thống kê cụ thể

Thao tác dữ liệu

  • Tạo một vectơ số bằng toán tử:
  • Làm một bảng đếm cho một biến
  • Thực hiện một dấu thập đếm cho hai biến
  • Tạo một đối tượng mới (ví dụ: một trong các bảng trên) để thao tác thêm
  • Chuyển một ma trận hoặc bảng
  • Tạo một vectơ phương tiện của một biến liên tục theo một yếu tố sử dụng tapply ()
  • Liên kết một số vectơ với nhau bằng cbind () hoặc data.frame ()
  • Tạo một tập hợp con của ma trận bằng cách sử dụng []
  • Tạo một phép biến đổi đơn giản, ví dụ logarit hoặc căn bậc hai

Số liệu thống kê

  • Tính tương quan của hai biến liên tục

Đồ họa

  • Tạo một biểu đồ của một biến liên tục
  • Tạo một cửa sổ đồ họa và chia nó thành 2 hoặc 4 phần
  • Tạo một biểu đồ đường mật độ của một biến liên tục
  • Tạo một biểu đồ phân tán gồm hai biến liên tục
  • Thêm một đường thẳng vào một biểu đồ phân tán (dọc, ngang hoặc ab)
  • Tạo nhãn cho trục và tiêu đề

Vào cuối ba buổi và thực hiện một loạt các bài tập giữa bạn cũng có thể:

Khái niệm cơ bản

  • Nhập dữ liệu ở định dạng SPSS hoặc .csv
  • Xóa tất cả các đối tượng trong không gian làm việc của bạn để bắt đầu làm mới
  • sử dụng thư viện gói
  • Lưu hình ảnh không gian làm việc và hiểu các nguyên tắc cơ bản R và bộ nhớ
  • Tạo các biến ngẫu nhiên
  • Sử dụng c () để tạo một vectơ
  • Có một cảm giác tốt về nơi để đi để tìm hiểu các phương pháp và kỹ thuật mới

Thao tác dữ liệu

  • Sử dụng tổng hợp () trên tập dữ liệu thực, ví dụ: số lượt truy cập của khách theo tháng và quốc gia
  • Các == ,! = Và% trong% toán tử; vectơ logic; và sử dụng chúng để tập hợp dữ liệu
  • ifelse () và sử dụng nó để tạo các biến mới
  • hàm tối đa, cực tiểu và tương tự và cách chúng hoạt động với vectơ
  • Tạo một vectơ hoặc ma trận để lưu trữ nhiều kết quả
  • Sử dụng một vòng lặp để lặp lại một chức năng tương tự nhiều lần
  • Sử dụng áp dụng () để áp dụng một hàm cho mỗi cột hoặc hàng của ma trận
  • Tạo một yếu tố theo thứ tự
  • Sử dụng cut () để mã hóa lại một biến số

Số liệu thống kê

  • Chi kiểm tra vuông cho một bảng dự phòng
  • Phiên bản mạnh mẽ của mối tương quan
  • Khớp mô hình tuyến tính với hai biến liên tục, đặt kết quả vào một đối tượng và sử dụng anova (), tóm tắt () và âm mưu () để xem kết quả
  • hiểu đủ về các mô hình và cách chúng hoạt động trong R để sẵn sàng áp dụng các kỹ năng của bạn vào một loạt các kiểu mô hình
  • Sử dụng boot () để thực hiện bootstrap trên một hàm cơ bản như cor (), mean () hoặc var ()
  • Sử dụng mẫu () trên tập dữ liệu thực tế

Đồ họa

  • Tạo một biểu đồ đường mật độ mạng của một biến liên tục với các mức khác nhau của một yếu tố
  • qqnorm
  • xây dựng một cốt truyện phân tán với các điểm màu sắc và ký tự khác nhau thể hiện các cấp độ khác nhau của một yếu tố; thêm điểm hoặc đường vào một biểu đồ phân tán hiện có
  • thêm một huyền thoại
  • dấu chấm
  • errbar ()
  • sử dụng vòng lặp để vẽ nhiều biểu đồ trên một trang

2
Với thiết lập của bạn, điều này có vẻ hợp lý, nhưng có rất nhiều để bao quát trong một giờ với người mới. Tôi sẽ liên tục nhấn mạnh các nguồn lực có sẵn cho họ để xây dựng sự tự túc. Cụ thể, xem qua hướng dẫn R đi kèm với việc cài đặt và sử dụng các tệp trợ giúp. Ví dụ, để giới thiệu tương quan bắt đầu bằng ?? tương quan, hãy chỉ ra cách tìm kiếm danh sách, sau đó và hiển thị cách đọc và hiểu trợ giúp; dạy cor, hist, vv từ các tài liệu . Cho dù họ thông minh đến đâu, vẫn có giới hạn chỉ trong một giờ - họ cần học cách tự mình lấy thông tin & khắc phục sự cố .
gung - Phục hồi Monica

1
Tôi nghĩ rằng tôi làm việc cách bạn khoảng 10 phút đi bộ, vì vậy hãy cho tôi một tiếng hét nếu bạn muốn đi qua bất cứ thứ gì qua cà phê. :)
Michelle

Tôi không nghĩ nó chủ yếu là cái gì , nó là như thế nào . Đó là về việc khiến học sinh tự học một phần và có một bảng cheat toàn diện trong tay + một số bài tập về nhà.
Ondrej

@Michelle - nghe có vẻ hay, gửi email cho tôi tại peter.ellis [at] med.govt.nz
Peter Ellis

4
Đây là một danh sách đầy tham vọng đáng kinh ngạc! Tôi không thể tưởng tượng bạn bao gồm tất cả những điều này trong ba giờ - tôi không nghĩ rằng tôi thậm chí có thể nói những từ để nói về tất cả những điều này trong ba giờ, ít hơn nhiều câu trả lời. Có một vài khái niệm tôi bỏ qua hoàn toàn: không gian làm việc (tôi không thích sử dụng chúng - tái tạo mọi thứ từ tập lệnh làm cho mã mạnh hơn), đính kèm (cũng có vấn đề, đặc biệt đối với người dùng mới không hiểu môi trường), chuyển đổi (tầm thường để tìm kiếm khi bạn cần nó) và cbind (tôi gần như không bao giờ sử dụng cái này).
Matt Parker

2

Vào danh sách của Peter, tôi sẽ thêm:

  1. khung dữ liệu tập hợp con: tập hợp con theo quan sát (ví dụ: tất cả các phản hồi trên 3), tập hợp con theo biến.
  2. sử dụng các câu lệnh ifelse (đây là một đường cong học tập rất lớn đối với tôi, tôi tiếp tục cố gắng sử dụng kiểu câu lệnh if), đặc biệt là ifelse lồng nhau.
  3. tóm tắt dữ liệu thành một khung dữ liệu nhỏ hơn bằng cách sử dụng lệnh tổng hợp.
  4. học cách sử dụng toán tử ==.
  5. sử dụng <- chứ không phải =
  6. đổi tên biến
  7. Các bẫy vector hóa cơ bản, chẳng hạn như max (A, B) trong SAS không thực hiện những gì max (A, B) làm trong R, nếu A là một biến trong khung dữ liệu và B là một giá trị duy nhất. Để làm tương đương với mã SAS (và có thể là mã SPSS), tôi sử dụng câu lệnh ifelse.
  8. sử dụng với thay vì đính kèm. :)

Nhiều suy nghĩ hơn: Có lẽ họ sử dụng COMPUTErất nhiều trong SPSS, vì vậy bao quát cách làm điều đó Rsẽ tốt. Ngoài ra, làm thế nào để RECODEbiến trong R. Khi tôi đang sử dụng SPSStôi nghĩ rằng hầu hết công việc "không phân tích" của tôi là sử dụng hai lệnh đó.


1
Hãy xem pmax ...
Elvis

@ Xi'an, đến đó để xem nhanh (hoặc chọc!) Ah, tôi đã không nhấp vào đó là bạn, tôi đã đến blog của bạn một vài lần thông qua các liên kết R-blogger. :)
Michelle

2
Khi che đậy, hãy ifelseCHẮC CHẮN để chỉ cho họ cách thức hoạt động và cảnh báo trong tài liệu của nó có ý nghĩa gì. Nó hoạt động một cách logic khi bạn nghĩ về nó, nhưng tôi đã thấy sự nhầm lẫn hoàn toàn về việc ifelse"thay đổi" các loại biến và gây ra rất nhiều thời gian bị mất.
Wayne

2
@ Xi'an: Trợ giúp R ​​nói, "toán tử = chỉ được phép ở cấp cao nhất (ví dụ: trong biểu thức hoàn chỉnh được nhập tại dấu nhắc lệnh) hoặc là một trong các biểu thức con trong danh sách biểu thức được sắp xếp." Tôi có thể nghĩ về các tình huống khác được đề cập trong blog của bạn, mặc dù cho đến nay chỉ có những điều C-ish như: a <- 1:5 ; b <- 4 ; a[b = 3] ; b ; a[b <- 3] ; bnơi đăng ký cho kết quả tương tự, nhưng bkhác (lần đầu không thay đổi, lần thứ hai thay đổi). Điều =này không bao giờ có nghĩa là được giao và đáng lẽ không bao giờ được thay đổi để cố gắng làm cho R trở nên ngon miệng hơn. Đừng làm điều đó.
Wayne

1
@Elvis +1000 internets cho bạn, pmaxhoạt động rất tốt.
Michelle
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.