2013-02-04 1 views
0

선형 모델의 수치 예측 자만 어떻게 표준화합니까?회귀 식의 모든 수치 적 예측 자 표준화

나는 원래의 수치 데이터를 간단하게 스케일 할 수 있다는 것을 안다. 그러나 lm 개체를 인수로 사용하고 숫자 예측 자에 대해서만 표준화 된 베타 계수를 반환하는 함수를 작성하고 싶습니다. 이 문제없이 작동

data(iris) 
mod1 <- lm(Sepal.Length ~ Petal.Width, data = iris) 
summary(mod1) 
mod1.b <- update(mod1, scale(.) ~ scale(.)) 
summary(mod1.b) 

: 여기

은 예입니다. 그러나 요인을 포함하면 오류 메시지가 나타납니다.

mod2 <- lm(Sepal.Length ~ Petal.Width + Species, data = iris) 
summary(mod2) 
mod2.b <- update(mod2, scale(.) ~ scale(.)) #Gives an error 

그래서, 내가 어떻게 두 번째 예에서는 단지 수치 예측을 확장 할 수 있습니다?

+0

안녕하세요 @ johannes이 질문은 R에서 뭔가를하는 방법에 대한 것으로 보인다, 그래서 그것은 StackOverflow에 더 적합합니다. –

+0

@PeterFlom 내가 분명히 놓친 것처럼 보입니다. 물론 맞습니다. 중재자 중 누군가가이 질문을 옮기거나 닫을 수 있습니까? –

답변

1

lm 객체의 디자인 행렬을 변경하십시오. 예를 들어, 우리는 할 수있는 다음

design.matrix <- mod2$model 

numeric.columns <- design.matrix[,unlist(lapply(design.matrix,is.numeric))] 
scaled.numeric.columns <- scale(numeric.columns) 

이제 우리는 비늘 것들로 data.frame에 숫자 열을 바꿉니다

design.matrix[,unlist(lapply(design.matrix,is.numeric))] <- scaled.numeric.columns 

를 마지막으로 업데이트 LM 개체 :

mod2.b <- update(mod2, data = design.matrix) 
관련 문제