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.

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!

Abrir R-commander desde R

de Alba Gasca Vazquez -

Buenas noches,

hasta hace unos días no tenia ningun problema con R-commander, pero no se que toqué que ahora cada vez que intento abrirlo desde R me aparece el siguiente mensaje:

Loading required package: splines
Loading required package: RcmdrMisc
Loading required package: car
Loading required package: sandwich
Error: package ‘sandwich’ could not be loaded
Además: Mensajes de aviso perdidos
In library(pkg, character.only = TRUE, logical.return = TRUE, lib.loc = lib.loc) :
there is no package called ‘sandwich’
>

Alguien sabe como puedo arreglarlo? El domingo tengo que entregar un trabajo y lo necesito urgentemente!!!!!!!

Muchas gracias,

Alba.