두 번째 표현은 요일과 같은 범주 형 변수에 대해 더 전통적입니다.
이는 더미 변수 생성이라고도하며 범주 형 변수를 인코딩하는 데 널리 사용되는 방법입니다. 1-7 인코딩을 사용했다면 4 일과 5 일은 매우 유사하지만 1 일과 7 일은 매우 유사하지 않다는 모델을 말합니다. 실제로 1 일과 7 일은 4 일과 5 일과 비슷합니다. 동일한 논리가 해당 월의 0-30 인코딩을 유지합니다.
매주 같은 7 일 동안 매월 같은 30 일이있는 것은 아니기 때문에 달의 날은 조금 까다 롭습니다. 어떤 달에는 31 일이 있고 어떤 달에는 28 일이 있기 때문입니다. 몇 주와 몇 달은 주기적이므로 푸리에 변환 을 사용 하여 부드러운 선형 변수로 변환 할 수 있습니다 .
예를 들어 ( 내 프로그래밍 언어 인 R 사용 ) :
day_of_month = c(1:31, 1:28, 1:30)
day_of_year <- 1:length(day_of_month)
s = sin((2*pi)/30*day_of_month)
c = cos((2*pi)/30*day_of_month)
plot(day_of_month ~ day_of_year)
lines(15*s+15 ~ day_of_year, col='blue')
lines(15*c+15 ~ day_of_year, col='red')
legend(10, 30, c('raw', 'sin', 'cos'), c('black', 'blue', 'red'))
(사인 / 코사인 변수의 스케일을 -1/1이 아닌 0/30으로 조정하여 그래프가 더 좋아 보입니다)
보시다시피, 매월 말에 원시 "월요일 변수"가 0으로 되돌아가는 동안 사인 및 코사인 변환은 매월 끝날이 일과 비슷하다는 것을 모델에 알릴 수 있도록 부드럽게 전환합니다. 다음 달 초에 일.
푸리에 항의 나머지를 다음과 같이 추가 할 수 있습니다.
for(i in 1:3){
s = sin((2*pi)/30*day_of_month + 30 * i/4)
c = cos((2*pi)/30*day_of_month + 30 * i/4)
lines(15*s+15 ~ day_of_year, col='blue')
lines(15*c+15 ~ day_of_year, col='red')
}
legend(10, 30, c('raw', 'sin', 'cos'), c('black', 'blue', 'red'))
사인 / 코사인의 각 쌍은 원을 만듭니다.
m <- lapply(1:4, function(i){
as.matrix(
data.frame(
s = sin((2*pi)/30*day_of_month + 30 * i/4),
c = cos((2*pi)/30*day_of_month + 30 * i/4)
)
)
})
m <- do.call(cbind, m)
pairs(m)
이 페이지에는 사인파와 코사인 파를 조작하는 방법에 대한 편리한 설명 이 있습니다.