假设我有不同班级的人口统计数据,以及班级中黑人、白人等学生的比例。我正在尝试创建回归,以确定班级的特征,这些特征可以预测班级中每个群体的比例。我感觉到多项逻辑回归可能会有一些适应,但我不知道这是如何实现的。
示例数据:
dfexample <- data.frame(
subject = c('English', 'English', 'Math', 'Science'),
enrollment = c(100,200,50,70),
white = c(0.5,0.5,0.6,0.7),
black = c(0.25,0.20, 0.10, 0.25),
hispanic = c(0.25, 0.30, 0.30, 0.05),
classid = c('1a','3f','4d','5a')
)
dfexample
subject enrollment white black hispanic classid
1 English 100 0.5 0.25 0.25 1a
2 English 200 0.5 0.20 0.30 3f
3 Math 50 0.6 0.10 0.30 4d
4 Science 70 0.7 0.25 0.05 5a在这个虚拟场景中,我希望创建一个基于科目和班级大小的不同种族/民族学生比例的模型。
我想过使用逻辑回归来预测分数,但这似乎只有在结果是二元的(例如,True或False)时才有效。
如果不能做到这一点,我正在考虑的另一种选择是进行多重逻辑回归(白人与非白人;黑人与非黑人;西班牙裔与非西班牙裔)。然而,这种方法似乎缺乏,这会让我遇到多个测试错误吗?
谢谢。
发布于 2020-03-07 08:43:15
使用Caret库,您可以轻松地执行此任务。
首先,声明导入并定义数据集。
library(caret)
library(dplyr)
dfexample <- data.frame(
subject = c('English', 'English', 'Math', 'Science'),
enrollment = c(100,200,50,70),
white = c(0.5,0.5,0.6,0.7),
black = c(0.25,0.20, 0.10, 0.25),
hispanic = c(0.25, 0.30, 0.30, 0.05),
classid = c('1a','3f','4d','5a')
);
# replicating data frame rows to make our example works
dfexample = dfexample[rep(seq_len(nrow(dfexample)), each = 20), ]然后,确定训练和测试集:
trainIndex <- createDataPartition(dfexample$classid, p = .6,
list = FALSE,
times = 1)
dataTrain <- dfexample[ trainIndex,]
dataTest <- dfexample[-trainIndex,]之后,运行您的模型。如果您需要测试其他模型,请查看此link并检查可用的模型方法。然后,更改方法属性,如下面的代码所示。
modelFit <- train(classid ~ subject + enrollment + white + black + hispanic, data = dataTrain,
method = "LogitBoost",
#method = "gbm",
verbose = FALSE
)
print(modelFit)最后,生成混淆矩阵并分析预测结果:
predictions <- predict(modelFit, newdata = dataTest)
cm = confusionMatrix(predictions, dataTest$classid)
print(cm)我希望它能对你有所帮助。
https://stackoverflow.com/questions/60573037
复制相似问题