2012-11-15 5 views
3

내 데이터 세트의 모든 우편 번호에 대해 회귀 분석을 실행하고 계수를 데이터 프레임에 저장하려고하는데 문제가 있습니다.R w/PLYR에서 그룹 추출 회귀 계수를

아래 코드를 실행할 때마다 모든 우편 번호를 포함하지만 모든 우편 번호에 대한 절편과 계수가 간단한 회귀 결과 인 lm(Sealed$hhincome ~ Sealed$square_footage)과 동일한 "계수"라는 데이터 프레임이 생성됩니다.

아래 링크에서 Ranmath의 예와 같이 코드를 실행하면 모든 것이 예상대로 작동합니다. 나는 STATA 많은 년 후에 R 새로운, 그래서 어떤 도움을 크게 감상 할 수있다 :)

R extract regression coefficients from multiply regression via lapply command

library(plyr) 
Sealed <- read.csv("~/Desktop/SEALED.csv") 

x <- function(df) { 
     lm(Sealed$hhincome ~ Sealed$square_footage) 
} 

regressions <- dlply(Sealed, .(Sealed$zipcode), x) 
coefficients <- ldply(regressions, coef) 

답변

2

당신은 함수 신청 : 각 부분 집합에

x <- function(df) { 
     lm(Sealed$hhincome ~ Sealed$square_footage) 
} 

을 출력 할 때마다 정확히

lm(Sealed$hhincome ~ Sealed$square_footage) 

장비입니다 데이터는, 그래서 우리는 놀라지 않을한다 ht? 함수 내에서 Sealeddf으로 바꾸어보십시오. 이렇게하면 데이터 프레임의 변수 전체가 아니라 함수에 전달 된 각 조각의 변수를 참조하게됩니다. Sealed.

+0

감사 Joran을 선택할 것, 그건 정말 도움이되었다! 그것은 분명히 다른 R 함수들과 함께 나를 도울 것입니다. – Patrick

1

문제는 plyr이 아니며 기능 정의에 있습니다. 함수를 호출 중이지만 변수로는 아무 것도하지 않습니다. 당신은 X의 서로 다른 값에이 기능을 실행하면 비유로

,

myFun <- function(x) { 
    3 * 7 
    } 

    > myFun(2) 
    [1] 21 
    > myFun(578) 
    [1] 21 

, 그것은 여전히 ​​문제가 무엇인지 X, 당신에게 21을 제공하지 않습니다. 즉, 함수 내에서 x에 대한 참조가 없습니다. 나의 어리석은보기에서는, 정정은 명백하다; 위의 함수에서 혼동은 이해할 수 있습니다. $hhincome$square_footage은 변수로 간주되어야합니다.

는하지만$ 전에 온다 무엇을 당신의 x가에 따라 변화 할. @ 조란 올바르게 지적한대로 sealed$hhincomedf$hhincome (그리고 $squ.. 동일)와 스왑 도움이 될 것입니다. dlply 추가 인수가 함수에 전달 될 수있는 ... 인수를 취하는 때문에

+0

매우 설명적인 예인 Ricardo는이 문제를 제게 더 분명하게했습니다; 내 함수는 첫 번째 줄에 나열된 관련 변수에서 추상화되었습니다. 감사! – Patrick

3

, 당신도 간단한 일을 할 수 있습니다 :

dlply(Sealed,.(zipcode),lm,formula=hhincome~square_footage) 

처음 두 인수가 lm에는 formuladata 있습니다. formula가 여기에 지정되어 있기 때문에, lm이는 data 인수로 (Sealed 관련 우편 번호 별 덩어리) 주어진 다음 인수 ...