** Objetivo ****

El objetivo es crear una simulacion de un dataset donde aplicaremos estadistica descriptiva (mean, standard deviation..etc).

En este caso, el dataset representara observaciones de las ventas totales por semana de dos productos en una cadena de tiendas.


** Creacion de la estructura ****

Empezaremos creando una estructura que en la que se basara el data set, una simulacion de las ventas para los dos productos en 20 tiendas durante 2 años con su precio y estatus de promocion correspondiente.

Hemos definido “K” como la constante. K.stores indica el total de tiendas y k.weeks el numero total de semanas en 2 años.

Por otro lado, creamos el data frame general y sus nombres de columnas (10) y filas (20*104= 2080) correspondientes.

k.stores <- 20
k.weeks <- 104

store.df <- data.frame(matrix(NA, ncol = 10, nrow = k.stores*k.weeks))
names(store.df) <- c("storeNum", "Year", "Week", "p1sales", "p2sales", "p1price", "p2price", "p1prom", "p2prom", "country")

Podemos conocer sus dimensiones facilmente con la funcion dim.

dim(store.df)
## [1] 2080   10

A continuacion crearemos dos vectores que representaran el numero de tiendas y paises para cada observacion.

Por un lado, asignaremos un numero de tienda o codigo a cada una entre el rango 101-120.

Por otro lado, cada tienda tendra un pais al que corresponde, donde marcamos un repeticion del numero de veces que queremos que aparezca.

store.num <- 101:(100+k.stores)
store.cty <- c(rep("US", 3), rep("DE", 5), rep("GB", 3), rep("BR", 2), rep("JP", 4), rep("AU", 1), rep("CN", 2))
length(store.cty)
## [1] 20

A continuacion, reemplazaremos los vectores que hemos creado anteriormente en nuesto data set, utilizando la funcion rep() y marcando en total de longitud.Despues con la funcion rm(), eliminamos los vectores antes creados.

store.df$storeNum <- rep(store.num, each = k.weeks)
store.df$country <- rep(store.cty, each = k.weeks)
rm(store.num, store.cty)

En este paso, reemplazamos los datos en base a las semanas; en este caso 52 por año, que se repiten 2 veces por el número de tiendas.

Y en base a los años (2 años), que queremos que se repitan 20 veces (número de tiendas), 52 semanas cada uno durante 2 años.

store.df$Week <- rep(1:52, times = k.stores*2)
store.df$Year <- rep(rep(1:2, each = k.weeks/2), times = k.stores)

str(store.df)
## 'data.frame':    2080 obs. of  10 variables:
##  $ storeNum: int  101 101 101 101 101 101 101 101 101 101 ...
##  $ Year    : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Week    : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ p1sales : logi  NA NA NA NA NA NA ...
##  $ p2sales : logi  NA NA NA NA NA NA ...
##  $ p1price : logi  NA NA NA NA NA NA ...
##  $ p2price : logi  NA NA NA NA NA NA ...
##  $ p1prom  : logi  NA NA NA NA NA NA ...
##  $ p2prom  : logi  NA NA NA NA NA NA ...
##  $ country : chr  "US" "US" "US" "US" ...

En este caso, funciones como each() o times() nos sirven para repetir recursivamente elementos vectoriales N veces cada uno, como podeos ver en este ejemplo claramente las diferencias.

Each() define el numero de veces que queremos que aparezcan los datos y times() el numero de veces que queremos que se repitan.

v <- c('a', 'b')
n <- 3
rep(v, each=3)
## [1] "a" "a" "a" "b" "b" "b"
rep(v, times=3)
## [1] "a" "b" "a" "b" "a" "b"

Revisamos la estructura actual del dataset con str().Podemos observar que las variables de country y storeNum estan definidas como valores numericos cuando verdaderamente se pueden categorizar como labels, lo que seria un factor.

