Biến đổi các biến cho hồi quy bội trong R


26

Tôi đang cố gắng thực hiện một hồi quy bội trong R. Tuy nhiên, biến phụ thuộc của tôi có âm mưu sau:

DV

Đây là một ma trận phân tán với tất cả các biến của tôi ( WARlà biến phụ thuộc):

SPLOM

Tôi biết rằng tôi cần thực hiện chuyển đổi trên biến này (và có thể là các biến độc lập?) Nhưng tôi không chắc chắn về chuyển đổi chính xác cần thiết. Ai đó có thể chỉ cho tôi đi đúng hướng? Tôi vui mừng cung cấp bất kỳ thông tin bổ sung nào về mối quan hệ giữa các biến độc lập và phụ thuộc.

Đồ họa chẩn đoán từ hồi quy của tôi trông như sau:

Sơ đồ chẩn đoán

CHỈNH SỬA

Sau khi chuyển đổi các biến phụ thuộc và độc lập bằng cách sử dụng các biến đổi Yeo-Johnson, các sơ đồ chẩn đoán trông như thế này:

Sau khi biến đổi

Nếu tôi sử dụng GLM với liên kết nhật ký, đồ họa chẩn đoán là:

GLM với liên kết nhật ký


3
Xin chào @ zglaa1 và chào mừng. Tại sao bạn nghĩ rằng bạn phải biến đổi các biến? Bước đầu tiên sẽ là phù hợp với hồi quy với varibales ban đầu và sau đó xem xét sự phù hợp (phần dư, v.v.). Phần dư nên phân phối bình thường, không phải các biến. Có lẽ bạn sẽ thấy bài viết này thú vị.
COOLSerdash

Cảm ơn bạn cho cả các liên kết và gợi ý. Tôi đã chạy hồi quy của mình và tôi biết các biến cần phải được chuyển đổi dựa trên cốt truyện sau: i.imgur.com/rbmu14M.jpg Tôi có thể thấy tính không thiên vị và thiếu biến thiên liên tục trong phần dư. Ngoài ra, chúng không bình thường.
zgall1

@COOLSerdash Tôi đã xem qua liên kết. Tôi có một nền tảng cơ bản trong thống kê để tôi hiểu các cuộc thảo luận. Tuy nhiên, vấn đề của tôi là tôi có kinh nghiệm hạn chế khi thực sự áp dụng các kỹ thuật tôi đã học nên tôi phải vật lộn để tìm ra chính xác những gì tôi cần làm với dữ liệu của mình (trong Excel hoặc R) để thực hiện các phép biến đổi cần thiết.
zgall1

Cảm ơn đồ họa. Bạn hoàn toàn đúng khi nói rằng sự phù hợp này là tối ưu. Bạn có thể vui lòng tạo ra một ma trận phân tán với DV và IV trong hồi quy không? Điều này có thể được thực hiện Rbằng lệnh pairs(my.data, lower.panel = panel.smooth)nơi my.datasẽ là tập dữ liệu của bạn.
COOLSerdash

2
Một cách tiếp cận chung để chuyển đổi là biến đổi Box-Cox . Những gì bạn có thể làm là như sau: 1. Phù hợp với mô hình hồi quy của bạn với lmviệc sử dụng các biến chưa được dịch. 2. Sử dụng hàm boxcox(my.lm.model)từ MASSgói để ước tính . Lệnh cũng tạo ra một đồ họa mà bạn có thể tải lên để thuận tiện cho chúng tôi. λ
COOLSerdash

Câu trả lời:


30

Cuốn sách của John Fox Một người bạn đồng hành R với hồi quy ứng dụng là một nguồn tài nguyên tuyệt vời về mô hình hồi quy ứng dụng với R. Gói carmà tôi sử dụng xuyên suốt trong câu trả lời này là gói đi kèm. Cuốn sách cũng có trang web với các chương bổ sung.


Chuyển đổi phản hồi (còn gọi là biến phụ thuộc, kết quả)

Các phép biến đổi Box-Cox cung cấp một cách có thể để chọn một phép biến đổi của đáp ứng. Sau khi điều chỉnh mô hình hồi quy có chứa các biến chưa được dịch với Rhàm lm, bạn có thể sử dụng hàm boxCoxtừ cargói để ước tính (tức là tham số công suất) theo khả năng tối đa. Vì biến phụ thuộc của bạn không hoàn toàn tích cực, các phép biến đổi Box-Cox sẽ không hoạt động và bạn phải chỉ định tùy chọn sử dụng các phép biến đổi Yeo-Johnson (xem bài báo gốc ở đâybài đăng liên quan này ):λfamily="yjPower"

boxCox(my.regression.model, family="yjPower", plotit = TRUE)

Điều này tạo ra một cốt truyện như sau:

Thịt cừu hộp-Cox

Ước tính tốt nhất của là giá trị tối đa hóa khả năng hồ sơ mà trong ví dụ này là khoảng 0,2. Thông thường, ước tính của được làm tròn thành một giá trị quen thuộc vẫn nằm trong khoảng tin cậy 95%, chẳng hạn như -1, -1/2, 0, 1/3, 1/2, 1 hoặc 2.λλλ

