2016-06-18 3 views
3

나는 정말로 이것에 집착했습니다. 누구든지 저를 도울 수 있기를 바랍니다! 나는 54 개의 컬럼으로 이루어진 데이터 세트를 가지고 있고, ridge regression을 가진 테스트 세트에 대한 예측을하고 싶다.R ridge regression의 예측 R

nn <-nrow(longley) 
index <- 1:nrow(longley) 
testindex <- sample(index, trunc(length(index)/3)) 
testset <- longley[testindex,] 
trainset <-longley[-testindex,] 
trainset1 <- trainset[,-7] 

# Fit the ridge regression model: 

mod <- lm.ridge(y ~., data = trainset, lambda = 0.661) 

# Predict and evaluate it by using MAE function: 

mae <- function(model) { 
    y = trainset$Employed 
    y.pred <- predict(model, trainset) 
    return(mean(abs(y-y.pred))) 
} 

나는이 작업을 수행 할 때 내가 얻을 다음과 같은 오류 메시지가

Error in UseMethod("predict") : 
    no applicable method for 'predict' applied to an object of class "ridgelm" 

(rsquared와 MAE로 또한 평가 지표와) 작동 능선 회귀와 예측을하는 또 다른 방법이 될 수 무엇?

답변

1

ridgelm 개체의 경우 실제로는 predict 메서드가 없습니다. 손으로해야합니다.

y.pred <- as.matrix(cbind(const=1,trainset)) %*% coef(model) 

우리는 일정을 추가해야

> methods(class = 'ridgelm') 
[1] coef plot print select 

이것은 선형 모델이 피팅 matricial 계산의 단지 질문이다, 그래서 : 당신이 볼 수 그런데,도 summary있다 1은 선형 모드의 상수 계수와 관련이 있습니다.

중요 : 리지 회귀 분석을 사용하면 일반적으로 설명 변수의 크기를 조정하므로 평균값을 뺄 수 있습니다. 가장 좋은 방법은 교육에서 확장 정의를 학습 한 다음 교육 세트 수단을 사용하여 새로운 데이터의 변수를 중앙에 배치하는 것입니다. 교차 유효성 확인 관련 게시물에 대한 관심이 있으실 수 있습니다.

https://stats.stackexchange.com/questions/152203/how-to-calculate-predicted-values-using-an-lm-ridge-object