str(store.df)
## 'data.frame':    2080 obs. of  10 variables:
##  $ storeNum: int  101 101 101 101 101 101 101 101 101 101 ...
##  $ Year    : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Week    : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ p1sales : logi  NA NA NA NA NA NA ...
##  $ p2sales : logi  NA NA NA NA NA NA ...
##  $ p1price : logi  NA NA NA NA NA NA ...
##  $ p2price : logi  NA NA NA NA NA NA ...
##  $ p1prom  : logi  NA NA NA NA NA NA ...
##  $ p2prom  : logi  NA NA NA NA NA NA ...
##  $ country : chr  "US" "US" "US" "US" ...
store.df$storeNum <- factor(store.df$storeNum)
store.df$country <- factor(store.df$country)

str(store.df)
## 'data.frame':    2080 obs. of  10 variables:
##  $ storeNum: Factor w/ 20 levels "101","102","103",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ Year    : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Week    : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ p1sales : logi  NA NA NA NA NA NA ...
##  $ p2sales : logi  NA NA NA NA NA NA ...
##  $ p1price : logi  NA NA NA NA NA NA ...
##  $ p2price : logi  NA NA NA NA NA NA ...
##  $ p1prom  : logi  NA NA NA NA NA NA ...
##  $ p2prom  : logi  NA NA NA NA NA NA ...
##  $ country : Factor w/ 7 levels "AU","BR","CN",..: 7 7 7 7 7 7 7 7 7 7 ...

Para revisar el data set podemos emplear funciones como head(x=DATA, n=NUMROWS) o tail. Por ejemplo.

