gpt4 book ai didi

r - 在lm公式中删除变量仍会触发对比度误差

转载 作者:行者123 更新时间:2023-12-03 16:25:26 25 4
gpt4 key购买 nike

我试图仅对数据的一部分运行lm(),并遇到问题。

dt = data.table(y = rnorm(100), x1 = rnorm(100), x2 = rnorm(100), x3 = as.factor(c(rep('men',50), rep('women',50)))) # sample data

lm( y ~ ., dt) # Use all x: Works
lm( y ~ ., dt[x3 == 'men']) # Use all x, limit to men: doesn't work (as expected)

上面的方法不起作用,因为数据集现在只有人,因此我们不能
将x3(性别变量)包含到模型中。但...
lm( y ~ . -x3, dt[x3 == 'men']) # Exclude x3, limit to men: STILL doesn't work
lm( y ~ x1 + x2, dt[x3 == 'men']) # Exclude x3, with different notation: works great

这是公式中“减号”符号的问题吗?请指教。注意:当然,我可以用其他方法来做;例如,我可以在将变量放入lm()之前排除它们。但是我正在上一堂关于此类知识的类(class),并且我不想让学生感到困惑,因为他们已经告诉他们可以在公式中使用减号来排除变量。

最佳答案

您得到的错误是因为x3在模型中只有一个值= "men"(请参阅@Artem Sokolov的以下注释)

解决它的一种方法是提前子集:

dt = data.table(y = rnorm(100), x1 = rnorm(100), x2 = rnorm(100), x3 = as.factor(c(rep('men',50), rep('women',50)))) # sample data

dmen<-dt[x3 == 'men'] # create a new subsetted dataset with just men

lm( y ~ ., dmen[,-"x3"]) # now drop the x3 column from the dataset (just for the model)

或者,您可以在同一步骤中同时进行这两个操作:
lm( y ~ ., dt[x3 == 'men',-"x3"])

关于r - 在lm公式中删除变量仍会触发对比度误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60198136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com