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.

Referencias cruzadas en Bookdown

de Valen Terés Terés -

Buenas tardes:

 

Saludos a todos en mi primera incursión en el foro.

 

Hasta donde he podido ver, Bookdown permite hacer referencia a títulos, figuras, ecuaciones, tablas, etc.

 

No he sido capaz de encontrar la forma de hacer referencia a un párrafo del texto o a un número de una lista numerada.

 

Muchas gracias.

Simulacion en R

de Malvis Valenzuela -

 

Hola tengo este pequeno programa pero tengo que hacer que los camiones vayan en distintas direcciones y no se como hacerlo alguien que ayude o me dirija para continuar haciendo el programa . Mi correo es, los comentarios son bienvenidos.  Es un programa que debe hacer una recollecion de materiales en un area determinada , donde la demanda es aleatoria y la capacidad del camion y la cantidad de camiones , las toneladas y las horas son los parametros de cambio . 

Muchas Gracias .

simulation <- function(n_trucks,capacity,trash_tons,hours){


# capacity of the truck
c_truck <- runif(n_trucks,capacity[1],capacity[2])
# trash of the block
ton_garbage <- rnorm(1,trash_tons[1],trash_tons[2])
# travel number
travelnumber <- ceiling(ton_garbage/sum(c_truck))
t_recolection <- 0
t_going_l <- 0
t_returning<- 0
for (i in 1:travelnumber) {
t_recolection[i] <- rnorm(n = 1,1,0.5)
t_going_l[i] <- rnorm(n = 1,1,0.05)
t_returning[i] <- rnorm(n = 1,1,0.05)
x <- cumsum(c(t_recolection,t_going_l,t_returning))
if (x[i*3]>=hours)break

}

(Editado por Manuel Muñoz Márquez - envío original sábado, 30 de julio de 2022, 06:57)

Error en R

de Malvis Valenzuela -

Me sale este error despues de crear Workarea. Alguien sabra por que 

Workarea<-matrix(data= rnorm(n = Areas,10,5), nrow = Areas,ncol = Areas )

 

Error in rnorm(n = Areas, 10, 0.8:1.33) : invalid arguments
In addition: Warning message:
In rnorm(n = Areas, 10, 0.8:1.33) : NAs introduced by coercion

Acerca de dos gráficos en R

de Joan Fernando Lamprea Huertas -

Hola, buen día. 
Tengo que realizar un gráfico de probabilidad normal con los residuales no escalados (sin aplicar normalidad ni estudentizar) y otro de los residuos estudentizados; sin embargo, no tengo muy claro cómo hacerlos. 
Este es el código que tengo hasta el momento: 

punto_10=data.frame(radio=c(1,0.9,0.8,0.7,0.6,0.5,0.4,0.3),visc=c(0.45,0.2,0.34,0.58,0.7,0.57,0.55,0.44))
punto_10
reg10 = lm(punto_10$visc~punto_10$radio)

reg10[["residuals"]]
qqplot(reg10[["residuals"]],reg10[["residuals"]])
qqnorm(reg10[["residuals"]])
sort(rstandard(reg10))
sort(residuals(reg10))
sort(studres(reg10))


pi<-NULL
for(i in 1:length(reg10[["residuals"]])){
pi[i]<-(i-0.5)/length(reg10[["residuals"]])
}

plot(sort(residuals(reg10)),pi)

La función "qqnorm" realiza gráficos de probabilidad normal, pero ese es el inconveniente: normalizados (para el caso de los residuos, usa los r-Student). Y los que he intentado hacer, es como los hacen con minitab, que es la residuo con el cuantil correspondiente; sin embargo, no puedo hacer la recta para verificar si se cumple la normalidad. 

Mi pregunta es, ¿Cómo se realiza un gráfico con recta, a través de una función, para los residuos sin escalar y estudentizados? 
En caso de que no exista una función que los realice, ¿cómo adiciono una recta que corresponda a los puntos que deseo graficar? Ya que también lo intenté con la función "qqline", pero también los normaliza. 

Quedo atento a sus respuestas y agradezco la ayuda que me puedan brindar. 

Seleccionar columnas de una tabla, teniendo en cuenta un filtro

de Joan Fernando Lamprea Huertas -

Hola, buen día. 

 

Tengo una pequeña consulta: ¿Se pueden seleccionar columnas de una tabla, teniendo en cuenta que hay un filtro aplicado? Es decir, por ejemplo, tengo una tabla con tres columnas: Nombre completo, cédula, edad, sexo, etc. Para fines prácticos, nos piden únicamente la edad, organizada de mayor a menor, y el nombre completo (asociado a la edad ordenada). ¿Hay una forma de extraer ambas columnas, con el filtro de menor a mayor aplicado, sin que se modifique la información de la persona? 

Quedo atento a sus respuestas y les agradezco la atención.

 

Saludos.

Versión 5.1-1 de RcmdrPlugin.UCA liberada

de Manuel Muñoz Márquez -

Se ha liberado la versión 5.1-1 de RcmdrPlugin.UCA que incluye como principal novedad el test de Kolmogorov.Smirnov para la comparación de la distribución de dos muestras.

Se puede instalar usando el gestor de paquetes habitual o ejecutando en R la instrucción

install.packages('RcmdrPlugin.UCA')

Más información en la página del paquete https://knuth.uca.es/RcmdrPlugin.UCA

Muestra aleatoria basada en un modelo de regresión lineal simple

de Joan Fernando Lamprea Huertas -

Hola, excelente inicio de semana. 

Tengo una pequeña cuestión con el siguiente ejercicio: 

Para el modelo de regresión lineal simple y = 50 + 10x + e, donde e tiene NID (0, 16), suponer que se usan n = 20 pares de observaciones para ajustar este modelo. Generar 500 muestras de 20 observaciones, tomando una observación para cada valor de x = 1, 1.5, 2, ... , 10 para cada muestra.

a. Para cada muestra, calcular los estimados de la pendiente y la ordenada al origen por mínimos cuadrados. Trazar histogramas de los valores muestrales de B1 y B0 

b. Para cada muestra, calcular un estimado de E(y | x = 5). Trazar un histograma de los estimados obtenidos. Comentar la forma del histograma.

c. Determinar un intervalo de confianza de 95% para la pendiente en cada muestra. ¿Cuántos de los intervalos contienen el valor verdadero B1 = 10? ¿Es lo que se esperaba?

d. Para cada estimado de E(y | x = 5) en la parte b, calcular el intervalo de confianza de 95%. ¿Cuántos de esos intervalos contienen el valor verdadero de E(y | x = 5) = 100? ¿Es lo que se esperaba?

Sucede que he intentado generar unas muestras aleatorias; sin embargo, no obedecen la condición de que esas observaciones ajustan el modelo dado anteriormente. La verdad, no sé muy bien cómo generar dichas muestras y que, las 500, se ajusten al modelo. 

Realmente, agradecería la ayuda que me puedan brindar y espero que tengan un inicio de semana productivo. 

Saludos. 

Crear nuevos elementos cambiando ciertas letras del código

de Joan Fernando Lamprea Huertas -

Hola, buen día. 
Tengo una pequeña duda: deseo hacer una función que genere nuevos valores, cambiando ciertos caracteres de la misma; es decir, en el siguiente código:

library(combinat)
hoteles=c("A","B","C","D","E")
choose(5,3)
muestrasMAS=t(as.matrix(combn(hoteles,3)))
dim(muestrasMAS)
muestrasMAS
probmuestra<-c(6/90,7/90,8/90,8/90,9/90,10/90,9/90,10/90,11/90,12/90)
I(muestrasMAS=="A")
IA=rowSums(I(muestrasMAS=="A"))
IA
IB=rowSums(I(muestrasMAS=="B"))
IC=rowSums(I(muestrasMAS=="C"))
ID=rowSums(I(muestrasMAS=="D"))
IE=rowSums(I(muestrasMAS=="E"))
muestrasMAS=data.frame(muestrasMAS,probmuestra,IA,IB,IC,ID,IE)
muestrasMAS
muestrasMAS$ns=rowSums(muestrasMAS[,5:9])
muestrasMAS
attach(muestrasMAS)
piA=sum(IA*probmuestra)
piA
var=piA*(1-piA)*(9/10)
var
piAB=sum(IA*IB*probmuestra)

 

Quiero cambiar las letras "A" y "B" de "piAB", e "IA" e "IB", en la última línea, por las que están en el vector "hoteles", sin repetición, para un total de 10 sentencias (piAC=sum(IA*IC*probmuestra), piAD=sum(IA*ID*probmuestra), piAE=sum(IA*IE*probmuestra), piBC, etc) ejecutables. Intenté el siguiente código:

for (i in hoteles){
 for (j in hoteles){
  if (i!=j)
  print(pi[i][j]\=sum(I[i]*I[j]*probmuestra))
 }
}

Pero me arroja el siguiente error:


Error: unexpected '=' in:
" if (i!=j)
print(pi[i][j]="
> }
Error: unexpected '}' in " }"
> }
Error: unexpected '}' in "}

 