head(store.df)
##   storeNum Year Week p1sales p2sales p1price p2price p1prom p2prom country
## 1      101    1    1      NA      NA      NA      NA     NA     NA      US
## 2      101    1    2      NA      NA      NA      NA     NA     NA      US
## 3      101    1    3      NA      NA      NA      NA     NA     NA      US
## 4      101    1    4      NA      NA      NA      NA     NA     NA      US
## 5      101    1    5      NA      NA      NA      NA     NA     NA      US
## 6      101    1    6      NA      NA      NA      NA     NA     NA      US
head(store.df, 120)
##     storeNum Year Week p1sales p2sales p1price p2price p1prom p2prom
## 1        101    1    1      NA      NA      NA      NA     NA     NA
## 2        101    1    2      NA      NA      NA      NA     NA     NA
## 3        101    1    3      NA      NA      NA      NA     NA     NA
## 4        101    1    4      NA      NA      NA      NA     NA     NA
## 5        101    1    5      NA      NA      NA      NA     NA     NA
## 6        101    1    6      NA      NA      NA      NA     NA     NA
## 7        101    1    7      NA      NA      NA      NA     NA     NA
## 8        101    1    8      NA      NA      NA      NA     NA     NA
## 9        101    1    9      NA      NA      NA      NA     NA     NA
## 10       101    1   10      NA      NA      NA      NA     NA     NA
## 11       101    1   11      NA      NA      NA      NA     NA     NA
## 12       101    1   12      NA      NA      NA      NA     NA     NA
## 13       101    1   13      NA      NA      NA      NA     NA     NA
## 14       101    1   14      NA      NA      NA      NA     NA     NA
## 15       101    1   15      NA      NA      NA      NA     NA     NA
## 16       101    1   16      NA      NA      NA      NA     NA     NA
## 17       101    1   17      NA      NA      NA      NA     NA     NA
## 18       101    1   18      NA      NA      NA      NA     NA     NA
## 19       101    1   19      NA      NA      NA      NA     NA     NA
## 20       101    1   20      NA      NA      NA      NA     NA     NA
## 21       101    1   21      NA      NA      NA      NA     NA     NA
## 22       101    1   22      NA      NA      NA      NA     NA     NA
## 23       101    1   23      NA      NA      NA      NA     NA     NA
## 24       101    1   24      NA      NA      NA      NA     NA     NA
## 25       101    1   25      NA      NA      NA      NA     NA     NA
## 26       101    1   26      NA      NA      NA      NA     NA     NA
## 27       101    1   27      NA      NA      NA      NA     NA     NA
## 28       101    1   28      NA      NA      NA      NA     NA     NA
## 29       101    1   29      NA      NA      NA      NA     NA     NA
## 30       101    1   30      NA      NA      NA      NA     NA     NA
## 31       101    1   31      NA      NA      NA      NA     NA     NA
## 32       101    1   32      NA      NA      NA      NA     NA     NA
## 33       101    1   33      NA      NA      NA      NA     NA     NA
## 34       101    1   34      NA      NA      NA      NA     NA     NA
## 35       101    1   35      NA      NA      NA      NA     NA     NA
## 36       101    1   36      NA      NA      NA      NA     NA     NA
## 37       101    1   37      NA      NA      NA      NA     NA     NA
## 38       101    1   38      NA      NA      NA      NA     NA     NA
## 39       101    1   39      NA      NA      NA      NA     NA     NA
## 40       101    1   40      NA      NA      NA      NA     NA     NA
## 41       101    1   41      NA      NA      NA      NA     NA     NA
## 42       101    1   42      NA      NA      NA      NA     NA     NA
## 43       101    1   43      NA      NA      NA      NA     NA     NA
## 44       101    1   44      NA      NA      NA      NA     NA     NA
## 45       101    1   45      NA      NA      NA      NA     NA     NA
## 46       101    1   46      NA      NA      NA      NA     NA     NA
## 47       101    1   47      NA      NA      NA      NA     NA     NA
## 48       101    1   48      NA      NA      NA      NA     NA     NA
## 49       101    1   49      NA      NA      NA      NA     NA     NA
## 50       101    1   50      NA      NA      NA      NA     NA     NA
## 51       101    1   51      NA      NA      NA      NA     NA     NA
## 52       101    1   52      NA      NA      NA      NA     NA     NA
## 53       101    2    1      NA      NA      NA      NA     NA     NA
## 54       101    2    2      NA      NA      NA      NA     NA     NA
## 55       101    2    3      NA      NA      NA      NA     NA     NA
## 56       101    2    4      NA      NA      NA      NA     NA     NA
## 57       101    2    5      NA      NA      NA      NA     NA     NA
## 58       101    2    6      NA      NA      NA      NA     NA     NA
## 59       101    2    7      NA      NA      NA      NA     NA     NA
## 60       101    2    8      NA      NA      NA      NA     NA     NA
## 61       101    2    9      NA      NA      NA      NA     NA     NA
## 62       101    2   10      NA      NA      NA      NA     NA     NA
## 63       101    2   11      NA      NA      NA      NA     NA     NA
## 64       101    2   12      NA      NA      NA      NA     NA     NA
## 65       101    2   13      NA      NA      NA      NA     NA     NA
## 66       101    2   14      NA      NA      NA      NA     NA     NA
## 67       101    2   15      NA      NA      NA      NA     NA     NA
## 68       101    2   16      NA      NA      NA      NA     NA     NA
## 69       101    2   17      NA      NA      NA      NA     NA     NA
## 70       101    2   18      NA      NA      NA      NA     NA     NA
## 71       101    2   19      NA      NA      NA      NA     NA     NA
## 72       101    2   20      NA      NA      NA      NA     NA     NA
## 73       101    2   21      NA      NA      NA      NA     NA     NA
## 74       101    2   22      NA      NA      NA      NA     NA     NA
## 75       101    2   23      NA      NA      NA      NA     NA     NA
## 76       101    2   24      NA      NA      NA      NA     NA     NA
## 77       101    2   25      NA      NA      NA      NA     NA     NA
## 78       101    2   26      NA      NA      NA      NA     NA     NA
## 79       101    2   27      NA      NA      NA      NA     NA     NA
## 80       101    2   28      NA      NA      NA      NA     NA     NA
## 81       101    2   29      NA      NA      NA      NA     NA     NA
## 82       101    2   30      NA      NA      NA      NA     NA     NA
## 83       101    2   31      NA      NA      NA      NA     NA     NA
## 84       101    2   32      NA      NA      NA      NA     NA     NA
## 85       101    2   33      NA      NA      NA      NA     NA     NA
## 86       101    2   34      NA      NA      NA      NA     NA     NA
## 87       101    2   35      NA      NA      NA      NA     NA     NA
## 88       101    2   36      NA      NA      NA      NA     NA     NA
## 89       101    2   37      NA      NA      NA      NA     NA     NA
## 90       101    2   38      NA      NA      NA      NA     NA     NA
## 91       101    2   39      NA      NA      NA      NA     NA     NA
## 92       101    2   40      NA      NA      NA      NA     NA     NA
## 93       101    2   41      NA      NA      NA      NA     NA     NA
## 94       101    2   42      NA      NA      NA      NA     NA     NA
## 95       101    2   43      NA      NA      NA      NA     NA     NA
## 96       101    2   44      NA      NA      NA      NA     NA     NA
## 97       101    2   45      NA      NA      NA      NA     NA     NA
## 98       101    2   46      NA      NA      NA      NA     NA     NA
## 99       101    2   47      NA      NA      NA      NA     NA     NA
## 100      101    2   48      NA      NA      NA      NA     NA     NA
## 101      101    2   49      NA      NA      NA      NA     NA     NA
## 102      101    2   50      NA      NA      NA      NA     NA     NA
## 103      101    2   51      NA      NA      NA      NA     NA     NA
## 104      101    2   52      NA      NA      NA      NA     NA     NA
## 105      102    1    1      NA      NA      NA      NA     NA     NA
## 106      102    1    2      NA      NA      NA      NA     NA     NA
## 107      102    1    3      NA      NA      NA      NA     NA     NA
## 108      102    1    4      NA      NA      NA      NA     NA     NA
## 109      102    1    5      NA      NA      NA      NA     NA     NA
## 110      102    1    6      NA      NA      NA      NA     NA     NA
## 111      102    1    7      NA      NA      NA      NA     NA     NA
## 112      102    1    8      NA      NA      NA      NA     NA     NA
## 113      102    1    9      NA      NA      NA      NA     NA     NA
## 114      102    1   10      NA      NA      NA      NA     NA     NA
## 115      102    1   11      NA      NA      NA      NA     NA     NA
## 116      102    1   12      NA      NA      NA      NA     NA     NA
## 117      102    1   13      NA      NA      NA      NA     NA     NA
## 118      102    1   14      NA      NA      NA      NA     NA     NA
## 119      102    1   15      NA      NA      NA      NA     NA     NA
## 120      102    1   16      NA      NA      NA      NA     NA     NA
##     country
## 1        US
## 2        US
## 3        US
## 4        US
## 5        US
## 6        US
## 7        US
## 8        US
## 9        US
## 10       US
## 11       US
## 12       US
## 13       US
## 14       US
## 15       US
## 16       US
## 17       US
## 18       US
## 19       US
## 20       US
## 21       US
## 22       US
## 23       US
## 24       US
## 25       US
## 26       US
## 27       US
## 28       US
## 29       US
## 30       US
## 31       US
## 32       US
## 33       US
## 34       US
## 35       US
## 36       US
## 37       US
## 38       US
## 39       US
## 40       US
## 41       US
## 42       US
## 43       US
## 44       US
## 45       US
## 46       US
## 47       US
## 48       US
## 49       US
## 50       US
## 51       US
## 52       US
## 53       US
## 54       US
## 55       US
## 56       US
## 57       US
## 58       US
## 59       US
## 60       US
## 61       US
## 62       US
## 63       US
## 64       US
## 65       US
## 66       US
## 67       US
## 68       US
## 69       US
## 70       US
## 71       US
## 72       US
## 73       US
## 74       US
## 75       US
## 76       US
## 77       US
## 78       US
## 79       US
## 80       US
## 81       US
## 82       US
## 83       US
## 84       US
## 85       US
## 86       US
## 87       US
## 88       US
## 89       US
## 90       US
## 91       US
## 92       US
## 93       US
## 94       US
## 95       US
## 96       US
## 97       US
## 98       US
## 99       US
## 100      US
## 101      US
## 102      US
## 103      US
## 104      US
## 105      US
## 106      US
## 107      US
## 108      US
## 109      US
## 110      US
## 111      US
## 112      US
## 113      US
## 114      US
## 115      US
## 116      US
## 117      US
## 118      US
## 119      US
## 120      US
tail(store.df, 120)
##      storeNum Year Week p1sales p2sales p1price p2price p1prom p2prom
## 1961      119    2   37      NA      NA      NA      NA     NA     NA
## 1962      119    2   38      NA      NA      NA      NA     NA     NA
## 1963      119    2   39      NA      NA      NA      NA     NA     NA
## 1964      119    2   40      NA      NA      NA      NA     NA     NA
## 1965      119    2   41      NA      NA      NA      NA     NA     NA
## 1966      119    2   42      NA      NA      NA      NA     NA     NA
## 1967      119    2   43      NA      NA      NA      NA     NA     NA
## 1968      119    2   44      NA      NA      NA      NA     NA     NA
## 1969      119    2   45      NA      NA      NA      NA     NA     NA
## 1970      119    2   46      NA      NA      NA      NA     NA     NA
## 1971      119    2   47      NA      NA      NA      NA     NA     NA
## 1972      119    2   48      NA      NA      NA      NA     NA     NA
## 1973      119    2   49      NA      NA      NA      NA     NA     NA
## 1974      119    2   50      NA      NA      NA      NA     NA     NA
## 1975      119    2   51      NA      NA      NA      NA     NA     NA
## 1976      119    2   52      NA      NA      NA      NA     NA     NA
## 1977      120    1    1      NA      NA      NA      NA     NA     NA
## 1978      120    1    2      NA      NA      NA      NA     NA     NA
## 1979      120    1    3      NA      NA      NA      NA     NA     NA
## 1980      120    1    4      NA      NA      NA      NA     NA     NA
## 1981      120    1    5      NA      NA      NA      NA     NA     NA
## 1982      120    1    6      NA      NA      NA      NA     NA     NA
## 1983      120    1    7      NA      NA      NA      NA     NA     NA
## 1984      120    1    8      NA      NA      NA      NA     NA     NA
## 1985      120    1    9      NA      NA      NA      NA     NA     NA
## 1986      120    1   10      NA      NA      NA      NA     NA     NA
## 1987      120    1   11      NA      NA      NA      NA     NA     NA
## 1988      120    1   12      NA      NA      NA      NA     NA     NA
## 1989      120    1   13      NA      NA      NA      NA     NA     NA
## 1990      120    1   14      NA      NA      NA      NA     NA     NA
## 1991      120    1   15      NA      NA      NA      NA     NA     NA
## 1992      120    1   16      NA      NA      NA      NA     NA     NA
## 1993      120    1   17      NA      NA      NA      NA     NA     NA
## 1994      120    1   18      NA      NA      NA      NA     NA     NA
## 1995      120    1   19      NA      NA      NA      NA     NA     NA
## 1996      120    1   20      NA      NA      NA      NA     NA     NA
## 1997      120    1   21      NA      NA      NA      NA     NA     NA
## 1998      120    1   22      NA      NA      NA      NA     NA     NA
## 1999      120    1   23      NA      NA      NA      NA     NA     NA
## 2000      120    1   24      NA      NA      NA      NA     NA     NA
## 2001      120    1   25      NA      NA      NA      NA     NA     NA
## 2002      120    1   26      NA      NA      NA      NA     NA     NA
## 2003      120    1   27      NA      NA      NA      NA     NA     NA
## 2004      120    1   28      NA      NA      NA      NA     NA     NA
## 2005      120    1   29      NA      NA      NA      NA     NA     NA
## 2006      120    1   30      NA      NA      NA      NA     NA     NA
## 2007      120    1   31      NA      NA      NA      NA     NA     NA
## 2008      120    1   32      NA      NA      NA      NA     NA     NA
## 2009      120    1   33      NA      NA      NA      NA     NA     NA
## 2010      120    1   34      NA      NA      NA      NA     NA     NA
## 2011      120    1   35      NA      NA      NA      NA     NA     NA
## 2012      120    1   36      NA      NA      NA      NA     NA     NA
## 2013      120    1   37      NA      NA      NA      NA     NA     NA
## 2014      120    1   38      NA      NA      NA      NA     NA     NA
## 2015      120    1   39      NA      NA      NA      NA     NA     NA
## 2016      120    1   40      NA      NA      NA      NA     NA     NA
## 2017      120    1   41      NA      NA      NA      NA     NA     NA
## 2018      120    1   42      NA      NA      NA      NA     NA     NA
## 2019      120    1   43      NA      NA      NA      NA     NA     NA
## 2020      120    1   44      NA      NA      NA      NA     NA     NA
## 2021      120    1   45      NA      NA      NA      NA     NA     NA
## 2022      120    1   46      NA      NA      NA      NA     NA     NA
## 2023      120    1   47      NA      NA      NA      NA     NA     NA
## 2024      120    1   48      NA      NA      NA      NA     NA     NA
## 2025      120    1   49      NA      NA      NA      NA     NA     NA
## 2026      120    1   50      NA      NA      NA      NA     NA     NA
## 2027      120    1   51      NA      NA      NA      NA     NA     NA
## 2028      120    1   52      NA      NA      NA      NA     NA     NA
## 2029      120    2    1      NA      NA      NA      NA     NA     NA
## 2030      120    2    2      NA      NA      NA      NA     NA     NA
## 2031      120    2    3      NA      NA      NA      NA     NA     NA
## 2032      120    2    4      NA      NA      NA      NA     NA     NA
## 2033      120    2    5      NA      NA      NA      NA     NA     NA
## 2034      120    2    6      NA      NA      NA      NA     NA     NA
## 2035      120    2    7      NA      NA      NA      NA     NA     NA
## 2036      120    2    8      NA      NA      NA      NA     NA     NA
## 2037      120    2    9      NA      NA      NA      NA     NA     NA
## 2038      120    2   10      NA      NA      NA      NA     NA     NA
## 2039      120    2   11      NA      NA      NA      NA     NA     NA
## 2040      120    2   12      NA      NA      NA      NA     NA     NA
## 2041      120    2   13      NA      NA      NA      NA     NA     NA
## 2042      120    2   14      NA      NA      NA      NA     NA     NA
## 2043      120    2   15      NA      NA      NA      NA     NA     NA
## 2044      120    2   16      NA      NA      NA      NA     NA     NA
## 2045      120    2   17      NA      NA      NA      NA     NA     NA
## 2046      120    2   18      NA      NA      NA      NA     NA     NA
## 2047      120    2   19      NA      NA      NA      NA     NA     NA
## 2048      120    2   20      NA      NA      NA      NA     NA     NA
## 2049      120    2   21      NA      NA      NA      NA     NA     NA
## 2050      120    2   22      NA      NA      NA      NA     NA     NA
## 2051      120    2   23      NA      NA      NA      NA     NA     NA
## 2052      120    2   24      NA      NA      NA      NA     NA     NA
## 2053      120    2   25      NA      NA      NA      NA     NA     NA
## 2054      120    2   26      NA      NA      NA      NA     NA     NA
## 2055      120    2   27      NA      NA      NA      NA     NA     NA
## 2056      120    2   28      NA      NA      NA      NA     NA     NA
## 2057      120    2   29      NA      NA      NA      NA     NA     NA
## 2058      120    2   30      NA      NA      NA      NA     NA     NA
## 2059      120    2   31      NA      NA      NA      NA     NA     NA
## 2060      120    2   32      NA      NA      NA      NA     NA     NA
## 2061      120    2   33      NA      NA      NA      NA     NA     NA
## 2062      120    2   34      NA      NA      NA      NA     NA     NA
## 2063      120    2   35      NA      NA      NA      NA     NA     NA
## 2064      120    2   36      NA      NA      NA      NA     NA     NA
## 2065      120    2   37      NA      NA      NA      NA     NA     NA
## 2066      120    2   38      NA      NA      NA      NA     NA     NA
## 2067      120    2   39      NA      NA      NA      NA     NA     NA
## 2068      120    2   40      NA      NA      NA      NA     NA     NA
## 2069      120    2   41      NA      NA      NA      NA     NA     NA
## 2070      120    2   42      NA      NA      NA      NA     NA     NA
## 2071      120    2   43      NA      NA      NA      NA     NA     NA
## 2072      120    2   44      NA      NA      NA      NA     NA     NA
## 2073      120    2   45      NA      NA      NA      NA     NA     NA
## 2074      120    2   46      NA      NA      NA      NA     NA     NA
## 2075      120    2   47      NA      NA      NA      NA     NA     NA
## 2076      120    2   48      NA      NA      NA      NA     NA     NA
## 2077      120    2   49      NA      NA      NA      NA     NA     NA
## 2078      120    2   50      NA      NA      NA      NA     NA     NA
## 2079      120    2   51      NA      NA      NA      NA     NA     NA
## 2080      120    2   52      NA      NA      NA      NA     NA     NA
##      country
## 1961      CN
## 1962      CN
## 1963      CN
## 1964      CN
## 1965      CN
## 1966      CN
## 1967      CN
## 1968      CN
## 1969      CN
## 1970      CN
## 1971      CN
## 1972      CN
## 1973      CN
## 1974      CN
## 1975      CN
## 1976      CN
## 1977      CN
## 1978      CN
## 1979      CN
## 1980      CN
## 1981      CN
## 1982      CN
## 1983      CN
## 1984      CN
## 1985      CN
## 1986      CN
## 1987      CN
## 1988      CN
## 1989      CN
## 1990      CN
## 1991      CN
## 1992      CN
## 1993      CN
## 1994      CN
## 1995      CN
## 1996      CN
## 1997      CN
## 1998      CN
## 1999      CN
## 2000      CN
## 2001      CN
## 2002      CN
## 2003      CN
## 2004      CN
## 2005      CN
## 2006      CN
## 2007      CN
## 2008      CN
## 2009      CN
## 2010      CN
## 2011      CN
## 2012      CN
## 2013      CN
## 2014      CN
## 2015      CN
## 2016      CN
## 2017      CN
## 2018      CN
## 2019      CN
## 2020      CN
## 2021      CN
## 2022      CN
## 2023      CN
## 2024      CN
## 2025      CN
## 2026      CN
## 2027      CN
## 2028      CN
## 2029      CN
## 2030      CN
## 2031      CN
## 2032      CN
## 2033      CN
## 2034      CN
## 2035      CN
## 2036      CN
## 2037      CN
## 2038      CN
## 2039      CN
## 2040      CN
## 2041      CN
## 2042      CN
## 2043      CN
## 2044      CN
## 2045      CN
## 2046      CN
## 2047      CN
## 2048      CN
## 2049      CN
## 2050      CN
## 2051      CN
## 2052      CN
## 2053      CN
## 2054      CN
## 2055      CN
## 2056      CN
## 2057      CN
## 2058      CN
## 2059      CN
## 2060      CN
## 2061      CN
## 2062      CN
## 2063      CN
## 2064      CN
## 2065      CN
## 2066      CN
## 2067      CN
## 2068      CN
## 2069      CN
## 2070      CN
## 2071      CN
## 2072      CN
## 2073      CN
## 2074      CN
## 2075      CN
## 2076      CN
## 2077      CN
## 2078      CN
## 2079      CN
## 2080      CN

