我在titanic
数据集上拟合了逻辑回归模型,该模型由几个分类变量组成。
surv.glm= glm(survived ~ class + age + sex, data=titanic, family=binomial)
Coefficients:
(Intercept) class2nd class class3rd class ageadults sexman
3.062 -1.011 -1.766 -1.056 -2.369
部分数据:
class age sex survived
1st class adults man yes
1st class adults man yes
数据中有三个类别(第一,第二和第三)。 crew
字段中有一个class
级别,但似乎没有出现在数据中。因此,第二类和第三类的两个零必须表示第一类。
问题是:
查找泰坦尼克号事件中所有可能病例的存活概率。按生存概率对它们进行排序。尽可能使过程自动化。
基于模型的系数,我编写了以下代码:
predict_surv = function(class_2nd, class_3th, age_adult,sex_man) {
surv=3.062-1.011*class_2nd-1.766*class_3th-1.056*age_adult-2.369*sex_man
odd = exp(surv)
p = odd / (1 + odd)
return(p)
}
i <- 1
for (class2nd in c(0,1))
for (class3th in c(0,1))
for (adult in c(0,1))
for (sex in c(0,1)) {
pr[[i]] = predict_surv(class2nd,class3th,adult,sex)
i <- i+1
}
pr = sort(pr,decreasing = T)
print(pr)
它可以工作,但我想为输出中每种类别变量的组合打印实际标签。如何在R的高效,标准解决方案中做到这一点?
答案 0 :(得分:1)
我会这样:
一些数据:
ng-pattern="vm.data.password"
创建模型:
library(titanic)
titanic_comp <- titanic_train[complete.cases(titanic_train),]
创建所有可能的组合
model <- glm(Survived ~ Pclass + Age + Sex,
data = titanic_comp,
family = binomial)
预测所有可能的组合
new.data <- expand.grid(Pclass = unique(titanic_train$Pclass),
Age = unique(titanic_train$Age),
Sex = unique(titanic_train$Sex))
排序
new.data$prob <- predict(model, new.data, "response")
因此,如果您是一个有钱的女婴,您可能很容易幸免于泰坦尼克号。