Có sự khác biệt nào giữa lm và glm đối với họ gaussian của glm không?


45

Cụ thể, tôi muốn biết nếu có sự khác biệt giữa lm(y ~ x1 + x2)glm(y ~ x1 + x2, family=gaussian). Tôi nghĩ rằng trường hợp cụ thể này của glm bằng lm. Tôi có lầm không?


10
Có và không. Là một mô hình thống kê, không. Là một đối tượng được trang bị trong R, có; đối tượng trả lại khác nhau, thuật toán khác nhau được sử dụng.
Phục hồi Monica - G. Simpson

3
Dường như với tôi có một câu hỏi thống kê ở đây, cũng như một câu hỏi mã hóa R.
Cá bạc

Câu trả lời:


48

Mặc dù đối với dạng cụ thể của mô hình được đề cập trong phần thân của câu hỏi (ví dụ lm(y ~ x1 + x2)so với glm(y ~ x1 + x2, family=gaussian)), hồi quy và GLM là cùng một mô hình, câu hỏi tiêu đề hỏi một cái gì đó hơi chung chung hơn:

Có sự khác biệt nào giữa lm và glm đối với họ gaussian của glm không?

Câu trả lời là "Có!".

Lý do chúng có thể khác nhau là vì bạn cũng có thể chỉ định chức năng liên kết trong GLM. Điều này cho phép bạn khớp các dạng quan hệ phi tuyến cụ thể giữa (hay đúng hơn là trung bình có điều kiện của nó) và các biến ; mặc dù bạn cũng có thể làm điều này , không cần giá trị bắt đầu, đôi khi sự hội tụ tốt hơn (cú pháp cũng dễ hơn một chút).yxnls

So sánh, ví dụ, các mô hình này (bạn có R vì vậy tôi giả sử bạn có thể tự chạy các mô hình này):

x1=c(56.1, 26.8, 23.9, 46.8, 34.8, 42.1, 22.9, 55.5, 56.1, 46.9, 26.7, 33.9, 
37.0, 57.6, 27.2, 25.7, 37.0, 44.4, 44.7, 67.2, 48.7, 20.4, 45.2, 22.4, 23.2, 
39.9, 51.3, 24.1, 56.3, 58.9, 62.2, 37.7, 36.0, 63.9, 62.5, 44.1, 46.9, 45.4, 
23.7, 36.5, 56.1, 69.6, 40.3, 26.2, 67.1, 33.8, 29.9, 25.7, 40.0, 27.5)

x2=c(12.29, 11.42, 13.59, 8.64, 12.77, 9.9, 13.2, 7.34, 10.67, 18.8, 9.84, 16.72, 
10.32, 13.67, 7.65, 9.44, 14.52, 8.24, 14.14, 17.2, 16.21, 6.01, 14.23, 15.63, 
10.83, 13.39, 10.5, 10.01, 13.56, 11.26, 4.8, 9.59, 11.87, 11, 12.02, 10.9, 9.5, 
10.63, 19.03, 16.71, 15.11, 7.22, 12.6, 15.35, 8.77, 9.81, 9.49, 15.82, 10.94, 6.53)

y = c(1.54, 0.81, 1.39, 1.09, 1.3, 1.16, 0.95, 1.29, 1.35, 1.86, 1.1, 0.96,
1.03, 1.8, 0.7, 0.88, 1.24, 0.94, 1.41, 2.13, 1.63, 0.78, 1.55, 1.5, 0.96, 
1.21, 1.4, 0.66, 1.55, 1.37, 1.19, 0.88, 0.97, 1.56, 1.51, 1.09, 1.23, 1.2, 
1.62, 1.52, 1.64, 1.77, 0.97, 1.12, 1.48, 0.83, 1.06, 1.1, 1.21, 0.75)

lm(y ~ x1 + x2)
glm(y ~ x1 + x2, family=gaussian) 
glm(y ~ x1 + x2, family=gaussian(link="log")) 
nls(y ~ exp(b0+b1*x1+b2*x2), start=list(b0=-1,b1=0.01,b2=0.1))