Để chuyển đổi biến phụ thuộc của bạn bây giờ, hãy sử dụng hàm yjPowertừ cargói:

depvar.transformed <- yjPower(my.dependent.variable, lambda)

Trong hàm, lambdaphải là tròn mà bạn đã tìm thấy trước khi sử dụng . Sau đó phù hợp với hồi quy một lần nữa với biến phụ thuộc được chuyển đổi.λboxCox

Quan trọng: Thay vì chỉ chuyển đổi log biến phụ thuộc, bạn nên xem xét để phù hợp với GLM với liên kết nhật ký. Dưới đây là một số tài liệu tham khảo cung cấp thêm thông tin: thứ nhất , thứ hai , thứ ba . Để làm điều này trong R, sử dụng glm:

glm.mod <- glm(y~x1+x2, family=gaussian(link="log"))

ybiến phụ thuộc của bạn ở đâu và x1, x2vv là các biến độc lập của bạn.


Biến đổi của các yếu tố dự đoán

Các biến đổi của các yếu tố dự đoán tích cực nghiêm ngặt có thể được ước tính bằng khả năng tối đa sau khi biến đổi biến phụ thuộc. Để làm như vậy, sử dụng chức năng boxTidwelltừ cargói (đối với giấy gốc xem tại đây ). Sử dụng nó như thế : boxTidwell(y~x1+x2, other.x=~x3+x4). Điều quan trọng ở đây là tùy chọn other.xchỉ ra các điều khoản của hồi quy không được chuyển đổi. Đây sẽ là tất cả các biến phân loại của bạn. Hàm tạo ra một đầu ra có dạng sau:

boxTidwell(prestige ~ income + education, other.x=~ type + poly(women, 2), data=Prestige)

          Score Statistic   p-value MLE of lambda
income          -4.482406 0.0000074    -0.3476283
education        0.216991 0.8282154     1.2538274

incomeλincomeincomenew=1/incomeold

Một bài viết rất thú vị trên trang web về sự biến đổi của các biến độc lập là bài này .


Nhược điểm của biến đổi

1/yλλ


Mô hình hóa các mối quan hệ phi tuyến

Hai phương pháp khá linh hoạt để phù hợp với các mối quan hệ phi tuyến là đa thức phân sốspline . Ba bài báo này cung cấp một giới thiệu rất tốt cho cả hai phương pháp: Thứ nhất , thứ haithứ ba . Ngoài ra còn có một cuốn sách về đa thức phân số và R. Các R góimfp dụng cụ đa biến đa thức phân đoạn. Bài trình bày này có thể là thông tin liên quan đến đa thức phân số. Để phù hợp với splines, bạn có thể sử dụng hàm gam(mô hình phụ gia tổng quát, xem ở đây để có phần giới thiệu tuyệt vời với R) từ góimgcv hoặc các hàmns(splines khối tự nhiên) và bs( spline khối B) từ gói splines(xem ở đây để biết ví dụ về việc sử dụng các chức năng này). Sử dụng gambạn có thể chỉ định dự đoán nào bạn muốn phù hợp bằng cách sử dụng s()hàm splines bằng hàm:

my.gam <- gam(y~s(x1) + x2, family=gaussian())

ở đây, x1sẽ được trang bị bằng cách sử dụng một spline và x2tuyến tính như trong hồi quy tuyến tính bình thường. Bên trong gambạn có thể chỉ định họ phân phối và chức năng liên kết như trong glm. Vì vậy, để phù hợp với một mô hình với một hàm log-liên kết, bạn có thể chỉ định các tùy chọn family=gaussian(link="log")trong gamnhư trong glm.

Có một cái nhìn vào bài viết này từ trang web.


1
Lời giải thích hay. Tôi không biết rằng Box-Cox rõ ràng thực sự là phương pháp phổ biến nhất để chọn chuyển đổi. Nếu bạn đếm những người chỉ chọn nhật ký theo bất kỳ cách nào, thì suy đoán hoang dã của tôi là đó là một phương pháp thiểu số. Điểm kén chọn đó không ảnh hưởng đến bất cứ điều gì khác, một cách tự nhiên.
Nick Cox

@NickCox Cảm ơn (+1 cho câu trả lời của bạn, btw). Tuyên bố rằng Box-Cox là phương pháp phổ biến nhất xuất phát từ cuốn sách của John Fox. Tôi lấy nó theo mệnh giá vì tôi không có đủ kinh nghiệm để đánh giá tuyên bố. Tôi sẽ xóa tuyên bố.
COOLSerdash

Cảm ơn bạn rất nhiều vì đã giải thích chi tiết. Tôi sẽ thử và áp dụng nó vào dữ liệu của tôi bây giờ.
zgall1

@COOLSerdash Sử dụng hướng dẫn chi tiết của bạn, tôi đã áp dụng chuyển đổi Box Cox cho các biến phụ thuộc và sau đó là các biến độc lập và có biểu đồ sau về các biến chẩn đoán của tôi - i.imgur.com/eO01djl.jpg Rõ ràng, có một sự cải thiện nhưng dường như vẫn còn là các vấn đề với sự thay đổi liên tục và không thiên vị và chắc chắn có một vấn đề với tính quy tắc. Tôi có thể đi đâu từ đây?
zgall1

