Aquí tienes algunos enlaces interesantes relacionados con este documento.
This is a free css template released by Sean Pollock for personal or commercial use. It was creating using a template from Zymic as a basis. It is licensed under the Creative Commons Attribution 2.5 Canada License. That pretty much means you can use it in any way you want, but you must have "attribution" to Sean Pollock, in the form of a link in your footer.
En esta página web encontrarás funciones creadas
en el entorno de programación R para abordar los contenidos
de la asignatura de Técnicas Cuantitativas 1 de los grados
que se imparten en la facultad de Ciencias Económicas y
Empresariales de la Univerisdad de Granada. Más
concretamente, se estudia estadísticas descrptiva,
regresión por mínimos cuadrados,
número índices, análisis descriptivo
de series cronológicas y probabilidad.
Se ha creado una función para cado uno de los apartados
anteriores, la cual serán explicadas por separado.
Al mismo tiempo, se ha creado también un menú
(descargar)
que va
a permitir introducir fácilmente los datos y obtener
los correspondientes resultados.
El manejo de este menú se ilustrará con material
multimedia:
Descarga del menu TC1.RData (enlace).
Estadística Descriptiva (enlace).
Regresión por Mínimos Cuadrados (enlace).
Números Índices (enlace).
Análisis descriptivo de Series Cronológicas (enlace).
Probabilidad (enlace).
Variable aleatoria (enlace).
Se ha creado una función, Descriptiva(), que permitirá calcular las principales características descriptivas de un conjunto de datos. A saber:
Medidas de posición: media aritmética, geométrica y armónica, mediana, moda y cuantiles.
Medidas de dispersión: mínimo, máximo, recorrido o rango, varianza, desviación típica, coeficiente de apertura, recorrido relativo, recorrido semi-intercuartílico y coeficiente de variación.
Medidas de forma: coeficiente de asimetría y coeficiente de curtosis.
Medidas de concentración: índice de Gini.
Representación gráfica: diagrama de barras, cajas y sectores, histograma.
Descriptiva <- function(datos, representacion=T,
discreta="s") {
n <- length(datos)
minimo <- min(datos)
maximo <- max(datos)
rango <- maximo - minimo
cuantil1 <- quantile(datos,
probs=0.25, name=FALSE)
cuantil2 <- quantile(datos,
probs=0.5, name=FALSE)
cuantil3 <- quantile(datos,
probs=0.75, name=FALSE)
recorrido <- cuantil3 - cuantil1
coeficienteapertura <-
maximo/minimo
recorridosemi <-
(cuantil3-cuantil1)/(cuantil3+cuantil1)
mediaaritmetica <- mean(datos)
mediageometrica <-
exp(mean(log(datos)))
mediaarmonica <- n/(sum(1/datos))
recorridorelativo <-
recorrido/mediaaritmetica
varianza <- var(datos)
desviaciontipica <-
sqrt(var(datos))
coeficientevariacion <-
desviaciontipica/mediaaritmetica
m3 = sum((datos-mediaaritmetica)^(3))/n
asimetria <-
m3/(desviaciontipica^(3))
m4 = sum((datos-mediaaritmetica)^(4))/n
curtosis <-
(m4/(desviaciontipica^(4))) - 3
datos <- sort(datos)
u <- cumsum(datos)
p <- array(0,c(1,n))
q <- array(0,c(1,n))
for (i in 1:n)
{
p[i] <- i/n
q[i] <-
u[i]/u[n]
}
indicegini <- 1 -
((sum(q[1:n-1]))/(sum(p[1:n-1])))
if (representacion==T)
{
if (discreta=="s")
{
tab
<- table(sort(datos))
win.graph()
barplot(tab, main="Diagrama de Barras", col="red")
win.graph()
pie(tab,
main="Diagrama de Sectores")
mod <- sort(table(datos), TRUE)
moda <- mod[1]
} else
{
win.graph()
boxplot(datos, main="Diagrama de Cajas", col="red")
win.graph()
hist(datos, main="Histograma", col="red")
moda <- c()
}
}
resultado <- list(minimo,
maximo,
rango,
cuantil1,
cuantil2,
cuantil3,
moda,
recorrido,
coeficienteapertura,
recorridorelativo,
recorridosemi,
mediaaritmetica,
mediageometrica,
mediaarmonica,
varianza,
desviaciontipica,
coeficientevariacion,
asimetria,
curtosis,
indicegini)
names(resultado) <-
c("Mínimo",
"Máximo",
"Recorrido o rango",
"Primer Cuantil",
"Segundo Cuantil o Mediana",
"Tercer Cuantil",
"Moda",
"Recorrido Intercuartílico",
"Coeficiente de Apertura",
"Recorrido Relativo",
"Recorrido
Semi-intercuartílico",
"Media Aritmética",
"Media Geométrica",
"Media Armónica",
"Varianza",
"Desviación
Típica",
"Coeficiente de Variación",
"Coeficiente de Asimetría",
"Coeficiente de Curtosis",
"Índice de Gini")
resultado
}
source("Descriptiva.txt")
# datos = sample(10,5000, replace=TRUE)
datos = c(5.75, 6.25, 4.5, 6, 7.75, 5, 5.75, 2.5, 6, 4.5, 4.5, 1, 1.5, 8.5, 7.25, 6, 4, 6.75, 3.25, 1, 7, 1, 6.75, 1, 1.25, 6.25, 6.75, 6.25, 4, 8.75, 3.5, 8.5, 7.25, 2.25, 2, 5.75, 1.5, 7.25, 6.25, 2, 8, 7, 6, 6.5, 1.75, 1, 5.5, 3.5, 4.75, 2.5, 5, 7.5, 3.75, 6.25, 5, 6.25, 4.5, 4.25, 3.5, 1.5, 7.5, 5.75, 2.25, 8, 1, 4.75, 4.25, 2.75, 4.75, 5, 6.5, 2, 1.5, 5, 4.25, 6.25, 3, 5.75)
Descriptiva(datos)
Se ha creado una
función, Regresion(),
que permita calcular la regresión por
mínimos cuadrados de dos variables. Más
concretamente se calculan las medias y varianzas de las dos variables,
su covarianza y correlación, el coeficiente de
determinación y las estimaciones de los coeficientes.
También se presentan en una tabla los valores reales,
estimados y los errores, y se representan los mismos.
Regresion <- function(Y, X, representacion=TRUE) {
mediaX <- mean(X)
varianzaX <- var(X)
mediaY <- mean(Y)
varianzaY <- var(Y)
covarianza <- cov(Y, X)
pendiente <- covarianza/varianzaX
independiente <- mediaY -
pendiente*mediaX
coeficientedeterminacion <-
(covarianza^2)/(varianzaX*varianzaY)
correlacion <-
sqrt(coeficientedeterminacion)
estimacion <- independiente +
pendiente * X
errores <- Y - estimacion
par <- cbind(X, Y, estimacion,
errores)
resultado <- list(mediaX,
varianzaX,
mediaY,
varianzaY,
covarianza,
correlacion,
coeficientedeterminacion,
independiente,
pendiente,
par)
names(resultado) <- c("Media
variable independiente",
"Varianza
variable independiente",
"Media
variable dependiente",
"Varianza
variable dependiente",
"Covarianza",
"Correlación",
"Coeficiente Determinacion",
"Término Independiente",
"Pendiente",
"Valores
reales, estimación y errores")
#represento los puntos y la recta
calculada
if (representacion==TRUE) {
plot(X,
Y, type="o", col="blue", las=2, main="Representación de
datos reales (azul) y estimados (rojo)")
abline(independiente, pendiente, lty=2, col="red")
win.graph()
plot(X,
errores, type="b", col="red", main="Representación de los
errores (rojo)")
abline(0,
0, lty=2)
}
resultado
}
source("Regresion.txt")
Y = c(5.75, 6.25, 4.5, 6, 7.75, 5, 5.75, 2.5, 6, 4.5, 4.5, 1, 1.5, 8.5, 7.25, 6, 4, 6.75, 3.25, 1)
X = c(7, 1, 6.75, 1, 1.25, 6.25, 6.75, 6.25, 4, 8.75, 3.5, 8.5, 7.25, 2.25, 2, 5.75, 1.5, 7.25, 6.25, 2)
Z = c(8, 7, 6, 6.5, 1.75, 1, 5.5, 3.5, 4.75, 2.5, 5, 7.5, 3.75, 6.25, 5, 6.25, 4.5, 4.25, 3.5, 1.5)
W = c(7.5, 5.75, 2.25, 8, 1, 4.75, 4.25, 2.75, 4.75, 5, 6.5, 2, 1.5, 5, 4.25, 6.25, 3, 5.75, 5.5, 3.5)
Regresion(sort(Y), sort(X))
Regresion(sort(Z), sort(W))
Se han creado 5 funciones que van a permitir:
Obtener una serie de números índices: SerieIndiceSimple().
Enlazar series de números índices con distinta base: EnlaceSeries().
Cambiar de base en series de números índices: CambioBase().
Calcular la tasa media de variación: TMV().
Deflactar series económicas: Deflactacion().
SerieIndiceSimple <- function(SerieValores,
ValorPeriodoBase) {
SerieIndice <-
(SerieValores/ValorPeriodoBase)*100
SerieIndice
}
EnlaceSeries <- function(SerieAntigua, SerieNueva) {
longitud <- length(SerieAntigua)
denominador <-
SerieAntigua[longitud]
NuevaSerieAntigua <-
(SerieAntigua/denominador)*100
SerieEnlazada <-
c(NuevaSerieAntigua[1:(longitud-1)], SerieNueva)
SerieEnlazada
}
CambioBase <- function(SerieNumeroIndice,
IndiceNuevaBase) {
NuevaSerieNumeroIndice <-
(SerieNumeroIndice/IndiceNuevaBase)*100
NuevaSerieNumeroIndice
}
Deflactacion <- function(PreciosActuales, Deflactor) {
PreciosConstantes <-
(PreciosActuales/Deflactor)*100
PreciosConstantes
}
TMV <- function(valorinicial, valorfinal, periodo) {
cociente <-
valorfinal/valorinicial
raiz <-
cociente^(1/periodo)
tmv <- raiz - 1 tmv
}
source("NumerosIndices.txt")
Serie <- c(55, 63, 65, 72)
Serie1 <- c(121, 123, 126, 131, 135)
Serie2 <- c(100, 103, 106, 109, 113, 117)
Serie3 <- c(78, 85, 95, 100)
SerieIndiceSimple(Serie, Serie[1])
EnlaceSeries(Serie1, Serie2)
CambioBase(Serie1, Serie1[3])
TMV(Serie[1], Serie[4], 3)
Deflactacion(Serie, Serie3)
Se han creado las funciones siguientes para:
Métodos de análisis de la tendencia: funciones TendenciaMediasMoviles (que a su vez usa las funciones Par y MediasGrupos) y TendenciaRegresion.
Métodos de análisis de las variaciones estacionales: funciones EstacionalMediasMoviles (que a su vez usa las funciones TendenciaMediasMoviles y Media) y EstacionalRegresion (que a su vez usa la función Regresion).
Par <- function(numero)
{
modulo <- numero %% 2
modulo
# si modulo = 0, entonces numero es par
# si modulo = 1, entonces numero es impar
}
MediasGrupos <- function(SerieTemporal, p)
{
longitud <- length(SerieTemporal)
grupo <-
array(0,c(longitud-p+1,p))
mediagrupo <-
array(0,c(longitud-p+1,1))
i <- 1
k <- 1
grupo[i,1:p] <- SerieTemporal[1:p]
mediagrupo[i] <-
mean(grupo[i,1:p])
while (p+k <= longitud)
{
i
<- i + 1
grupo[i,1:p] <- SerieTemporal[(1+k):(p+k)]
mediagrupo[i] <- mean(grupo[i,1:p])
k
<- k + 1
}
#grupo
mediagrupo
}
TendenciaMediasMoviles <- function(SerieTemporal, p,
representacion=TRUE)
{
#represento la serie original por defecto
if (representacion==TRUE)
{
win.graph()
#postscript("SerieOriginal.eps", horizontal=FALSE,
onefile=FALSE, height=8, width=6, pointsize=10)
jpeg("SerieOriginal.jpg")
plot(SerieTemporal, xlab="Tiempo", ylab="Serie Temporal",
type="o")
dev.off()
}
#calculo la serie suavizada y la centro
Medias <-
MediasGrupos(SerieTemporal, p)
SerieSuavizada <-
array(NA,c(1,length(SerieTemporal)))
centrada <- Par(p)
if (centrada == 1)
{
k
<- (p+1)/2
for (i in
1:length(Medias))
{
SerieSuavizada[k] <-
Medias[i]
k <- k + 1
}
}
else
{
Medias
<- MediasGrupos(Medias, 2)
k
<- ((p+1)/2+0.5)
for (i in
1:length(Medias))
{
SerieSuavizada[k] <-
Medias[i]
k <- k + 1
}
}
#represento la serie original y
suavizada de forma conjunta
if (representacion==TRUE)
{
win.graph()
#postscript("SerieOriginalSuavizada.eps", horizontal=FALSE,
onefile=FALSE, height=8, width=6, pointsize=10)
jpeg("SerieOriginalSuavizada.jpg")
plot(SerieTemporal, type="n")
Series
<- ts(matrix(c(SerieTemporal, SerieSuavizada),
length(SerieTemporal), 2))
plot(Series, plot.type="single", xlab="Tiempo", ylab="Serie
Temporal Original y Suavizada", lty=1:2, col=1:2)
dev.off()
graphics.off()
}
#devuelvo la serie suavizada
SerieSuavizada
}
TendenciaRegresion <- function(SerieTemporal, Tiempos,
representacion=TRUE)
{
mediaSerieTemporal <-
mean(SerieTemporal)
varianzaSerieTemporal <-
var(SerieTemporal)
mediaTiempos <- mean(Tiempos)
varianzaTiempos <- var(Tiempos)
covarianza <- cov(SerieTemporal,
Tiempos)
pendiente <-
covarianza/varianzaTiempos
independiente <-
mediaSerieTemporal - pendiente*mediaTiempos
coeficientedeterminacion <-
(covarianza^2)/(varianzaSerieTemporal*varianzaTiempos)
informe <- c(mediaSerieTemporal,
varianzaSerieTemporal, mediaTiempos, varianzaTiempos, covarianza,
coeficientedeterminacion, independiente, pendiente)
names(informe) <- c("Media Serie
Temporal", "Varianza Serie Temporal", "Media Tiempos", "Varianza
Tiempos", "Covarianza", "Coeficiente Determinacion",
"Término Independiente", "Pendiente")
#represento los puntos y la recta
calculada
if (representacion==TRUE)
{
#postscript("SerieOriginalRecta.eps", horizontal=FALSE,
onefile=FALSE, height=8, width=6, pointsize=10)
jpeg("SerieOriginalRecta.jpg")
plot(Tiempos, SerieTemporal, type="o", las=2)
abline(independiente, pendiente, lty=2, col=2)
dev.off()
}
#salida
informe
}
Media <- function(vector)
{
longitud <- length(vector)
media <- 0
total <- 0
for (i in 1:longitud)
{
if
(is.na(vector[i]) == FALSE)
{
media <- vector[i] +
media
total <- total + 1
}
}
media <- media/total
media
}
EstacionalMediasMoviles <- function(SerieTemporal, p,
representacion=TRUE)
{
SerieSuavizada <-
TendenciaMediasMoviles(SerieTemporal, p, FALSE)
Serie1 <-
SerieTemporal/SerieSuavizada
Serie2 <- matrix(Serie1, ncol=p,
byrow=T)
M <- array(0, c(1, p))
for (i in 1:p)
{
M[i]
<- Media(Serie2[,i])
}
MA <- mean(M)
IVE <- array(0, c(1, p))
for (i in 1:p)
{
IVE[i]
<- M[i]/MA
}
dimensiones <- dim(Serie2)
SerieDesestacionalizada <-
matrix(0, nrow=dimensiones[1], ncol=dimensiones[2])
Serie3 <- matrix(SerieTemporal,
ncol=p, byrow=T)
for (i in 1:p)
{
SerieDesestacionalizada[,i] <- Serie3[,i]/IVE[i]
}
# represento serie original y
desestacionalizada
if (representacion==TRUE)
{
SerieDesestacionalizada0 <-
as.vector(t(SerieDesestacionalizada))
Series
<- ts(matrix(c(SerieTemporal, SerieDesestacionalizada0),
length(SerieTemporal), 2))
#postscript("SerieOriginalDesestacionalizada.eps",
horizontal=FALSE, onefile=FALSE, height=8, width=6, pointsize=10)
jpeg("SerieOriginalDesestacionalizada.jpg")
plot(Series, plot.type="single", lty=1:2, col=1:2)
dev.off()
}
# salida
salida <- list(IVE,
SerieDesestacionalizada)
names(salida) <-
c("Índices Variación Estacional", "Serie
Desestacionalizada")
salida
}
RegresionT <- function(Y, X)
{
mediaX <- mean(X)
varianzaX <- var(X)
mediaY <- mean(Y)
varianzaY <- var(Y)
covarianza <- cov(Y,X)
pendiente <- covarianza/varianzaX
independiente <- mediaY -
pendiente*mediaX
coeficientedeterminacion <-
(covarianza^2)/(varianzaX*varianzaY)
informe <- c(independiente,
pendiente, mediaX, varianzaX, mediaY, varianzaY, covarianza,
coeficientedeterminacion)
informe
}
EstacionalRegresion <- function(SerieTemporal, Tiempos, p,
representacion=TRUE)
{
Serie1 <- matrix(SerieTemporal,
ncol=p, byrow=T)
dimensiones <- length(Tiempos)
MediasAnuales <- array(0, c(1,
dimensiones))
for (i in 1:dimensiones)
{
MediasAnuales[i] <- mean(Serie1[i,])
}
b <-
RegresionT(as.vector(MediasAnuales), Tiempos)
M <- array(0, c(1, p))
MM <- array(0, c(1, p))
for (i in 1:p)
{
M[i]
<- mean(Serie1[,i])
resto
<- b[2]*(i-1)
MM[i]
<- M[i] - resto/p
}
MA <- mean(MM)
IVE <- array(0, c(1, p))
for (i in 1:p)
{
IVE[i]
<- MM[i]/MA
}
dimensiones <- dim(Serie1)
SerieDesestacionalizada <-
matrix(0, nrow=dimensiones[1], ncol=dimensiones[2])
for (i in 1:p)
{
SerieDesestacionalizada[,i] <- Serie1[,i]/IVE[i]
}
# represento serie original y
desestacionalizada
if (representacion==TRUE)
{
SerieDesestacionalizada0 <-
as.vector(t(SerieDesestacionalizada))
Series
<- ts(matrix(c(SerieTemporal, SerieDesestacionalizada0),
length(SerieTemporal), 2))
jpeg("SerieOriginalDesestacionalizada.jpg")
plot(Series, plot.type="single", lty=1:2, col=1:2)
dev.off()
}
# salida
salida <- list(IVE,
SerieDesestacionalizada)
names(salida) <-
c("Índices Variación Estacional", "Serie
Desestacionalizada")
salida
}
Para probar el código anterior basta
con escribir:
source("SeriesCronologicas.txt")
datos <- c(82, 70, 49, 76, 99, 111, 101, 133, 115, 121, 93, 123)
anos1 <- c(2001, 2002, 2003)
anos2 <- c(2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012)
TendenciaMediasMoviles(datos,4)
TendenciaRegresion(datos,anos2)
EstacionalMediasMoviles(datos, 4)
EstacionalRegresion(datos,anos1,4)
En este caso, para la introducción al cálculo de probabilidades se han creado funciones para aplicar el teorema de la probabilidad total, ProbabilidadTotal(), y el teorema de Bayes, TeoremaBayes(). También se han creado tres funciones que controlan los datos introducidos.
Depuracion1 <- function(datos)
{
parar <- 0
if (is.numeric(datos) == TRUE)
{
longitud
<- length(datos)
for (i in
1:longitud)
{
if ((datos[i]<0) ||
(datos[i]>1))
{
cat("Los datos introducidos no son probabilidades\n")
parar <- 1
}
}
}
else
{
cat("Los
datos introducidos no son numéricos\n")
parar
<- 1
}
parar
}
Depuracion2 <- function(datos)
{
parar <- 0
if (sum(datos) != 1)
{
cat("Las
probabilidades de los sucesos incompatibles y exhaustivos no suman
uno\n")
parar
<- 1
}
parar
}
Depuracion3 <- function(datos1, datos2)
{
parar <- 0
longitud1 <- length(datos1)
longitud2 <- length(datos2)
if (longitud1 != longitud2)
{
cat("Los
vectores de las probabilidades introducidas no tienen la misma
longitud\n")
parar
<- 1
}
parar
}
ProbabilidadTotal <- function(probabilidadessucesos,
probabilidadescondicionadassucesos)
{
# adviértase que la
posición i del segundo vector es la probabilidad
condicionada asociada a la posición i del primer vector
datos <- c(probabilidadessucesos,
probabilidadescondicionadassucesos)
if (Depuracion1(datos) == 0)
{
if
(Depuracion3(probabilidadessucesos, probabilidadescondicionadassucesos)
== 0)
{
if(Depuracion2(probabilidadessucesos) == 0)
{
probabilidadtotal <- 0
longitud <- length(probabilidadessucesos)
for (i in 1:longitud)
{
probabilidadtotal <-
probabilidadessucesos[i]*probabilidadescondicionadassucesos[i] +
probabilidadtotal
}
probabilidadtotal
}
else probabilidadtotal = -1
}
else
probabilidadtotal = -1
}
else probabilidadtotal = -1
}
TeoremaBayes <- function(probabilidadcondicionadanumerador,
probabilidadnumerador, probabilidaddenominador, probabilidadtotal =
FALSE, probabilidadessucesos, probabilidadescondicionadassucesos)
{
if (probabilidadtotal == TRUE)
{
probabilidaddenominador<-ProbabilidadTotal(probabilidadessucesos,
probabilidadescondicionadassucesos)
}
if (probabilidaddenominador != -1)
{
datos
<- c(probabilidadcondicionadanumerador, probabilidadnumerador,
probabilidaddenominador)
if
(Depuracion1(datos) == 0)
{
teoremabayes <-
(probabilidadcondicionadanumerador*probabilidadnumerador)/
probabilidaddenominador
}
if
(probabilidadtotal == TRUE)
{
salida <-
c(probabilidaddenominador, teoremabayes)
names(salida) <-
c("Probabilidad Total", "Teorema Bayes")
salida
}
else
teoremabayes
}
}
source("Probabilidad.txt")
sucesos <- c(0.037, 0.963)
condicionadas <- c(0.64,0.9)
ProbabilidadTotal(sucesos, condicionadas)
condicionada <- 0.64
numerador <- 0.037
denominador <- 0.89038
TeoremaBayes(condicionada, numerador, denominador)
TeoremaBayes(condicionada, numerador, , T, sucesos, condicionadas)
En el caso de variable aleatoria se han creado funciones para calcular y representar la distribución de probabilidad y función de distribución:
FuncionDistribucionDiscreta().
RepresentarDistribucionContinua().
RepresentacionDistribucionProbabilidadDiscreta().
Así como el cálculo de los momentos centrados y no centrados:
MomentosNoCentradosDiscretos() y MomentosCentradosDiscretos().
MomentosNoCentradosContinuos() y MomentosCentradosContinuos().
RepresentacionDistribucionProbabilidadDiscreta <-
function(valores, probabilidades)
{
win.graph()
jpeg("FuncionDeCuantia.jpg")
plot(valores, probabilidades,
xlab="Valores de la variable", ylab="Probabilidades", type="o")
dev.off()
graphics.off()
}
FuncionDistribucionDiscreta <- function(valores, probabilidades,
representacion=TRUE)
{
longitud <- length(valores)
cat("Si x < ", valores[1],", F(x)
= ", 0, "\n")
total = 0
for (i in 1:(longitud-1))
{
total =
probabilidades[i] + total
cat("Si
", valores[i], " <= x < ", valores[i+1],", F(x) = ",
total, "\n")
}
cat("Si ", valores[longitud]," <=
x, F(x) = ", 1, "\n")
if (representacion)
{
win.graph()
jpeg("FuncionDistribucionDiscreta.jpg")
ejey
<- seq(0,1,length.out=longitud+2)
ejex
<- c(valores[1]-1, valores, valores[longitud]+1)
plot(ejex, ejey, xlab="Valores de la variable",
ylab="Probabilidades", type="n")
lines(c(valores[1]-1,valores[1]),c(0,0), type="l")
total = 0
for (i in
1:(longitud-1))
{
total = probabilidades[i] +
total
lines(c(valores[i],valores[i+1]),c(total,total), type="l")
}
lines(c(valores[i+1],valores[i+1]+1),c(1,1), type="l")
dev.off()
graphics.off()
}
}
MomentosNoCentradosDiscretos <- function(valores,
probabilidades, orden)
{
potencias <- valores^(orden)
alfa <-
sum(potencias*probabilidades)
alfa
}
MomentosCentradosDiscretos <- function(valores, probabilidades,
orden)
{
media <-
MomentosNoCentradosDiscretos(valores, probabilidades, 1)
potencias <-
(valores-media)^(orden)
mu <-
sum(potencias*probabilidades)
mu
}
RepresentarDistribucionContinua <- function(f, min, max,
incremento = 0.05)
{
ejex <- seq(min, max, incremento)
longitud <- length(ejex)
ejey <- array(0, c(1,longitud))
for (i in 1:longitud)
{
ejey[i]
<- f(ejex[i])
}
win.graph()
jpeg("FuncionDeDensidad.jpg")
plot(ejex, ejey,
main="Representación función de densidad",
xlab="Valores de X", ylab="Función densidad", type="h")
dev.off()
graphics.off()
}
IntegrarFuncion <- function(f, min, max, incremento = 0.00001)
{
if (min == -Inf) {min <- -1}
if (max == Inf) {max <- 6}
base <- seq(min, max, incremento)
longitud <- length(base)
altura <- array(0, c(1,longitud))
integral <- array(0,
c(1,longitud))
for (i in 1:longitud)
{
altura[i]
<- f(base[i])
integral[i] <- incremento*altura[i]
}
suma <- sum(integral)
integral <- signif(suma, digits=3)
integral
}
MomentosNoCentradosContinuos <- function(f, min, max, orden,
incremento = 0.00001)
{
if (min == -Inf) {min <- -1}
if (max == Inf) {max <- 6}
base <- seq(min, max, incremento)
longitud <- length(base)
altura <- array(0, c(1,longitud))
integral <- array(0,
c(1,longitud))
for (i in 1:longitud)
{
altura[i]
<- (base[i])^(orden)*f(base[i])
integral[i] <- incremento*altura[i]
}
suma <- sum(integral)
integral <- signif(suma, digits=3)
integral
}
MomentosCentradosContinuos <- function(f, min, max, orden,
incremento = 0.00001)
{
if (min == -Inf) {min <- -1}
if (max == Inf) {max <- 6}
media <-
MomentosNoCentradosContinuos(f, min, max, 1)
base <- seq(min, max, incremento)
longitud <- length(base)
altura <- array(0, c(1,longitud))
integral <- array(0,
c(1,longitud))
for (i in 1:longitud)
{
altura[i]
<- (base[i]-media)^(orden)*f(base[i])
integral[i] <- incremento*altura[i]
}
suma <- sum(integral)
integral <- signif(suma, digits=3)
integral
}
source("VariableAleatoria.txt")
FuncionDensidad <- function(x)
valores <- c(0,1,2)
probabilidades <- c(0.25, 0.5, 0.25)
FuncionDistribucionDiscreta(valores, probabilidades)
MomentosNoCentradosDiscretos(valores, probabilidades, 1)
MomentosCentradosDiscretos(valores, probabilidades, 2)
MomentosNoCentradosDiscretos(valores, probabilidades, 3)
MomentosCentradosDiscretos(valores, probabilidades, 3)
RepresentacionDistribucionProbabilidadDiscreta(valores, probabilidades)
{
if ((0 <= x) & (x <= 1))
{
2*x
}
else 0
}
RepresentarDistribucionContinua(FuncionDensidad, -1, 2)
IntegrarFuncion(FuncionDensidad, -Inf, Inf)
MomentosNoCentradosContinuos(FuncionDensidad, -Inf, Inf, 1)
MomentosCentradosContinuos(FuncionDensidad, -Inf, Inf, 2)
MomentosNoCentradosContinuos(FuncionDensidad, -Inf, Inf, 3)
MomentosCentradosContinuos(FuncionDensidad, -Inf, Inf, 3)
Formato | Contenido | Enlace |
---|---|---|
Multimedia | Descargar e instalar R | .../softlibre/r1_es.html |
Texto | Función sobre Estadística Descriptiva | Descriptiva.txt |
Texto | Función sobre regresión por Mínimos Cuadrados | Regresion.txt |
Texto | Funciones sobre Números Índices | NumerosIndices.txt |
Texto | Funciones sobre análisis descriptivo de Series Cronológicas | SeriesCronologicas.txt |
Texto | Funciones sobre Probabilidad | Probabilidad.txt |
Texto | Funciones sobre Variable Aleatoria | VariableAleatoria.txt |
Multimedia | Video sobre Estadística Descriptiva | Estadística Descriptiva |
Multimedia | Video sobre regresión por Mínimos Cuadrados | Regresión |
Multimedia | Video sobre Números Índices | Números Índices |
Multimedia | Video sobre análisis descriptivo de Series Cronológicas | Series Cronológicas |
Multimedia | Video sobre Probabilidad | Probabilidad |
Multimedia | Video sobre Variable Aleatoria | Variable Aleatoria |