Me gustaría que, por favor, me indicaran que está mal como tal con el código que propuse y, si conocen una alternativa para lo que quiero intentar, les agradecería bastante que me la compartieran.

Quedo atento a sus comentarios. 

Saludos.

Generar 1000 simulaciones de una muestra aleatoria de tamaño n, con distribución Bernoulli de parámetro p

de Joan Fernando Lamprea Huertas -

Buen día, comunidad. 
Tengo el siguiente dilema:

a. Para cada valor de p entre 0.05,0.1,0.15,...,0.85,0.9,0.95:
   b. Para cada tamaño de muestra n entre 5, 10, 50, 100, 200, 500,
   1000:

       c. Repetir este procedimiento m=1000 veces:

       c1. Genere una muestra aleatoria de tamaño n de
       una Bernoulli con parámetro p.

Para el cual, le estoy dando la siguiente solución: 

#n=5,p=0.05

cincodecinco <- matrix(NA, 1000, 5)
#Y en cada paso del bucle reemplazar la columna que corresponda:

for(i in 1:5) {
 print(rbernoulli(n = 5, p = 0.05))
 b_cincodecinco <- print(rbernoulli(n = 5, p = 0.05))
 cincodecinco[, i] <- b_cincodecinco
}

#n=10,p=0.05
diezdecinco <- matrix(NA, 1000, 10)
#Y en cada paso del bucle reemplazar la columna que corresponda:

