R의 함수 lm에서 가중치를 사용하는 방법은 무엇입니까?


21

누구든지 weightsR의 lm함수 에서 인수 를 사용하는 방법에 대한 포인터를 제공 할 수 있습니까? 예를 들어, 교통 데이터에 모델을 맞추려고하는데 수백 개의 행이 있으며 각 행에는 도시가 다릅니다 (인구가 다름). 모형이 모집단 크기를 기준으로 각 관측치의 상대적 영향을 조정하도록하려면 간단히 지정할 수 weights=[the column containing the city's population]있습니까? 그런 종류의 벡터가 될 수 weights있습니까? 아니면 다른 R 함수 / 패키지 / 접근법을 완전히 사용해야합니까?

사람들이이 문제를 해결하는 방법에 대해 궁금합니다. 내가 본 선형 모델링 자습서에서 다루지 않았습니다. 감사!

답변:


17

나는 R 도움말 페이지가 lm귀하의 질문에 잘 대답 한다고 생각 합니다. 가중치의 유일한 요구 사항은 제공된 벡터의 길이가 데이터와 같아야한다는 것입니다. 데이터 세트에서 변수의 이름 만 제공 할 수 있으며 R은 나머지를 관리하고 NA 관리 등을 수행 할 수 있습니다 weight. 인수에 수식을 사용할 수도 있습니다 . 예를 들면 다음과 같습니다.

x <-c(rnorm(10),NA)
df <- data.frame(y=1+2*x+rnorm(11)/2, x=x, wght1=1:11)

## Fancy weights as numeric vector
summary(lm(y~x,data=df,weights=(df$wght1)^(3/4))) 

# Fancy weights as formula on column of the data set
summary(lm(y~x,data=df,weights=I(wght1^(3/4))))

# Mundane weights as the column of the data set
summary(lm(y~x,data=df,weights=wght1))

가중치는 양수 여야합니다. 그렇지 않으면 R에서 오류가 발생합니다.


그러나 가중치는 1에 합산되어야합니까? lm크기가 조정되지 않은 경우 요약 에서 다른 결과를 얻습니다 .
Palace Chan

아니요, 가중치는 1을 합산 할 필요가 없습니다. 의 차이점lm요약 ? 계수 또는 표준 오차?
mpiktas

잔차와 표준 오차는 다르지만 계수와 오차는 다릅니다.
Palace Chan

3

당신이 제안하는 것이 작동해야합니다. 이것이 의미가 있는지 확인하십시오.

lm(c(8000, 50000, 116000) ~ c(6, 7, 8))
lm(c(8000, 50000, 116000) ~ c(6, 7, 8), weight = c(123, 123, 246))
lm(c(8000, 50000, 116000, 116000) ~ c(6, 7, 8, 8))

두 번째 선은 세 번째 관측치 복제의 영향과 유사하게 한 관측치에 다른 두 관측치 각각의 가중치를 상대적으로 두 배로 부여함으로써 세 번째 선과 동일한 절편 및 기울기를 생성합니다 (첫 번째 선의 결과와 구별됨).


나는 그것을 시도했지만 summary출력이 두 번째와 세 번째 줄, 특히 계수의 p 값에 대해 다르다는 것을 알았 습니다. 두 명령문이 동일한 데이터 세트를 참조하면 이것이 일어날 지 궁금합니다. 나는 이것에 대한 질문을 stackoverflow.com/questions/10268689/weighted-regression-in-r
lokheart
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.