根據我的評論,我認爲你可以直接從係數計算預測。下面是輸出從predict.glm
比較直接的數據計算預測概率的例子:
# construct some data and model it
# y ~ x1 + x2
set.seed(1)
x1 <- runif(100)
x2 <- runif(100)
y <- rbinom(100,1,(x1+x2)/2)
data1 <- data.frame(x1=x1,x2=x2,y=y)
x3 <- runif(100)
x4 <- runif(100)
y2 <- rbinom(100,1,(x3+x4)/2)
data2 <- data.frame(x1=x3,x2=x4,y=y2)
glm1 <- glm(y~x1+x2,data=data1,family=binomial)
# extract coefs
#summary(glm1)
coef1 <- coef(glm1)
# calculate predicted probabilities for current data
tmp1 <- coef1[1] + (data1$x1*coef1[2]) + (data1$x2*coef1[3])
pr1 <- 1/(1+(1/exp(tmp1)))
# these match those from `predict`:
all.equal(pr1,predict(glm1,data1,type='response'))
# now apply to new data:
tmp2 <- coef1[1] + (data2$x1*coef1[2]) + (data2$x2*coef1[3])
pr2 <- 1/(1+(1/exp(tmp2)))
pr2
這顯然不是一個通用的解決方案,也沒有妥善處理的不確定性,但我認爲這是一個更好的辦法比黑客predict
。
關於統計。也許它應該被遷移到[交叉驗證](http://stats.stackexchange.com)。 – Thomas
用戶正在嘗試將他所擁有的等式轉換爲對象。這是一個相當程序化的問題,我認爲它很適合。 –
我可能會修改現有的模型,但這是作弊。 –