Este script permite modelar los precios de los alojamientos de Airbnb con base en sus caracteristicas.

Los datos se pueden obtener de la página de datos de Airbnb

Para este ejercicio, vamos a descargar los datos correspondientes a la Ciudad de Mexico, el archivo listings.csv.gz

Antes de empezar, cargamos los paquetes necesarios para el analisis:

library(readr)
library(stringr)
library(dbplyr)

Descomprimimos el archivo para obtener el archivo “listings.csv” y lo guardamos en nuestro archivo de trabajo, para importarlo como dataframe con el nombre “Airbnb”.

Airbnb <- read_csv("listings.csv")

Nuestra variable de interes es el precio o “price”. Sin embargo, podemos ver que está en un formato de caracter con comas.

head(Airbnb$price)
class(Airbnb$price)

Para poder analizar el precio, debemos eliminar los signos de pesos, las comas y guardarlo en formato numerico:

str_sub(Airbnb$price, start=2)
Airbnb$price=str_sub(Airbnb$price, start=2)
Airbnb$price=as.numeric(gsub(",","",Airbnb$price))

Podemos verificar el nuevo formato de la variable:

head(Airbnb$price)
class(Airbnb$price)
summary(Airbnb$price)

Podemos verificar que existen algunas observaciones donde el precio es cero. Los eliminamos usando la función filter y creamos una nueva variable con el logaritmo del precio:

Airbnb=Airbnb %>% filter (price>0)
Airbnb$logprice=log(Airbnb$price)

Ya estamos listos para correr un modelo lineal. Nuestra variable dependiente será el logaritmo del precio (logprice).

Las variables dependientes serán:

ocupantes (accommodates)

numero de cuartos (bedrooms)

numero de banios (bathrooms)

tipo de cuarto (room_type)

Politica de cancelacion (cancellation_policy)

calificacion promedio (review_scores_rating)

ubicacion (neighbourhood)

model1=lm(logprice~accommodates+bedrooms+bathrooms+review_scores_rating, data=Airbnb)
summary(model1)

model2=lm(logprice~accommodates+bedrooms+bathrooms+review_scores_rating+
            room_type+cancellation_policy, data=Airbnb)
summary(model2)

model3=lm(logprice~accommodates+bedrooms+bathrooms+review_scores_rating+
            room_type+bed_type+cancellation_policy+neighbourhood, data=Airbnb)
