Estoy tratando de llevar a cabo lazo de regresión utilizando el lars paquete, pero parece que no puede obtener el lars poco para trabajar. He introducido el código:

diabetes<-read.table("diabetes.txt", header=TRUE)
diabetes
library(lars)
diabetes.lasso = lars(diabetes$x, diabetes$y, type = "lasso")

Sin embargo, me sale un mensaje de error :
Error en la rep(1, n) : invalid ‘veces’ argumento.

He intentado entrar como este:

diabetes<-read.table("diabetes.txt", header=TRUE)
library(lars)
data(diabetes)
diabetes.lasso = lars(age+sex+bmi+map+td+ldl+hdl+tch+ltg+glu, y, type = "lasso")

Pero luego me sale el mensaje de error:
‘Error en lars(edad+sexo + imc + mapa + td + ldl + hdl + p + ltg + glu, y, type = «lazo») :
el objeto ‘edad’ no encontrado’

Donde voy mal?

EDIT: Datos – como la de abajo, pero con otro 5 columnas.

             ldl          hdl          tch          ltg          glu
1   -0.034820763 -0.043400846 -0.002592262  0.019908421 -0.017646125
2   -0.019163340  0.074411564 -0.039493383 -0.068329744 -0.092204050
3   -0.034194466 -0.032355932 -0.002592262  0.002863771 -0.025930339
4    0.024990593 -0.036037570  0.034308859  0.022692023 -0.009361911
5    0.015596140  0.008142084 -0.002592262 -0.031991445 -0.046640874
Puedes publicar el resultado de dput(diabetes) en la primera sección (para reproducible)?
En lars() x se supone que es una matriz y y un vector. Sus datos son poco probable que cumplan con los requisitos de al menos x como que va a ser de un único vector de alguna descripción si el código que muestran es exacta.
Mis datos es un archivo txt con cerca de 500 muestras de datos para 10 variables. ¿Cómo puedo modificar el código para que funcione? Yo he probado los 2 de arriba, pero no funciona.
nos muestran sus datos, un par de líneas será suficiente
He añadido mis datos en el post original ahora

OriginalEl autor math11 | 2013-01-07

2 Comentarios

  1. 4

    Creo que parte de la confusión puede tener que ver con el hecho de que el diabetes conjunto de datos que viene con el lars paquete tiene una estructura inusual.

    library(lars)
    data(diabetes)
    sapply(diabetes,class)
    ##        x         y        x2 
    ##   "AsIs" "numeric"    "AsIs" 
    
    sapply(diabetes,dim)
    ## $x
    ## [1] 442  10
    ## 
    ## $y
    ## NULL
    ## 
    ## $x2
    ## [1] 442  64

    En otras palabras, diabetes es una estructura de datos que contiene «columnas» que son propios de las matrices. En este caso, with(diabetes,lars(x,y,type="lasso")) o lars(diabetes$x,diabetes$y,type="lasso") funcionar bien. (Pero sólo lars(x,y,type="lasso") no, porque R no saber buscar la x y y variables dentro de la diabetes marco de datos.)

    Sin embargo, si usted está leyendo en sus propios datos, tendrás que separar la variable de respuesta y el predictor de la matriz de sí mismo, algo así como

    X <- as.matrix(mydiabetes[names(mydiabetes)!="y",])
    mydiabetes.lasso = lars(X, mydiabetes$y, type = "lasso")

    O usted podría ser capaz de utilizar

    X <- model.matrix(y~.,data=mydiabetes)
    ‘diabetes’ es uno de los conjuntos de datos que vienen con pkg:lars (como fue sugerido por el OP del uso de data(diabetes).
    He probado el de arriba y me sale: Error en lars(x, y, type = «lazo») : el objeto ‘x’ no se encuentra
    La diabetes es un objeto de la lista, cuya ‘x’ es un elemento de la matriz. colnames(diabetes$x) [1] "age" "sex" "bmi" "map" "tc" "ldl" "hdl" "tch" "ltg" "glu"
    en realidad es una estructura de datos …
    en realidad es una matriz … al menos eso es lo que el intérprete piensa: is.matrix(diabetes$x) [1] TRUE … y … is.data.frame(diabetes$x) [1] FALSE

    OriginalEl autor Ben Bolker

  2. 4

    lars::lars no parece haber una fórmula de la interfaz, lo que significa que usted no puede utilizar la fórmula de la especificación de los nombres de columna (y además no acepta un «data=» argumento). Para obtener más información sobre este y otros «minería de datos» de los temas, es posible que desee obtener una copia del texto clásico: «Elementos de Estadística de Aprendizaje». Intente esto:

    # this obviously assumes require(lars) and data(diabetes) have been executed.
    > diabetes.lasso = with( diabetes, lars(x, y, type = "lasso"))
    > summary(diabetes.lasso)
    LARS/LASSO
    Call: lars(x = x, y = y, type = "lasso")
       Df     Rss       Cp
    0   1 2621009 453.7263
    1   2 2510465 418.0322
    2   3 1700369 143.8012
    3   4 1527165  86.7411
    4   5 1365734  33.6957
    5   6 1324118  21.5052
    6   7 1308932  18.3270
    7   8 1275355   8.8775
    8   9 1270233   9.1311
    9  10 1269390  10.8435
    10 11 1264977  11.3390
    11 10 1264765   9.2668
    12 11 1263983  11.0000

    OriginalEl autor 42-

Dejar respuesta

Please enter your comment!
Please enter your name here