C. *_*ohn 3 regression r prediction glm
我建立了一个二项式 glm 模型。该模型预测两个潜在类别之间的输出:AD 或 Control。这些变量是具有水平的因素:{AD,控制}。我使用这个模型来预测并获得每个样本的概率,但我不清楚概率超过 0.5 是否表示 AD 或 Control。
这是我的数据集:
> head(example)
cleaned_mayo$Diagnosis pca_results$x[, 1]
1052_TCX AD 0.9613241
1104_TCX AD -0.9327390
742_TCX AD 1.6908874
1945_TCX Control 0.6819104
134_TCX AD 0.5184748
11386_TCX Control 0.4669661
Run Code Online (Sandbox Code Playgroud)
这是我计算模型并进行预测的代码:
# Randomize rows of top performer
example<- example[sample(nrow(example)),]
# Subset data for training and testing
N_train<- round(nrow(example)*0.75)
train<- example[1:N_train,]
test<- example[(N_train+1):nrow(example),]
colnames(train)[1:2]<- c("Diagnosis", "Eigen_gene")
colnames(test)[1:2]<- c("Diagnosis", "Eigen_gene")
# Build model and predict
model_IFGyel<- glm(Diagnosis ~ Eigen_gene, data = train, family = binomial())
pred<- predict(model_IFGyel, newdata= test, type= "response")
# Convert predictions to accuracy metric
pred[which(pred<0.5)]<- "AD"
pred[which(pred!="AD")]<- "Control"
test$Diagnosis<- as.character(test$Diagnosis)
example_acc<- sum(test$Diagnosis==pred, na.rm = T)/nrow(test)
Run Code Online (Sandbox Code Playgroud)
任何有助于澄清这些预测概率所表明的内容的帮助都是值得赞赏的。
从?glm:
\n\n\n细节:
\n\n典型的预测变量的形式为 \xe2\x80\x98response ~ terms\xe2\x80\x99 其中\n \xe2\x80\x98response\xe2\x80\x99 是(数字)响应向量,而 \xe2\x80\x98terms\ xe2\x80\x99 是一系列项,用于指定 \xe2\x80\x98response\xe2\x80\x99 的线性预测器。\n 对于 \xe2\x80\x98binomial\xe2\x80\x99 和 \xe2\ x80\x98quasibinomial\xe2\x80\x99 系列响应也可以指定为 \xe2\x80\x98factor\xe2\x80\x99 (当第一级表示失败且所有其他级别表示成功时)或作为两个- 列矩阵,其中列给出了成功和失败的数量。
\n
关键部分被突出显示。假设您没有指定级别(即发生了 R 的默认分配),那么AD将会是失败并且Control将会是成功。因此,系数/模型将根据观察结果属于该类的概率来表示Control。
如果您想更改此设置,请使用factor(...., levels = c('Control', 'AD'))或仅执行 1 - prob(Control) (1 - 预测值) 来获取 的形式AD。
| 归档时间: |
|
| 查看次数: |
2872 次 |
| 最近记录: |