Lưu ý rằng cặp đầu tiên là cùng một mô hình ( ) và cặp thứ hai là cùng một mô hình ( và sự phù hợp về cơ bản là giống nhau trong mỗi cặp.yiN(β0+β1x1i+β2x2i,σ2)yiN(exp(β0+β1x1i+β2x2i),σ2)

Vì vậy - liên quan đến câu hỏi tiêu đề - bạn có thể phù hợp với nhiều mô hình Gaussian rộng hơn đáng kể với GLM so với hồi quy.


4
+1. Một khía cạnh tính toán của những điều tôi cũng sẽ nghĩ rằng thuật toán GLM sẽ sử dụng một số biến thể IRWLS (trong hầu hết các trường hợp) trong khi LM sẽ chuyển tiếp trên một số biến thể giải pháp dạng đóng.
usεr11852 nói Phục hồi Monic

@ usεr11852 - Tôi đã nghĩ đó là EM, nhưng chúng có thể là điều tương tự trong trường hợp này.
EngrStudent - Phục hồi Monica

1
Nó không đáp ứng với việc nhìn thấy "ngoại lệ" (ngoại trừ thông qua khả năng như được mô tả ở trên); xem lại là do ảnh hưởng của hàm phương sai và sự thay đổi trong xấp xỉ tuyến tính cục bộ.
Glen_b

1
@ChrisChiasson: +1 cho nhận xét của Glen_b. Như đã đề cập, điều này không liên quan đến sự mạnh mẽ của thuật toán với sự hiện diện của các ngoại lệ. Bạn có thể muốn khám phá các gia đình khác nhau (ví dụ: phân phối tỷ lệ phù hợp hoặc mất Huber; kiểm tra thêm về điều đó) - xin lỗi chỉ cần trực tuyến sau một vài ngày nghỉ ..tMASS::rlm
usεr11852 nói rằng Rebstate Monic

1
Bạn có thể đạt được sự mạnh mẽ mà tôi nghĩ rằng bạn có ý định theo một số cách. Tuy nhiên, với các mô hình kiểu glms và hồi quy, bạn phải cẩn thận không chỉ các ngoại lệ theo hướng y mà cả các ngoại lệ có ảnh hưởng , có thể khiến chúng không nhìn ra khỏi vị trí ..
Glen_b

14

Câu trả lời ngắn gọn, chúng giống hệt nhau:

# Simulate data:
set.seed(42)
n <- 1000

x1 <- rnorm(n, mean = 150, sd = 3)
x2 <- rnorm(n, mean = 100, sd = 2)
u  <- rnorm(n)
y  <- 5 + 2*x1 + 3*x2 + u

# Estimate with OLS:
reg1 <- lm(y ~ x1 + x2)
# Estimate with GLS
reg2 <- glm(y ~ x1 + x2, family=gaussian)

# Compare:
require(texreg)
screenreg(l = list(reg1, reg2))

=========================================
                Model 1      Model 2     
-----------------------------------------
(Intercept)        6.37 **       6.37 ** 
                  (2.20)        (2.20)   
x1                 1.99 ***      1.99 ***
                  (0.01)        (0.01)   
x2                 3.00 ***      3.00 ***
                  (0.02)        (0.02)   
-----------------------------------------
R^2                0.99                  
Adj. R^2           0.99                  
Num. obs.          1000          1000       
RMSE               1.00                  
AIC                           2837.66    
BIC                           2857.29    
Log Likelihood               -1414.83    
Deviance                       991.82    
=========================================
*** p < 0.001, ** p < 0.01, * p < 0.05

Câu trả lời dài hơn; Hàm glm phù hợp với mô hình của MLE, tuy nhiên, do giả định bạn đã thực hiện về chức năng liên kết (trong trường hợp này là bình thường), bạn kết thúc với các ước tính OLS.


+1, một lỗi đánh máy trong câu cuối cùng. Giả định thông thường là về phân phối lỗi, không phải về chức năng liên kết. Trong ví dụ của bạn, chức năng liên kết mặc định là "danh tính". Một hình thức đầy đủ hơn cho glmglm(y ~ x1 + x2, family = gaussian(link = "identity")).
Paul

14

Từ câu trả lời của @ Repmat, tóm tắt mô hình là như nhau, nhưng các hệ số hồi quy của CI confinthơi khác nhau giữa lmglm.

> confint(reg1, level=0.95)
               2.5 %    97.5 %
(Intercept) 2.474742 11.526174
x1          1.971466  2.014002
x2          2.958422  3.023291
> confint(reg2, level=0.95)
Waiting for profiling to be done...
               2.5 %    97.5 %
(Intercept) 2.480236 11.520680
x1          1.971492  2.013976
x2          2.958461  3.023251

t phân phối được sử dụng trong lmkhi phân phối bình thường được sử dụng glmkhi xây dựng các khoảng.

> beta <- summary(reg1)$coefficients[, 1]
    > beta_se <- summary(reg1)$coefficients[, 2]
> cbind(`2.5%` = beta - qt(0.975, n - 3) * beta_se, 
        `97.5%` = beta + qt(0.975, n - 3) * beta_se) #t
                2.5%     97.5%
(Intercept) 2.474742 11.526174
x1          1.971466  2.014002
x2          2.958422  3.023291
> cbind(`2.5%` = beta - qnorm(0.975)*beta_se, 
        `97.5%` = beta + qnorm(0.975)*beta_se) #normal
                2.5%     97.5%
(Intercept) 2.480236 11.520680
x1          1.971492  2.013976
x2          2.958461  3.023251
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.