Hasta este punto hemos completado todas las variables, pero tenemos pendientes definir las ventas, precios y promociones realizadas para 2 productos.Antes de empezar a generar informacion aleatoria es importante definir el numero de generacion aleatoria para hacer el proceso replicable.

Si no definimos un numero especifico para este “seed”, R seleccionara una cifra por nosotros que cambia de manera aleatoria en cada proceso.

set.seed(98250)

A partir de este punto podemos definir la informacion aleatoria con la que trabajaremos. En este apartado definiremos los productos promocionados.

En cada linea del dataset, que basicamente es, una semana de un año de una tienda, definimos el estatus de si el producto ha sido promocionado (valor de 1) extrayendo de la distribución binomial que cuenta el número de cabezas en una colección de lanzamientos de monedas.

Detallando el proceso, usaremos la funcion rbinom(n, size, p) definido como random binomial.

Para cada linea de nuestro data set, definido anteriormente como n=nrow(store.df), con el objetivo de definir su promocionabilidad (0 o 1) nos basamos en la idea de un lanzamiento de moneda, donde la “cara” es 1 y define que el producto ha sido promocionado size=1.

Le añadimos una probabilidad de p=0.1 para el producto 1 y p=0.15 para el producto 2.

store.df$p1prom <- rbinom(n=nrow(store.df), size = 1, p = 0.1)
store.df$p2prom <- rbinom(n=nrow(store.df), size = 1, p = 0.1)
head(store.df)
##   storeNum Year Week p1sales p2sales p1price p2price p1prom p2prom country
## 1      101    1    1      NA      NA      NA      NA      0      0      US
## 2      101    1    2      NA      NA      NA      NA      0      0      US
## 3      101    1    3      NA      NA      NA      NA      1      0      US
## 4      101    1    4      NA      NA      NA      NA      0      0      US
## 5      101    1    5      NA      NA      NA      NA      0      1      US
## 6      101    1    6      NA      NA      NA      NA      0      0      US

