Hồi quy cho một mô hình có dạng


22

Tôi có một bộ dữ liệu thống kê từ một diễn đàn thảo luận web. Tôi đang xem xét sự phân phối số lượng câu trả lời mà một chủ đề dự kiến ​​sẽ có. Cụ thể, tôi đã tạo một bộ dữ liệu có danh sách số lần trả lời chủ đề và sau đó là số lượng chủ đề có số lần trả lời đó.

"num_replies","count"
0,627568
1,156371
2,151670
3,79094
4,59473
5,39895
6,30947
7,23329
8,18726

Nếu tôi vẽ sơ đồ dữ liệu trên một biểu đồ log-log, tôi sẽ nhận được về cơ bản là một đường thẳng:

Dữ liệu được vẽ trên thang đo log-log

(Đây là một bản phân phối Zipfian ). Wikipedia cho tôi biết rằng các đường thẳng trên các ô log-log ngụ ý một hàm có thể được mô hình hóa bằng một đơn thức có dạng . Và trên thực tế, tôi đã đánh dấu một chức năng như vậy:y=axk

lines(data$num_replies, 480000 * data$num_replies ^ -1.62, col="green")

Mô hình nhãn cầu

Nhãn cầu của tôi rõ ràng không chính xác như R. Vì vậy, làm thế nào tôi có thể lấy R để phù hợp với các thông số của mô hình này cho tôi chính xác hơn? Tôi đã thử hồi quy đa thức, nhưng tôi không nghĩ rằng R cố gắng khớp số mũ làm tham số - tên thích hợp cho mô hình tôi muốn là gì?

Chỉnh sửa: Cảm ơn câu trả lời của mọi người. Như đã đề xuất, giờ đây tôi đã điều chỉnh mô hình tuyến tính dựa vào nhật ký của dữ liệu đầu vào, sử dụng công thức này:

data <- read.csv(file="result.txt")

# Avoid taking the log of zero:
data$num_replies = data$num_replies + 1

plot(data$num_replies, data$count, log="xy", cex=0.8)

# Fit just the first 100 points in the series:
model <- lm(log(data$count[1:100]) ~ log(data$num_replies[1:100]))

points(data$num_replies, round(exp(coef(model)[1] + coef(model)[2] * log(data$num_replies))), 
       col="red")

Kết quả là điều này, hiển thị mô hình màu đỏ:

Mô hình được trang bị

Điều đó có vẻ như là một xấp xỉ tốt cho mục đích của tôi.

Sau đó, nếu tôi sử dụng mô hình Zipfian này (alpha = 1.703164) cùng với trình tạo số ngẫu nhiên để tạo ra tổng số chủ đề (1400930) như tập dữ liệu đo ban đầu có (sử dụng mã C này tôi tìm thấy trên web ), kết quả sẽ xuất hiện như:

Kết quả tạo số ngẫu nhiên

Các điểm đo được có màu đen, các điểm được tạo ngẫu nhiên theo mô hình có màu đỏ.

Tôi nghĩ rằng điều này cho thấy phương sai đơn giản được tạo bằng cách tạo ngẫu nhiên 1400930 điểm này là một lời giải thích tốt cho hình dạng của biểu đồ gốc.

Nếu bạn thích tự chơi với dữ liệu thô, tôi đã đăng nó ở đây .


2
Tại sao không chỉ lấy nhật ký của cả số lượng & chữ số, và phù hợp với mô hình tuyến tính tiêu chuẩn cho chúng?
gung - Tái lập Monica

3
Cái gì tăng đột biến trong số lượng chỉ dưới 10000 trả lời?
Glen_b -Reinstate Monica

3
Cả số lượng và số lượng log đều không có phương sai không đổi (đối với số lượng, phương sai sẽ tăng theo giá trị trung bình, đối với số lượng log, nó thường sẽ giảm theo giá trị trung bình). Cho cả hai biến là số đếm và nhiều số khá nhỏ, tôi nghiêng về một Poisson, quasi-Poisson hoặc nhị phân âm, có lẽ với một liên kết log. Nếu bạn phải sử dụng hồi quy thông thường, ít nhất là đối phó với vấn đề phương sai. Một cách khác là thực hiện phép biến đổi Anscombe hoặc Freeman-Tukey về số đếm và phù hợp với mô hình bình phương nhỏ nhất phi tuyến.
Glen_b -Reinstate Monica

1
Sự tăng đột biến thú vị đó là do "độ dài chủ đề tối đa" do con người thực thi trong một số diễn đàn.
thenickdude

2
Fudge rất ngon :) Về mặt bình thường, không có sự khác biệt giữa (num numplies + 1) và (num_posts_in_topic).
thenickdude

Câu trả lời:


22

Ví dụ của bạn là một ví dụ rất hay vì nó chỉ ra rõ ràng các vấn đề thường xuyên với dữ liệu đó.

