我将整个数据集分成两部分:一部分用于培训,另一部分用于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:该模型对所有线性回归假设都很满意。
答案 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