Una vez definida el estatus de promocion, definiremos los precios de cada producto.

Suponemos que cada producto se vende a uno de los cinco tipos de precio que van desde 2.19 hasta 3.19 dolares.

Para ello, egeneramos de manera aleatoria un precio para cada semana definiendo un ector con 5 precios diferentes y usando la funcion **sample(x, size, replace).Estos datos queremos que aparezcan en todas nuestras lineas, por lo que marcamos size=nrow(store.df) y los cinco precios se muestrean muchas veces, por lo que generamos el sample reemplazando los datos.

store.df$p1price <- sample(x = c(2.19, 2.29, 2.49, 2.79, 2.99),
                           size = nrow(store.df),
                           replace = TRUE)

store.df$p2price <- sample(x = c(2.19, 2.29, 2.49, 2.79, 2.99),
                           size = nrow(store.df),
                           replace = TRUE)

El ultimo paso es simular el numero de ventas para cada semana.

Calculamos las ventas en función de los precios relativos de los dos productos junto con el estado promocional de cada uno.

Las ventas de artículos están en conteos de unidades, por lo que usamos las distribuciones de Poisson para generar datos.**rpois(n, lambda), donde n es el numero de sorteos y lambda es la media de valor de las unidades por semana.

Para ello, definimos un valor para cada linea (nrow(store.df)) y la media de ventas (lambda) del producto 1 que sea superior del produto 2 (sin promocion).