for(i in 1:10) {
 print(rbernoulli(n = 10, p = 0.05))
 b_diezdecinco <- print(rbernoulli(n = 10, p = 0.05))
 diezdecinco[, i] <- b_diezdecinco
}

...

y así por cada uno de los valores de p y de n. 

Soy muy novato en el mudo de R y quería saber si hay alguna forma de generar esas mil muestras, con los respectivos valores de p y n, sin necesidad de reemplazar dichos valores en cada código; algo así como un código que me genera las matrices correspondientes a cada muestra, para un total de mil filas, por cada una de las alternativas, sin tener que hacer el proceso de "copia y pega". En caso de que exista, por favor, ¿me indicaran cómo es la estructura del mismo? En caso de que no, por favor, ¿me pueden notificar? 

Les agradecería mucho la ayuda que me pudieran brindar. 

Saludos. 
 

 

Problemas con R

de Emmanuel Santos May -
Buen día compañeros, tengo un problema con el programa R, soy nuevo en estos programas, quisiera saber si me pueden ayudar. Utilizo una mac con sistema mountain lion. Instale el programa R y quize jalar el programa Rcmdr, pero me aparece la siguiente informacion desde que inicio el programa:


Durante la inicializaci'on - Mensajes de aviso perdidos

1: Setting LC_CTYPE failed, using "C" 

2: Setting LC_COLLATE failed, using "C" 

3: Setting LC_TIME failed, using "C" 

4: Setting LC_MESSAGES failed, using "C" 

5: Setting LC_PAPER failed, using "C" 

[R.app GUI 1.52 (6188) i386-apple-darwin9.8.0]


WARNING: You're using a non-UTF8 locale, therefore only ASCII characters will work.

Please read R for Mac OS X FAQ (see Help) section 9 and adjust your system preferences accordingly.

[History restored from /Users/emmanuelsantos/.Rapp.history]


Espero me puedan ayudar!!!!

Saludos!