6

を使用してロジスティック回帰がglmあり、次の形式の用語を追加したいと思います

c 1 (k+ac 2 )/(t+c 2 )

ここで、k と t はデータ フレームの列、a は定数です。R に c 1と c 2の最適な値を見つけてもらいたいと思います。これは可能ですか?

固定値のみが必要な場合は、c 2 = 2 とします。

c 1 (k+2a)/(t+2)

私はちょうど書くことができました

glm( model$y ~ I((model$k + 2*a)/(model$t + 2)) + model$otherterms,
  family = binomial(logit) )

これは私が今していることと似ています。しかし、2が最適であるとは思わず、「手動で」反復するのは非常に時間がかかります.

4

1 に答える 1

4

パッケージgnmの関数 gnm を使用できます。

gnm(y~Mult(1, # c1
           offset(k)+1,# c3=a*c2 
           Inv(offset(t)+1)) # c2
           +other terms, 
    family=binomial, 
    data=models)

EDIT(制約付き係数の解決策)

term_fun <- function(predLabels, varLabels){
                     paste0(predLabels[1],"*(",varLabels[1],
                            "+",predLabels[2],"*3)/(", # a=3 for example
                            varLabels[2],"+", predLabels[3],")")}

  Ratio <- function(t,x){
   list(predictors = list(C1 = 1, C2 = 1),
        variables = list(substitute(t), substitute(x)),
        term = term_fun)
  }
  class(Ratio) <- "nonlin"

  fit <- gnm(Y~Ratio(k,t), data=models, family=binomial)
于 2012-12-19T07:38:02.923 に答える