Hai tên phổ biến là chức năng quyền lực và luật quyền lực. Trong sinh học, và một số lĩnh vực khác, mọi người thường nói về phép đo, đặc biệt là bất cứ khi nào bạn liên quan đến các phép đo kích thước. Trong vật lý, và một số lĩnh vực khác, người ta nói về quy mô tỷ lệ.

Tôi sẽ không coi monomial là một thuật ngữ tốt ở đây, vì tôi liên kết điều đó với sức mạnh số nguyên. Vì lý do tương tự, điều này không được coi là trường hợp đặc biệt của đa thức.

Các vấn đề của việc gắn một luật công suất vào đuôi của một hình thái phân phối thành các vấn đề của việc phù hợp với một luật công suất cho mối quan hệ giữa hai biến khác nhau.

Cách dễ nhất để phù hợp với một luật công suất là lấy logarit của cả hai biến và sau đó khớp một đường thẳng bằng cách sử dụng hồi quy. Có nhiều ý kiến ​​phản đối về điều này bất cứ khi nào cả hai biến đều bị lỗi, như thường thấy. Ví dụ ở đây là một trường hợp vì cả hai biến (và không) có thể được coi là phản hồi (biến phụ thuộc). Lập luận đó dẫn đến một phương pháp phù hợp hơn đối xứng.

Ngoài ra, luôn có câu hỏi về các giả định về cấu trúc lỗi. Một lần nữa, ví dụ ở đây là một trường hợp như lỗi rõ ràng là không đồng nhất. Điều đó cho thấy một cái gì đó giống như hình vuông nhỏ nhất có trọng số.

Một đánh giá xuất sắc là http://www.ncbi.nlm.nih.gov/pubmed/16573844

Tuy nhiên, một vấn đề khác là mọi người thường xác định luật quyền lực chỉ trên một số phạm vi dữ liệu của họ. Các câu hỏi sau đó trở thành khoa học cũng như thống kê, đi sâu vào việc xác định luật quyền lực chỉ là suy nghĩ mơ ước hay một trò tiêu khiển nghiệp dư thời trang. Phần lớn các cuộc thảo luận phát sinh dưới các tiêu đề của hành vi fractal và không có quy mô, với các cuộc thảo luận liên quan từ vật lý đến siêu hình học. Trong ví dụ cụ thể của bạn, một chút độ cong dường như rõ ràng.

Những người say mê luật quyền lực không phải lúc nào cũng phù hợp với những người hoài nghi, bởi vì những người đam mê xuất bản nhiều hơn những người hoài nghi. Tôi muốn đề xuất rằng một biểu đồ phân tán trên thang logarit, mặc dù một âm mưu tự nhiên và xuất sắc là điều cần thiết, nên được đi kèm với các ô còn lại của một số loại để kiểm tra sự khởi hành từ dạng hàm năng lượng.


2
Cảm ơn, điều đó giải thích tại sao tôi không thể tìm thấy bất cứ điều gì như thế này khi mọi người đang thảo luận về "hồi quy đa thức". Tôi đã cập nhật câu hỏi của mình với kết quả phù hợp với mô hình đó!
thenickdude

Nếu bạn đang tìm kiếm một cách tiếp cận khắt khe hơn một chút để phù hợp với luật công suất và các thử nghiệm quan trọng cho mô hình được trang bị, bạn có thể muốn có bài viết này: arxiv.org/abs/0706.1062 và mã đi kèm: tuvalu.santafe.edu/ ~ aaronc / powerlaws
Martin O'Leary

2
Bài viết được trích dẫn ở trên là dành cho các bản phân phối là luật công suất, không phải mối quan hệ giữa các biến là luật công suất. Tiêu đề của câu hỏi này phù hợp với cái sau tốt hơn; ví dụ của câu hỏi này phù hợp với trước đây tốt hơn.
Nick Cox

1

Nếu bạn cho rằng một công suất là một mô hình tốt để phù hợp, thì bạn có thể sử dụng log(y) ~ log(x)làm mô hình của mình và phù hợp với hồi quy tuyến tính bằng cách sử dụng lm():

Thử đi:

# Generate some data
set.seed(42)

x <- seq(1, 10, 1)

a = 10
b = 2
scatt <- rnorm(10, sd = 0.2)


dat <- data.frame(
  x = x,
  y = a*x^(-b) + scatt
)

Phù hợp với một mô hình:

# Fit a model
model <- lm(log(y) ~ log(x) + 1, data = dat) 
summary(model)

pred <- data.frame(
  x = dat$x,
  p = exp(predict(model, dat))
)

Bây giờ tạo một cốt truyện:

# Create a plot
library(ggplot2)
ggplot() +
  geom_point(data = dat, aes(x=x, y=y)) +
  geom_line(data = pred, aes(x=x, y=p), col = "red")

nhập mô tả hình ảnh ở đây

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.