Foro de discusión y soporte para usuarios de R

Un foro abierto a todos los temas relacionados con R que quiera.
Nota: Una url estable a este foro es https://knuth.uca.es/R-foro.

Regresión logística robusta

de Jesús Ruiz -

Hola:

Muy interesante el foro. Gracias. 

Pasando a mi pregunta, estoy intentando hacer una regresión logística robusta en R, y con un conjunto de variables. Para contrastar la contribución de cada variable estoy calculando la significatividad del modelo con todas las variables menos una (aquella cuya contribución se quiere comprobar). Esta sería la Hipótesis nula. Por el contrario la H1 sería el modelo completo. Con todas las variables se procede de este modo y se calcula el p-valor del test. Los comandos que estoy introduciendo son:

> Modi<-quasi.rob(as.matrix(probaf[,c(8,9,10,12,13)]), as.matrix(probaf[,c(15)]),out.col=5,choice="logit")


No obstante, en las versiones de R más actuales se utiliza anova.glmrob en vez de lo anterior. 

El caso es que, a veces, cuando intento introducir los anteriores argumentos, la respuesta del programa es:

“Error in lambda.coeff > 1e-04 : illegal comparison with complex values”

¿Alguien podría explicarme a qué se debe? Entiendo que se relaciona con el coeficiente lambda y a la relación entre las variables...

Por otro lado, ¿alguien podría decirme cuáles son los argumentos que se introducen en el R actual, la versión más reciente, para realizar una regresión logística robusta? ¿O algún ejemplo de la misma? Sé que se utiliza glmrob y anova.glmrob, y también "control" para fijar la constante de Huber, pero no sé en concreto cómo plantearlo ni el argumento completo. Si alguien tiene algún ejemplo, me ayudaría mucho. 

Muchas gracias. 

Saludos cordiales. 

Jesús

convertir un vector binario a un numero decimal

de jesus sotomayor -

estimados, necesito convertir un vector binario en un numero decimal.

ya logre programar el algoritmo para convertir el decimal a binario. pero no he logrado hacerlo de binario a decimal.

muchas gracias

Ayuda con ejercicio para Rstudio

de Mvlchi jks -

Plantear para cada uno H0 y Ha y explicar los pasos seguidos, cual de ambas es aceptada o rechazada y por qué.

1)      Juan está probando un dado octaédrico para ver si está cargado. Los resultados que obtiene son

Dados: 1,2,3,4,5,6,7,8

Frecuencias: 7,10,11,9,12,10,14,7

¿El dado está cargado o no?


Problema R

de Kike Per -


Hola a todos! Tengo un problema con un ejercicio de un curso que estoy haciendo de R. El problema es que el resultado no me da como vector. Espero que me alguien pueda ayudarme.  Abajo os pongo mis operaciones las cuales no me dan.

Gracias


EXERCISE :

A year is a leap year, if it can be divided by 4 but not by 100, except when it is divisible by 400. Create function ans(year1, year2), which returns all the leap years between year1 and year2. For example ans(2000,2010) should return vector c(2000,2004,2008). Number x is divisible by y if and only if the remainder is zero. In R you can use the operator %% to check if a number is exactly divisible by another number. Operator %% will return value 0 if and only if the number is divisible by other number. For example 100%%5 returns value 0 so 100 is divisible by 5. When you are ready input c.


Called from: question()


ans <- function(year1,year2){

 

for(year in year1:year2){

 

if((year %% 4 == 0) & (year %% 100 != 0) | (year  %% 400 == 0)){

 

return(year)

}

next

}

}




Mapas en R

de Alicia Jerez Del Pozo -
Buenos días,


Estoy intentando hacer unos mapas usando la función gvisGeoChart. 

En el código que estoy usando primero pido que me lea los datos de un excel con esta función (dat<-read.xlsx) y después paso a identificar las variables:

pais<- dat[,1]

code <- dat[,2]

export<- dat[,3]

Pero a la hora de hacer el mapa es como que el dato sobre el código me lo da en número en vez de en letra (ya que son códigos ISO  identificando cada pais y son de 2 letras) 

map <- gvisGeoChart(data=data, "pais", "code", "export",

                    options=list(width='500px',heigth='600px',

                                 colors="['#fad7cd','#f3b19e','#d84519']"))

plot(map)


¿Cómo puedo hacer para que no me cambie el formato?



Sumar elementos de las posiciones pares de un vector

de Abelardo Requena Blanco -

Hola, verán estoy empezando con el tema de vectores, el caso es que tengo sumar los elementos de las posiciones pares de un vector, y no se muy bien como hacerlo, se sumar los elementos que son pares o impares, pero no se como puedo hacer que detecte si la posición de ese elemento es par y que luego sume el valor de ese elemento y no la posición, no se si me explico...

Les pongo el ejemplo de lo que estoy haciendo por si se entiende mejor:

#Este es el vector

vector<-c(2, 5, 3, 6, 4, 7, 4, 6, 3, 6, 3, 6, 3, 9, 8, 6)

#Creo esta variable para en ella sumar los elementos

SumaPosPar<-0

#inicio un bucle for, y es donde viene el problema no se como indicar que sume los elementos de las posiciones pares en vez de lo elementos pares en si.

for  (i in vector)

  if (i%%2==0)

    SumaPosPar<- SumaPosPar+ i

print(SumaPosPar)


