2014-10-10 2 views
0

저는 전체 데이터 세트를 두 부분으로 나누었습니다 : 하나는 훈련 용이고 다른 하나는 testint 용입니다.훈련 데이터 세트의 R2가 일정하지 않습니다.

훈련 데이터 세트는 70 개의 관측치를 포함하고 테스트 데이터 세트는 14 개의 관측치를 포함합니다. 내 모델에는 1 개의 숫자 종속 변수와 5 개의 숫자 독립 변수가 있습니다.

필자는 트레이닝 데이터 세트로 다중 회귀를 실행하고 회귀 코드를 실행할 때마다 트레이닝 데이터 세트의 조정 된 R2 값이 일정하지 않지만 지속적으로 변경되었습니다. 그 값은 60 %에서 70 %까지 다양합니다.

데이터 분할에 사용한 함수에는 해당 코드에 "sample"및 "set.seed"함수가 포함되어 있습니다.

내 질문은 ...이 경우, 조정 된 R2의 상수가 아닌 값을 학습 데이터 집합에서 어떻게 해석합니까? 정상입니까?

splitdf <- function(dataframe, seed=NULL) { 
    if (!is.null(seed)) set.seed(seed) 
    index <- 1:nrow(dataframe) 
    trainindex <- sample(index, trunc(length(index)/6)) 
    testset <- dataframe[trainindex, ] 
    trainset <- dataframe[-trainindex, ] 
    list(trainset=trainset,testset=testset) 
} 

splits <- splitdf(df, seed=1234) 
str(splits) 
my_train <- splits$trainset 
my_test <- splits$testset 

추 신 : 모든 선형 회귀 가정에 만족하는 모델.

+1

임의 샘플을 사용하는 경우 왜 R2가 상수라고 생각하는지 이해할 수 없습니다. – Metrics

+0

코드 샘플을 게시하십시오. 코드의 시작 부분에서'set.seed'를하고'sample'을 두 번 호출하면, 두 개의 다른 스플릿을 줄 것입니다. 동일한 임의의 분할을 얻으려면 두 번째 분할 전에 동일한 시드로'set.seed'를 호출해야합니다. – josliber

+0

양자 역학을 일하고 즐기십시오. –

답변

0

동일한 시드를 사용하는 경우 R2가 변경되어서는 안됩니다.

#sim data 
set.seed(12) 
data <- data.frame(Y=rnorm(10),X1=rnorm(10),X2=rnorm(10),X3=rnorm(10)) 

#split data 
splits <- splitdf(data, seed=1234) 
my_train <- splits$trainset 
my_test <- splits$testset 
summary(lm(Y~X1+X2+X3,my_train))$r.squared 
#[1] 0.3922881 

#split again using same seed...get same results 
splits <- splitdf(data, seed=1234) 
my_train <- splits$trainset 
my_test <- splits$testset 
summary(lm(Y~X1+X2+X3,my_train))$r.squared 
#[1] 0.3922881 

#split using different seed...get different results 
splits <- splitdf(data, seed=5555) 
my_train <- splits$trainset 
my_test <- splits$testset 
summary(lm(Y~X1+X2+X3,my_train))$r.squared 
#[1] 0.7948203 
+0

Benjamin에게 감사드립니다. 한 가지만 더 질문합니다. 시드 NULL을 설정 한 후 조정 된 R2의 범위가 60 %에서 70 %까지 다양합니까 ?? –

+0

시드를 null로 설정하면 매번 다른 교육 세트가 생기므로 R2가 동일하지 않아야합니다. 얼마나 달라지는지는 데이터에 따라 다르고 그 질문에 대답 할 수 없습니다. – bdeonovic

관련 문제