형태의 모델에 대한 회귀 ?


22

웹 토론 포럼의 통계 인 데이터 세트가 있습니다. 주제가 가질 것으로 예상되는 답글 수의 분포를보고 있습니다. 특히, 주제 응답 수 목록이있는 데이터 세트를 작성한 다음 해당 응답 수를 가진 주제 수를 작성했습니다.

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

로그 로그 플롯에 데이터 세트를 플롯하면 기본적으로 직선이 무엇인지 알 수 있습니다.

로그-로그 스케일에 플롯 된 데이터

이것은 Zipfian 배포판 입니다. Wikipedia에 따르면 log-log plot의 직선은 형식의 단일로 모델링 할 수있는 함수를 의미합니다 . 그리고 실제로 나는 그러한 기능을 눈여겨 보았다.와이=에이엑스케이

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

눈알 모델

내 눈알은 분명히 R만큼 정확하지 않습니다. 어떻게 R 이이 모델의 매개 변수를보다 정확하게 맞출 수 있습니까? 다항식 회귀 분석을 시도했지만 R이 지수를 매개 변수로 맞추려고한다고 생각하지 않습니다. 원하는 모델의 올바른 이름은 무엇입니까?

편집 : 모두에게 답변 주셔서 감사합니다. 제안한대로 이제이 레시피를 사용하여 입력 데이터의 로그에 선형 모델을 적용했습니다.

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")

결과는 다음과 같습니다. 모델을 빨간색으로 표시합니다.

적합 모델

그것은 내 목적에 맞는 근사치처럼 보입니다.

그런 다음이 Zipfian 모델 (알파 = 1.703164)을 난수 생성기와 함께 사용하여 포함 된 원래 측정 데이터 세트 ( 웹에서 찾은이 C 코드 사용)와 동일한 총 토픽 수 (1400930)를 생성 하면 결과가 보입니다. 처럼:

난수 생성 결과

측정 된 점은 검은 색이며, 모델에 따라 임의로 생성 된 점은 빨간색입니다.

나는 이것이 1400930 포인트를 무작위로 생성하여 생성 된 간단한 분산이 원래 그래프의 모양에 대한 좋은 설명임을 보여줍니다.

원시 데이터를 직접 연주하는 데 관심이 있으시면 여기에 게시했습니다 .


2
count와 num_replies의 로그를 모두 가져 와서 표준 선형 모델에 맞추는 것이 어떻습니까?
gung-모니 티 복원

3
답이 10000 회 미만인 경우 그 수가 크게 증가한 이유는 무엇입니까?
Glen_b-복지 모니카

3
카운트와 로그 카운트에는 일정한 분산이 없습니다 (카운트의 경우 분산은 평균에 따라 증가하고 로그 카운트의 경우 일반적으로 평균에 따라 감소합니다). 두 변수가 모두 수이고 많은 수가 상당히 적다면, 로그 링크가있는 Poisson, quasi-Poisson 또는 음의 이항 GLM에 기대어 있습니다. 정규 회귀 분석을 사용해야하는 경우 최소한 분산 문제를 처리하십시오. 다른 대안은 카운트의 Anscombe 또는 Freeman-Tukey 변환을 수행하고 비선형 최소 제곱 모델에 적합시키는 것입니다.
Glen_b-복지 모니카

1
이 흥미로운 스파이크는 여러 포럼에서 인간이 시행 한 "최대 주제 길이"때문입니다.
thenickdude

2
퍼지는 맛있습니다 :) 좀 더 이론적으로, (num_replies + 1)과 (num_posts_in_topic) 사이에는 차이가 없습니다.
thenickdude

답변:


22

귀하의 예는 그러한 데이터의 반복적 인 문제를 분명히 지적하기 때문에 매우 좋은 예입니다.

두 가지 일반적인 이름은 전력 기능과 전력 법입니다. 생물학 및 일부 다른 분야에서 사람들은 특히 크기 측정과 관련 될 때마다 항상 측량에 대해 이야기합니다. 물리학 및 일부 다른 분야에서 사람들은 스케일링 법칙에 대해 이야기합니다.

나는 이것을 정수의 거듭 제곱과 연관시킬 때 여기에서 단항을 좋은 용어로 간주하지 않을 것이다. 같은 이유로 이것은 다항식의 특별한 경우로 간주되지 않습니다.

전력 법칙을 분포의 꼬리에 맞추는 문제는 전력 법칙을 두 가지 변수 사이의 관계에 맞추는 문제로 변형됩니다.

거듭 제곱을 구하는 가장 쉬운 방법은 두 변수 모두의 로그를 취한 다음 회귀를 사용하여 직선을 맞추는 것입니다. 일반적으로 두 변수에 오류가있을 때마다 이에 대한 반대 의견이 많습니다. 여기서의 예는 두 변수 모두 (또는 둘 다) 응답 (종속 변수)으로 간주 될 수있는 경우입니다. 이러한 주장은보다 대칭적인 피팅 방법으로 이어집니다.

또한 오류 구조에 대한 가정 문제가 항상 있습니다. 다시 말하지만, 여기의 예는 오류가 명백하게 이분법 적이라는 점에 있습니다. 그것은 가중 최소 제곱과 같은 것을 제안합니다.

한 가지 훌륭한 리뷰는 http://www.ncbi.nlm.nih.gov/pubmed/16573844 입니다 .

또 다른 문제는 사람들이 종종 데이터의 일부 범위에서만 전력 법칙을 식별한다는 것입니다. 그런 다음 질문은 과학적이며 통계적 일뿐 아니라 권력 법을 식별하는 것이 희망적인 생각인지 아니면 유행을 타는 아마추어 오락인지에 이르기까지 진행됩니다. 대부분의 논의는 물리학에서 형이상학에 이르기까지 관련된 토론과 함께 프랙탈 및 스케일없는 동작이라는 제목 아래에서 발생합니다. 구체적인 예에서 약간의 곡률이 분명해 보입니다.

권력 법률 애호가들은 항상 회의론자들과 일치하지는 않습니다. 왜냐하면 애호가들은 회의론자보다 더 많이 출판하기 때문입니다. 필자는 자연스럽고 우수한 음모가 필수적이지만 대수 스케일의 산점도에는 전력 함수 형태의 이탈을 확인하기 위해 어떤 종류의 잔차 그림이 수반되어야한다고 제안합니다.


2
고마워요, 사람들이 "다항식 회귀"에 대해 이야기 할 때 이런 것을 찾을 수 없었던 이유를 설명합니다. 해당 모델에 맞는 결과로 내 질문을 업데이트했습니다!
thenickdude

전력 법의 적합과 적합 모형에 대한 유의성 검정에 대해 좀 더 엄격한 접근 방식을 찾고 있다면 arxiv.org/abs/0706.1062 및 다음 코드를 참조하십시오. tuvalu.santafe.edu/ ~ aaronc / powerlaws
Martin O'Leary

2
위에서 인용 한 논문은 권력 법인 변수 간의 관계가 아니라 권력 법인 분포에 관한 것입니다. 이 질문의 제목은 후자에 더 잘 맞습니다. 이 질문의 예는 전자에 더 적합합니다.
Nick Cox

1

거듭 제곱이 적합하기에 적합한 모형이라고 가정하면 다음을 사용 log(y) ~ log(x)하여 모형으로 사용 하고 선형 회귀를 맞출 수 있습니다 lm().

이 시도:

# 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
)

모델 맞추기 :

# 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))
)

이제 플롯을 만듭니다 :

# 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")

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.