1
@ zgall1 Cảm ơn phản hồi của bạn, tôi đánh giá cao nó. Hừm, vâng, những biến đổi dường như không giúp được gì nhiều :). Tại thời điểm này, tôi sẽ cố gắng sử dụng spline cho các yếu tố dự đoán bằng cách sử dụng các mô hình phụ gia tổng quát (GAM) với mgcvgói và gam. Nếu điều đó không có ích, tôi sẽ hết sức sợ hãi. Có những người ở đây có nhiều kinh nghiệm hơn tôi và có thể họ có thể cho bạn lời khuyên thêm. Tôi cũng không am hiểu về bóng chày. Có lẽ có một mô hình logic hơn có ý nghĩa với những dữ liệu này.
COOLSerdash

8

Bạn nên cho chúng tôi biết thêm về bản chất của biến phản ứng (kết quả, phụ thuộc) của bạn. Từ cốt truyện đầu tiên của bạn, nó bị lệch rất mạnh với nhiều giá trị gần bằng 0 và một số âm. Từ đó có thể, nhưng không thể tránh khỏi, sự chuyển đổi đó sẽ giúp bạn, nhưng câu hỏi quan trọng nhất là liệu chuyển đổi có làm cho dữ liệu của bạn gần hơn với mối quan hệ tuyến tính hay không.

Lưu ý rằng các giá trị âm cho quy tắc phản hồi loại bỏ chuyển đổi logarit thẳng, nhưng không phải log (phản hồi + hằng số) và không phải là mô hình tuyến tính tổng quát có liên kết logarit.

Có nhiều câu trả lời trên trang web này thảo luận về nhật ký (phản hồi + hằng số), phân chia người thống kê: một số người không thích nó là quảng cáo và khó làm việc, trong khi những người khác coi đó là một thiết bị hợp pháp.

Một GLM với liên kết nhật ký vẫn có thể.

Ngoài ra, có thể mô hình của bạn phản ánh một số quy trình hỗn hợp, trong trường hợp một mô hình tùy chỉnh phản ánh quy trình tạo dữ liệu chặt chẽ hơn sẽ là một ý tưởng tốt.

(MỘT LÁT SAU)

OP có một biến phụ thuộc WAR với các giá trị nằm trong khoảng từ 100 đến -2. Để vượt qua các vấn đề với việc lấy logarit của các giá trị 0 hoặc âm, OP đề xuất một số 0 và âm cho 0,0001. Bây giờ trên thang logarit (cơ sở 10) các giá trị đó nằm trong khoảng từ 2 (100 hoặc hơn) đến -6 (0,000001). Đa số các điểm bị làm mờ trên thang logarit hiện là một thiểu số của các ngoại lệ lớn. Vẽ log_10 (WAR fudged) chống lại bất cứ điều gì khác để thấy điều này.


Như bạn có thể nói từ bảng phân tán được đăng ở trên, tôi đang sử dụng bộ dữ liệu thống kê bóng chày. Biến độc lập, WAR, về cơ bản là thước đo tích lũy của giá trị được đóng góp bởi một người chơi trong sự nghiệp của họ ở cấp giải đấu lớn. Các biến độc lập, AdjSLG, SOPct và BBPct là các thống kê giải đấu nhỏ thường được cho là để dự đoán thành công ở cấp giải đấu lớn. Biến Tuổi là độ tuổi mà người chơi tạo ra số liệu thống kê giải đấu nhỏ. Các biến giả được sử dụng để chỉ mức độ giải đấu nhỏ mà tại đó các số liệu thống kê được tạo ra.
zgall1

Liên quan đến vấn đề biến độc lập âm (WAR), vì những lý do hơi phức tạp, việc mã hóa lại chúng thành số không là hợp lý nếu điều đó làm cho quá trình chuyển đổi dễ dàng hơn. Trong khuôn khổ của bộ dữ liệu này, đây là một thủ tục chính đáng. Nếu bạn muốn tôi đi vào chi tiết hơn (cảnh báo - yêu cầu biệt ngữ bóng chày), tôi rất vui khi làm điều đó.
zgall1

1
Dường như WAR là biến phụ thuộc của bạn . Bạn cung cấp bằng chứng cho khẳng định của tôi, tranh chấp ở nơi khác trên trang web này, rằng hai thuật ngữ thường bị nhầm lẫn. Lời khuyên của tôi là không mã hóa lại các giá trị âm thành số không (làm hỏng dữ liệu) mà sử dụng GLM với liên kết nhật ký. Xin vui lòng giả sử không quan tâm, hoặc kiến ​​thức về minutiae bóng chày về phía tôi.
Nick Cox

Bạn đúng rằng WAR là biến phụ thuộc của tôi. Tôi sẽ xem xét một GLM với liên kết nhật ký. Cảm ơn vì lời khuyên.
zgall1

1
Có thể hữu ích để biết cách tính sự nghiệp WAR sau đó (hay còn gọi là quá trình tạo dữ liệu).
affine
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.