2013-08-15 41 views
5

Tôi đang chạy hồi quy trên dữ liệu điều tra dân số nơi biến phụ thuộc của tôi là tuổi thọ và tôi có tám biến độc lập. Dữ liệu được tổng hợp thành các thành phố, vì vậy tôi có hàng nghìn quan sát.Làm thế nào để thiết lập một bình phương tối thiểu trọng số trong r cho dữ liệu dị thể?

Mô hình của tôi hơi bị dị tật. Tôi muốn chạy một hình vuông nhỏ nhất có trọng số, trong đó mỗi quan sát được tính theo dân số của thành phố. Trong trường hợp này, nó có nghĩa là tôi muốn cân nhắc các quan sát bằng nghịch đảo của căn bậc hai của dân số. Tuy nhiên, điều đó không rõ ràng đối với tôi, cú pháp tốt nhất là gì. Hiện tại, tôi có:

Model=lm(…,weights=(1/population)) 

Điều đó có đúng không? Hoặc nó nên là:

Model=lm(…,weights=(1/sqrt(population))) 

(Tôi tìm thấy câu hỏi này ở đây:. Weighted Least Squares - R nhưng nó không rõ cách R giải thích lập luận trọng lượng)

+0

Nếu bạn muốn trọng số theo nghịch đảo của căn bậc hai của dân số, thì đối số cho tùy chọn 1 trên tùy chọn 2 là gì? – joran

+0

Tôi nghĩ rằng đó là gốc của câu hỏi - R có giải thích các đối số trọng số hơn nữa không? –

Trả lời

1

để trả lời câu hỏi của bạn, Lucas, R nghĩ rằng bạn muốn trọng số = (1/dân số) R tham số hóa các tỷ lệ nghịch với các phương sai, vì vậy việc xác định trọng số theo cách này giả định rằng phương sai của erro r là tỷ lệ thuận với dân số của thành phố, đó là một giả định phổ biến trong thiết lập này.

Nhưng hãy kiểm tra giả định! Nếu phương sai của cụm từ lỗi thực sự tỷ lệ thuận với kích thước quần thể, thì nếu bạn chia từng số dư cho căn bậc hai với kích thước mẫu tương ứng, số dư sẽ có phương sai không đổi. Hãy nhớ rằng, chia một biến ngẫu nhiên cho một kết quả không đổi trong phương sai được chia cho bình phương của hằng số đó.

Đây là cách bạn có thể kiểm tra này: Lấy dư từ hồi quy bằng

residuals = lm(..., weights = 1/population)$residuals 

Sau đó chia dư bằng rễ vuông dân số phương sai:

standardized_residuals = residuals/sqrt(population) 

Sau đó, so sánh phương sai mẫu trong số dư tương ứng với nửa dưới của quy mô dân số:

variance1 = var(standardized_residuals[population < median(population)]) 

để phương sai mẫu trong số dư tương ứng với nửa trên của quy mô dân số:

variance2 = var(standardized_residuals[population > median(population)]) 

Nếu hai con số này, variance1variance2 tương tự, sau đó bạn đang làm điều gì đó đúng.Nếu chúng khác nhau đáng kể, thì có thể giả thiết của bạn bị vi phạm.

2

Từ ?lm: "trọng: một vector tùy chọn của trọng lượng là Nên dùng NULL hoặc một số vector, nếu không phải là NULL, các ô vuông nhỏ nhất được sử dụng với trọng số weights (có nghĩa là, giảm thiểu tổng (w * e^2)), nếu không thì các bình phương nhỏ nhất được sử dụng. " R không giải thích thêm về lập luận trọng số. Vì vậy, nếu những gì bạn muốn giảm thiểu là tổng (khoảng cách bình phương từ mỗi điểm đến đường thẳng * 1/sqrt (dân số) thì bạn muốn ...weights=(1/sqrt(population)). Nếu bạn muốn giảm thiểu tổng (bình phương khoảng cách từ mỗi điểm đến dòng phù hợp * 1/dân số) sau đó bạn muốn ...weights=1/population.

Khi mà trong số đó là thích hợp nhất ... đó là một câu hỏi cho CrossValidated!