summary(model3)
LS0tCnRpdGxlOiAiTW9kZWxvIGxpbmVhbCBjb24gZGF0b3MgZGUgQWlyYm5iIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCkVzdGUgc2NyaXB0IHBlcm1pdGUgbW9kZWxhciBsb3MgcHJlY2lvcyBkZSBsb3MgYWxvamFtaWVudG9zIGRlIEFpcmJuYiBjb24gYmFzZSBlbiBzdXMgY2FyYWN0ZXJpc3RpY2FzLgoKTG9zIGRhdG9zIHNlIHB1ZWRlbiBvYnRlbmVyIGRlIGxhIFtww6FnaW5hIGRlIGRhdG9zIGRlIEFpcmJuYl0oaHR0cDovL2luc2lkZWFpcmJuYi5jb20vZ2V0LXRoZS1kYXRhLmh0bWwpCgoKUGFyYSBlc3RlIGVqZXJjaWNpbywgdmFtb3MgYSBkZXNjYXJnYXIgbG9zIGRhdG9zIGNvcnJlc3BvbmRpZW50ZXMgYSBsYSBDaXVkYWQgZGUgTWV4aWNvLCBlbCBhcmNoaXZvIFtsaXN0aW5ncy5jc3YuZ3pdKGh0dHA6Ly9kYXRhLmluc2lkZWFpcmJuYi5jb20vbWV4aWNvL2RmL21leGljby1jaXR5LzIwMjAtMDMtMTkvZGF0YS9saXN0aW5ncy5jc3YuZ3opCgpBbnRlcyBkZSBlbXBlemFyLCBjYXJnYW1vcyBsb3MgcGFxdWV0ZXMgbmVjZXNhcmlvcyBwYXJhIGVsIGFuYWxpc2lzOgpgYGB7cn0KbGlicmFyeShyZWFkcikKbGlicmFyeShzdHJpbmdyKQpsaWJyYXJ5KGRicGx5cikKYGBgCgoKRGVzY29tcHJpbWltb3MgZWwgYXJjaGl2byBwYXJhIG9idGVuZXIgZWwgYXJjaGl2byAibGlzdGluZ3MuY3N2IiB5IGxvIGd1YXJkYW1vcyBlbiBudWVzdHJvIGFyY2hpdm8gZGUgdHJhYmFqbywgcGFyYSBpbXBvcnRhcmxvIGNvbW8gZGF0YWZyYW1lIGNvbiBlbCBub21icmUgIkFpcmJuYiIuIApgYGB7cn0KQWlyYm5iIDwtIHJlYWRfY3N2KCJsaXN0aW5ncy5jc3YiKQpgYGAKCk51ZXN0cmEgdmFyaWFibGUgZGUgaW50ZXJlcyBlcyBlbCBwcmVjaW8gbyAicHJpY2UiLiBTaW4gZW1iYXJnbywgcG9kZW1vcyB2ZXIgcXVlIGVzdMOhIGVuIHVuIGZvcm1hdG8gZGUgY2FyYWN0ZXIgY29uIGNvbWFzLgpgYGB7cn0KaGVhZChBaXJibmIkcHJpY2UpCmNsYXNzKEFpcmJuYiRwcmljZSkKYGBgCgoKUGFyYSBwb2RlciBhbmFsaXphciBlbCBwcmVjaW8sIGRlYmVtb3MgZWxpbWluYXIgbG9zIHNpZ25vcyBkZSBwZXNvcywgbGFzIGNvbWFzIHkgZ3VhcmRhcmxvIGVuIGZvcm1hdG8gbnVtZXJpY286CmBgYHtyfQpzdHJfc3ViKEFpcmJuYiRwcmljZSwgc3RhcnQ9MikKQWlyYm5iJHByaWNlPXN0cl9zdWIoQWlyYm5iJHByaWNlLCBzdGFydD0yKQpBaXJibmIkcHJpY2U9YXMubnVtZXJpYyhnc3ViKCIsIiwiIixBaXJibmIkcHJpY2UpKQpgYGAKUG9kZW1vcyB2ZXJpZmljYXIgZWwgbnVldm8gZm9ybWF0byBkZSBsYSB2YXJpYWJsZToKCmBgYHtyfQpoZWFkKEFpcmJuYiRwcmljZSkKY2xhc3MoQWlyYm5iJHByaWNlKQpzdW1tYXJ5KEFpcmJuYiRwcmljZSkKYGBgClBvZGVtb3MgdmVyaWZpY2FyIHF1ZSBleGlzdGVuIGFsZ3VuYXMgb2JzZXJ2YWNpb25lcyBkb25kZSBlbCBwcmVjaW8gZXMgY2Vyby4gTG9zIGVsaW1pbmFtb3MgdXNhbmRvIGxhIGZ1bmNpw7NuIGZpbHRlciB5IGNyZWFtb3MgdW5hIG51ZXZhIHZhcmlhYmxlIGNvbiBlbCBsb2dhcml0bW8gZGVsIHByZWNpbzoKCmBgYHtyfQpBaXJibmI9QWlyYm5iICU+JSBmaWx0ZXIgKHByaWNlPjApCkFpcmJuYiRsb2dwcmljZT1sb2coQWlyYm5iJHByaWNlKQpgYGAKCllhIGVzdGFtb3MgbGlzdG9zIHBhcmEgY29ycmVyIHVuIG1vZGVsbyBsaW5lYWwuIE51ZXN0cmEgdmFyaWFibGUgZGVwZW5kaWVudGUgc2Vyw6EgZWwgbG9nYXJpdG1vIGRlbCBwcmVjaW8gKGxvZ3ByaWNlKS4KCkxhcyB2YXJpYWJsZXMgZGVwZW5kaWVudGVzIHNlcsOhbjoKCm9jdXBhbnRlcyAoYWNjb21tb2RhdGVzKQoKbnVtZXJvIGRlIGN1YXJ0b3MgKGJlZHJvb21zKQoKbnVtZXJvIGRlIGJhbmlvcyAoYmF0aHJvb21zKQoKdGlwbyBkZSBjdWFydG8gKHJvb21fdHlwZSkKClBvbGl0aWNhIGRlIGNhbmNlbGFjaW9uIChjYW5jZWxsYXRpb25fcG9saWN5KQoKY2FsaWZpY2FjaW9uIHByb21lZGlvIChyZXZpZXdfc2NvcmVzX3JhdGluZykKCnViaWNhY2lvbiAobmVpZ2hib3VyaG9vZCkKCmBgYHtyfQptb2RlbDE9bG0obG9ncHJpY2V+YWNjb21tb2RhdGVzK2JlZHJvb21zK2JhdGhyb29tcytyZXZpZXdfc2NvcmVzX3JhdGluZywgZGF0YT1BaXJibmIpCnN1bW1hcnkobW9kZWwxKQoKbW9kZWwyPWxtKGxvZ3ByaWNlfmFjY29tbW9kYXRlcytiZWRyb29tcytiYXRocm9vbXMrcmV2aWV3X3Njb3Jlc19yYXRpbmcrCiAgICAgICAgICAgIHJvb21fdHlwZStjYW5jZWxsYXRpb25fcG9saWN5LCBkYXRhPUFpcmJuYikKc3VtbWFyeShtb2RlbDIpCgptb2RlbDM9bG0obG9ncHJpY2V+YWNjb21tb2RhdGVzK2JlZHJvb21zK2JhdGhyb29tcytyZXZpZXdfc2NvcmVzX3JhdGluZysKICAgICAgICAgICAgcm9vbV90eXBlK2JlZF90eXBlK2NhbmNlbGxhdGlvbl9wb2xpY3krbmVpZ2hib3VyaG9vZCwgZGF0YT1BaXJibmIpCnN1bW1hcnkobW9kZWwzKQpgYGAK