Làm cách nào để chạy phân tích hồi quy thông thường trong R với cả hai giá trị số / phân loại?


17

Dữ liệu cơ sở : Tôi có ~ 1.000 người được đánh dấu bằng các đánh giá: '1,' [tốt] '2,' [giữa] hoặc '3' [xấu] - đây là những giá trị tôi đang cố gắng dự đoán cho mọi người trong tương lai . Ngoài ra, tôi có một số thông tin về nhân khẩu học: giới tính (phân loại: M / F), tuổi tác (số: 17-80) và chủng tộc (phân loại: đen / da trắng / latino).

Tôi chủ yếu có bốn câu hỏi:

  1. Ban đầu tôi đã cố chạy bộ dữ liệu được mô tả ở trên dưới dạng phân tích hồi quy bội. Nhưng gần đây tôi đã biết rằng vì sự phụ thuộc của tôi là một yếu tố có trật tự và không phải là một biến liên tục, tôi nên sử dụng hồi quy logistic thứ tự cho một cái gì đó như thế này. Tôi ban đầu sử dụng một cái gì đó như mod <- lm(assessment ~ age + gender + race, data = dataset), bất cứ ai có thể chỉ cho tôi đi đúng hướng?

  2. Từ đó, giả sử tôi nhận được các hệ số mà tôi cảm thấy thoải mái, tôi hiểu cách chỉ cắm các giá trị số cho x1, x2, v.v. - nhưng tôi sẽ xử lý như thế nào với chủng tộc, ví dụ, nơi có nhiều phản hồi: đen / da trắng / latino? Vì vậy, nếu nó cho tôi biết hệ số da trắng là 0,289 và ai đó tôi đang cố gắng dự đoán là da trắng, làm thế nào để tôi cắm lại vì giá trị không phải là số?

  3. Tôi cũng có các giá trị ngẫu nhiên bị thiếu - một số cho chủng tộc, một số cho giới tính, v.v. Tôi có phải làm gì thêm để đảm bảo rằng điều này không sai lệch gì không? (Tôi nhận thấy khi tập dữ liệu của tôi được tải vào R-Studio, khi dữ liệu bị thiếu được tải dưới dạng NA, R sẽ nói một cái gì đó giống như (162 observations deleted due to missingness)- nhưng nếu chúng được tải dưới dạng khoảng trống, thì không có gì.)

  4. Giả sử tất cả những điều này hoạt động và tôi có dữ liệu mới về giới tính, tuổi tác và chủng tộc mà tôi muốn dự đoán - có cách nào dễ dàng hơn trong R để chạy tất cả những điều đó thông qua bất kỳ công thức nào của tôi với các hệ số mới hóa ra là, thay vì làm bằng tay? (Nếu câu hỏi này không phù hợp ở đây, tôi có thể đưa nó trở lại diễn đàn R.)

Câu trả lời:


16

Đây là một thông tin nhỏ có thể chỉ cho bạn đi đúng hướng.

Về dữ liệu của bạn, những gì bạn có là một phản hồi với nhiều danh mục và bất cứ khi nào bạn đang cố gắng mô hình hóa một phản hồi phân loại, bạn có quyền thử và sử dụng một số loại mô hình tuyến tính tổng quát (GLM). Trong trường hợp của bạn, bạn có thêm thông tin mà bạn phải tính đến phản hồi của mình và đó là mức độ phản hồi của bạn có thứ tự tự nhiên tốt> trung bình> xấu, hãy chú ý điều này khác với việc cố gắng mô hình hóa một phản hồi như bóng màu của ai đó có khả năng mua (đỏ / xanh / xanh), những giá trị này không có thứ tự tự nhiên. Khi thực hiện loại mô hình này với phản hồi theo thứ tự, bạn có thể muốn xem xét sử dụng mô hình tỷ lệ cược tỷ lệ.

http://en.wikipedia.org/wiki/Ordered_logit

Tôi đã không sử dụng nó cho mình, nhưng polr()chức năng trong gói MASS có thể sẽ được sử dụng, thay vào đó tôi đã sử dụng lrm()chức năng trong gói rms để thực hiện các loại phân tích tương tự, và thấy nó khá hữu ích. Nếu bạn tải các gói này chỉ cần sử dụng ?polrhoặc ?lrmcho thông tin chức năng.

