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

训练数据集的调整R2不是常数,r,regression,training-data,R,Regression,Training Data,我将整个数据集分为两部分:一部分用于培训,另一部分用于测试 训练数据集包含70个观察值,测试数据集包含14个观察值。 我的模型有1个数值因变量和5个数值自变量 我用我的训练数据集运行多元回归,每次运行回归代码时,训练数据集中调整后的R2值不是常数,而是不断变化的。其值从60%到70%不等 我用于数据拆分的函数在其代码中包含“sample”和“set.seed”函数 我的问题是。。。在这种情况下,如何从训练数据集中解释调整后R2的非常量值?这正常吗 splitdf <- function(d

我将整个数据集分为两部分:一部分用于培训,另一部分用于测试

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

splitdf如果使用相同的种子,则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
#sim卡数据
种子(12)

数据如果你使用随机样本,我不明白你为什么期望R2是常数。请发布一个代码样本。如果您在代码开头设置.seed
,并调用
sample
两次,它们将为您提供两个不同的分割。要获得相同的随机分割,您需要在第二次分割之前使用相同的种子调用
set.seed
。量子力学在工作和玩耍。嗨,很高兴见到您。我只是想知道是否可以有这么大范围的调整R2(在我的例子中,调整R2从60%到70%不等)。。这正常吗?谢谢你的评论…嗨,乔瑟伯。。。我张贴了密码。。谢谢,谢谢,本杰明。。再问一个问题。。设置seed NULL后,调整后的R2范围在60%到70%之间变化是否正常?如果将seed设置为NULL,则每次将获得不同的训练集,因此R2不应相同。变化的程度取决于你的数据,我无法回答这个问题