7

ベースからの関数で可能であるのに、パッケージglmnetからの関数でモデルに1つの説明変数のみを渡す可能性がないのはなぜですか? コードとエラーは次のとおりです。glmnetglm

> modelX<-glm( ifelse(train$cliks <1,0,1)~(sparseYY[,40]), family="binomial")
> summary(modelX)

Call:
glm(formula = ifelse(train$cliks < 1, 0, 1) ~ (sparseYY[, 40]), 
    family = "binomial")

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-0.2076  -0.2076  -0.2076  -0.2076   2.8641  

Coefficients:
               Estimate Std. Error  z value Pr(>|z|)    
(Intercept)    -3.82627    0.00823 -464.896   <2e-16 ***
sparseYY[, 40] -0.25844    0.15962   -1.619    0.105    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 146326  on 709677  degrees of freedom
Residual deviance: 146323  on 709676  degrees of freedom
AIC: 146327

Number of Fisher Scoring iterations: 6

> modelY<-glmnet( y =ifelse(train$cliks <1,0,1), x =(sparseYY[,40]), family="binomial"  )
Błąd wif (is.null(np) | (np[2] <= 1)) stop("x should be a matrix with 2 or more columns")
4

3 に答える 3

1

理由はわかりませんが、ある種の内部制限です。ローマンが上で主張したように、それは家族とは関係ありません。

glmnet(x = as.matrix(iris[2:4]), y = as.matrix(iris[1]))
## long output
glmnet(x = as.matrix(iris[1]), y = as.matrix(iris[1]))
Error in glmnet(x = as.matrix(iris[2]), y = as.matrix(iris[1])) : 
  x should be a matrix with 2 or more columns

コード内の簡単なチェックですhttps://github.com/cran/glmnet/blob/master/R/glmnet.R#L20

于 2016-09-20T14:27:41.603 に答える
-2

ドキュメントにそう書いてあるからです。

family="binomial" の場合、2 つの水準を持つ因子、または度数または比率の 2 列の行列 (2 番目の列が対象クラスとして扱われます。因子の場合、アルファベット順の最後の水準が対象クラスです) のいずれかになります。 )。

2 つのオプションがあります。2 つの列がカウントを表す行列を作成するか、x2 つの水準を持つ因子に変換します。

于 2015-03-24T11:22:32.130 に答える