Muchas gracias por adelantado, saludos

Problema programación

de ruben mesa -

Me gustaría que alguien me ayudara en resolver el problema que tengo con sample en R.

noms <- matrix(nrow = 14, ncol = 5, rep(0,5*14))
noms <- as.data.frame(noms)
names(noms) <- c("Enrique","Marcos","Pablo","Juan","Miguel")
rownames(noms) <- c("Ronda1","Ronda2","Ronda3","Ronda4","Ronda5","Ronda6","Ronda7","Ronda8","Ronda9","Ronda10","Ronda11","Ronda12","Ronda13","Ronda14")
x <- c(1:14)
noms[ ,1] <- sample(x,14, replace = F)
for(i in 1:14){
for(j in 2:5){
    if(j == 2){
        noms[i,j] <- sample(x[x != noms[i,j-1]],1)
    } else if(j == 3){
        noms[i,j] <- sample(x[(x != noms[i,j-1]) && (x != noms[i,j-2])],1)
    } else if(j == 4){
        noms[i,j] <- sample(x[(x != noms[i,j-1]) && (x != noms[i,j-2]) && (x != noms[i,j-3])],1)
    } else if(j == 5){
        noms[i,j] <- sample(x[(x != noms[i,j-1]) && (x != noms[i,j-2]) && (x != noms[i,j-3]) &&  (x != noms[i,j-4])],1)
    }
}}

O añadir esta función :

f <- function(x, z) {
t <- sample(x[x != z],1)
return(t)}

De tal forma que en cada fila no se repita ningun numero y que cada columna contenga del 1:14. Todo aleatorio. También deseo añadir : Si en una fila, por ejemplo, contiene el 1 no puede aparecer el 2. Es decir, si tenemos un numero impar no puede aparecer el numero impar+1.

Muchas gracias de antemano.


Ecuaciones de dos variables

de Felix Elizondo Perez -
Hola buen dia como se resuelven dos ecuaciones de dos variables por ejemplo estas en 6x+17y=1, 9x+23y=4. Es que estoy usando esta :

X<-matrix(c(6,17,9,23),2,2)

X

Y<-c(1,4)

S<-solve(t(X)%*%X)%*%t(X)%*%Y

S


mariam

de Maria Morte -

Hola a todos, 

Soy nueva usando R y tengo unos problema en procesado de datos que quiero hacer en R.

 

Tengo un fichero de datos  en formato texto separado con ; (punto y coma).

Este fichero contiene las columnas:

Poblacion;Sexo;Nota; EdadP, EdadM

Tengo 2 problemas que no se como  tratar.

1.- Problema

La  columna Poblacion debo tenerla  siempre con la primera letra en mayúsculas y  tengo poblaciones  que tiene artículos o prepsosicones entre medias como por ejemplo: ( de, del,, las...)

Albaida del Aljarafe o  Santa Cruz de  Tenerife, tambien tengo algunas con Valencia, valencia, y (blanco)Valencia o Valencia(blanco) 

 

 

NO sé cémo tratar este dato para que solo aparezca en La primera letra  de cada palabra y no los enlace o artículos, es decir no debe aparecer: del o de .

 

2,. Problema

La columna Nota por  hay errores y los datos no todso son de tipo 7.8 o 8.9 

Parece que han errores y tengo algunos  6,5 o 6,9

ES decir han introducido la coma como separador decimal en vez de punto. 

 

Nota podria corregir los errores con otro programa pero quiero hacerlo todo con R.

 

Gracias y espero un pronta respuesta 

Adjunto un troz del fichero

 

 

Un trozo de ejemplo del fichero :

Poblacion;Sexo;Nota;EdadP;EdadM

  Valencia ;m;7.23;45;34

Albaida del Aljarafe;M;5.93;36;37

valencia;M;NA;34;35

Barcelona;M;6.33;37;29

Albalate de las Nogueras;  M;8.93;35;26

  Valencia ;M;7.23;29;44

Santa Cruz de Tenerife;  M   ;NA;26;23

Valencia;M;9.23;44;46

Valencia;  M   ;7.63;23;35

Valencia ;M;5.73;46;31

 Valencia;M;5.03;35;35

Valencia;M;NA;31;-24

Valencia;M   ;6.13;35;28

Albalate de las Nogueras;  M;7.63;24;37

 Valencia;M   ;7.53;28;26

 Valencia;  M;6.33;37;20

Santa Cruz de Tenerife;M;5.33;26;25

Santa cruz de Tenerife;  m;7.33;20;35

 Santa Cruz de tenerife;M;8.23;-25;39

Santa cruz de tenerife;M   ;6.93;35;36


Selección de filas y columnas para calculos

de Florencia Sanchez -

Hola, estoy trabajando con un dataframe con múltiples filas y columnas, se presento el problema de que ciertos datos están mal y se deben multiplicar por 2. Pero esos datos se deben seleccionar por las filas que cumplan determinada condición (en este caso me interesan las filas en la que la columna 2 el dato diga por ejemplo: "habitantes") y las columnas que van desde por ejemplo: 3 a 8.

Es una selección acotada de datos de determinadas filas y determinadas columnas a las cuales debo aplicar la multiplicación.

No se como hacerlo sin tener que crear un dataframe totalmente nuevo y perder los datos de las otras filas, además del orden que ya tiene el archivo original.