Đủ nền, cho câu hỏi của bạn:

  1. Điều này cần được đề cập ở trên, kiểm tra các gói / chức năng này và đọc các mô hình hồi quy logistic và tỷ lệ cược tỷ lệ

  2. Bất cứ khi nào bạn có một đồng biến phân loại (Chủng tộc / Giới tính / Màu tóc), bạn muốn coi chúng là "các yếu tố" trong mã hóa R của mình để mô hình hóa chúng một cách thích hợp. Điều quan trọng là phải biết yếu tố là gì và cách chúng được đối xử, nhưng về cơ bản, bạn coi mỗi loại là một cấp độ riêng biệt và sau đó mô hình hóa chúng theo một cách thích hợp. Chỉ cần đọc các yếu tố trong các mô hình và bạn sẽ có thể trêu chọc những gì đang xảy ra. Hãy nhớ rằng việc coi các biến phân loại là các yếu tố không phải là duy nhất cho các mô hình glm hoặc các mô hình tỷ lệ cược tỷ lệ, mà thường là cách tất cả các mô hình xử lý các biến phân loại. http: //www.stat.ber siêu.edu / classes / s133 / fact.html

  3. Thiếu giá trị đôi khi có thể gây rắc rối nhưng nếu bạn thực hiện phân tích khá cơ bản thì có thể an toàn khi chỉ xóa các hàng dữ liệu chứa giá trị bị thiếu (điều này không phải lúc nào cũng đúng, nhưng dựa trên mức độ kinh nghiệm hiện tại của bạn đoán bạn không cần phải quan tâm đến các chi tiết cụ thể về thời điểm và cách xử lý các giá trị còn thiếu). Trong thực tế đây là khá nhiều những gì R làm. Nếu bạn có dữ liệu mà bạn đang sử dụng để lập mô hình, nếu bạn thiếu thông tin liên tiếp cho phản hồi của bạn hoặc bất kỳ đồng biến nào trong mô hình R sẽ loại trừ dữ liệu này (đây là cảnh báo bạn nhìn thấy). Rõ ràng nếu bạn loại trừ một tỷ lệ lớn dữ liệu của bạn do thiếu, kết quả của bạn có thể bị sai lệch và có thể tốt để thử và nhận thêm một số thông tin về lý do tại sao có quá nhiều giá trị bị thiếu, nhưng nếu bạn Thiếu 162 quan sát trong 10.000 hàng dữ liệu Tôi sẽ không đổ mồ hôi quá nhiều. Bạn có thể google lên các phương pháp xử lý dữ liệu bị thiếu nếu bạn quan tâm đến một số chi tiết cụ thể hơn.

  4. Hầu như tất cả các đối tượng mô hình R ( lm, glm, lrm, ...) sẽ có liên quan đến predict()chức năng mà sẽ cho phép bạn để tính toán các giá trị dự đoán cho tập dữ liệu mô hình hiện tại của bạn và bổ sung thêm bộ dữ liệu mà bạn muốn dự đoán một kết quả cho. Chỉ cần tìm kiếm ?predict.glmhoặc ?predict.lmthử và nhận thêm một số thông tin cho bất kỳ loại mô hình nào bạn muốn làm việc với. Đây là một điều rất điển hình mà mọi người muốn làm với các mô hình vì vậy hãy yên tâm rằng có một số chức năng và phương thức được xây dựng nên thực hiện việc này tương đối đơn giản.

May mắn nhất!


2
  1. Có, logit hoặc probit được đặt hàng sẽ là nơi bắt đầu. Đây là một hướng dẫn về logit được đặt hàng sử dụng R. Các câu hỏi CV khác có thể giúp bạn với bất kỳ snags nào bạn gặp phải trong thử dùng các thẻ 'logit,' 'probit' và 'ordinal'.

  2. Một cách tiếp cận tiêu chuẩn để xử lý một biến độc lập phân loại với các giá trị là giả mã nó thành các giá trị nhị phân . Điều này được giải thích đầy đủ hơn ở đây , nhưng tóm lại: Hiệu ứng của một loại được đưa vào đánh chặn và các hệ số được trang bị cho các loại còn lại. Trong ví dụ của bạn, sẽ có một biến giả sẽ được mã hóa thành 1 cho người trả lời da trắng, 0 nếu không.k - 1kk-1caucasian

  3. Xử lý dữ liệu bị thiếu rất nhiều phụ thuộc vào vấn đề hiện tại và có, cách bạn xử lý dữ liệu bị thiếu có thể đưa ra sai lệch. Cuốn sách này trích dẫn độc đáo mô tả bốn cơ chế có thể tạo ra dữ liệu bị thiếu, điều này sẽ giúp bạn xem xét sự thiên vị tiềm năng trong vấn đề của chính bạn. (Đặc biệt, mục 25.1, trang 530.)

  4. Nhiều gói mô hình có một predictchức năng nào đó, và thực sự hướng dẫn đầu tiên được liên kết ở trên bao gồm một trình diễn.


Cám ơn rất nhiều! Theo dõi nhanh trên # 2: Đó là giả định cơ bản của tôi - nhưng mã nào có nhiều hơn hai biến? Ví dụ, da trắng, đen, latino.
Ryan

Rất hoan nghênh! Trong ví dụ đó, bạn sẽ chọn một danh mục để tham gia vào việc đánh chặn, nói latinovà giả cho hai mục còn lại. Giá trị 1 cho hình caucasiannộm cho biết người trả lời là người da trắng, tương tự với blackbiến giả. Giá trị 0 cho cả hai chỉ ra người trả lời Latino. Có lý?
Sean Easter

Vì vậy, tôi chỉ nên thay đổi tập dữ liệu từ một cột có nhiều phản hồi ('đen,' 'da trắng' và 'latino') thành một cột 'đen' với 1 và 0, một cột 'da trắng' với 1 và 0 và một Cột 'latino' với 1s và 0?
Ryan

Đó là một cách tiếp cận sẽ hoạt động tốt. Sự khác biệt duy nhất từ ​​việc sử dụng hai cột là cách bạn diễn giải chặn. Bạn có thể làm điều này bằng tay, nhưng tôi tin rằng các yếu tố trong R có thể xử lý nó cho bạn. Hãy thử điều này bằng cách sử dụng các yếu tố với một ví dụ tương tự. Chúc mừng!
Sean Easter

1
Liên kết đến hướng dẫn bị hỏng. Nếu ai đó có thể sửa nó, đó sẽ là tuyệt vời!
Dan Hicks
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.