5

解決しようとしている問題がありますが、成功していません。2日以上検索しましたが、手がかりは1つもありませんでした。答えがそこにあり、私が見つけられなかった場合は申し訳ありません。

数年前に推定した古いモデルからのロジスティック方程式回帰 (バイナリ モデル) があるとします。したがって、パラメータ βk (k = 1, 2, ..., p) は過去に推定されているため、既知です。しかし、モデルを適合させるために使用されたデータがありません。

私の質問は、R でこの古い推定ロジスティック モデルをオブジェクト (ロジスティック回帰モデルに対応) として導入できますか?

「予測」機能を使用して、このロジスティック回帰を新しいデータ セット (現在のデータ) で証明し、この古いモデルの有効性を時の試練に耐えられるかどうかを確認したいと思います。この関数を使用するには、ロジスティック回帰モデルのオブジェクトが必要です。

事前にどうもありがとうございました。

4

2 に答える 2

6

私のコメントによると、係数から直接予測を計算することから始めることができると思います。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

于 2013-10-09T08:55:41.573 に答える
5

持っている係数から作成されたオフセットのみを使用して glm フィットを作成し、それで通常の予測関数を使用できます。たとえば、虹彩データを使用します (最初に実際のデータにモデルを当てはめ、次にダミー データと最初の当てはめからの係数を使用して新しいモデルを当てはめます)。

fit1 <- glm( I(Species=='versicolor') ~ Petal.Length + Petal.Width, 
   data=iris, family=binomial )
coef(fit1)

dummydata <- data.frame( Petal.Length = rnorm(10), Petal.Width=rnorm(10),
    Species = rep(c('versicolor','other'), each=5) )

fit2 <- glm( I(Species=='versicolor') ~ 0 + 
  offset(-2.863708 + 1.563076*Petal.Length - 3.153165*Petal.Width),
    data=dummydata, family=binomial )

pred1 <- predict(fit1, newdata=iris)
pred2 <- predict(fit2, newdata=iris)
plot(pred1,pred2)
abline(0,1, col='green')
于 2013-10-09T15:51:11.630 に答える