tmp.sales1 <- rpois(nrow(store.df), lambda = 120)
tmp.sales2 <- rpois(nrow(store.df), lambda = 100)

Ahora escalamos esos conteos hacia arriba o hacia abajo de acuerdo con los precios relativos.

Los efectos de los precios a menudo siguen una función logarítmica en lugar de funciones lineales con log(price).

tmp.sales1 <- tmp.sales1 * log(store.df$p2price) / log(store.df$p1price)
tmp.sales2 <- tmp.sales2 * log(store.df$p1price) / log(store.df$p2price)

Por ultimo, asumimos que las ventas aumentan entre un 30-40% cuando el producto esta promocionado en tienda.

Simplemente, multiplicamos el vector de status promocional (0,1) por 0.3 y 0.4 respectivamente y multiplicamos por las ventas.

Usamos la funcion floor(), para eliminar valores fraccionarios y garantizar recuentos de enteros para ventas de unidades semanales.

store.df$p1sales <- floor(tmp.sales1 * (1 + store.df$p1prom * 0.3))
store.df$p2sales <- floor(tmp.sales1 * (1 + store.df$p2prom * 0.4))

Si queremos podemos checkear de manera aleatoria algunas filas de nuestro dataset con la funcion some().


** Conclusion ****

Gracias a R, hemos creado una simulacion de datos con 20.800 valores (2080 filas y 10 columnas) utilizando un total de 22 comandos.