调整后的训练数据集R2不是常数

时间:2014-10-10 01:28:33

标签: r regression training-data

我将整个数据集分成两部分:一部分用于培训,另一部分用于testint。

训练数据集包含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

PS:该模型对所有线性回归假设都很满意。

1 个答案:

答案 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