Importar datos

df<- read.csv("HousePriceData.csv")

Limpiar bases de datos

# ¿Cuántos NA tengo en la base de datos?
sum(is.na(df))
## [1] 7
# ¿Cuantos NA tengo por variable?
sapply(df, function(x) sum(is.na(x)))
## ï..Observation      Dist_Taxi    Dist_Market  Dist_Hospital         Carpet 
##              0              0              0              0              7 
##        Builtup        Parking  City_Category       Rainfall    House_Price 
##              0              0              0              0              0
# Eliminar NA
df<- na.omit(df)

#Eliminar el registro del precio atípico
df<- df[df$House_Price<12000000,]

# eliminar el registro de lluvia atípico 
df<- df[df$Rainfall>=0,]
# Instala y carga la biblioteca Shiny
library(shiny)


# Define la interfaz de la aplicación Shiny
ui <- fluidPage(
  titlePanel("Valuación de Casas"),
  sidebarLayout(
    sidebarPanel(
      sliderInput("Dist_Taxi", "Distancia al Taxi:", min = 0, max = 20000, value = 8278),
      sliderInput("Dist_Market", "Distancia al Mercado:", min = 0, max = 20000, value = 16251),
      sliderInput("Dist_Hospital", "Distancia al Hospital:", min = 0, max = 20000, value = 13857),
      sliderInput("Carpet", "Área de la Alfombra:", min = 0, max = 5000, value = 1455),
      selectInput("Parking", "Tipo de Estacionamiento:",
                  choices = unique(df$Parking)),
      selectInput("City_Category", "Categoría de la Ciudad:",
                  choices = unique(df$City_Category)),
      sliderInput("Rainfall", "Lluvia:", min = 0, max = 500, value = 390),
      sliderInput("Builtup", "Área Construida:", min = 0, max = 10000, value = 1764),
      actionButton("submitBtn", "Obtener Precio"),
      hr()
    ),
    mainPanel(
      verbatimTextOutput("predictionText")
    )
  )
)

# Define la función de servidor para la aplicación Shiny
server <- function(input, output) {
  model <- NULL
  
  observeEvent(input$submitBtn, {
    datos <- data.frame(
      Dist_Taxi = input$Dist_Taxi,
      Dist_Market = input$Dist_Market,
      Dist_Hospital = input$Dist_Hospital,
      Carpet = input$Carpet,
      Parking = input$Parking,
      City_Category = input$City_Category,
      Rainfall = input$Rainfall,
      Builtup = input$Builtup
    )
    
    # Generar el modelo de regresión lineal con los datos actuales
    model <- lm(House_Price ~ Dist_Taxi + Dist_Market + Dist_Hospital +
                Carpet + Parking + City_Category + Rainfall + Builtup, data = df)
    
    prediction <- predict(model, datos)
    output$predictionText <- renderText({
      paste("Precio de la Casa Estimado:", round(prediction, 2))
    })
  })
}

# Crea la aplicación Shiny
shinyApp(ui, server)
Shiny applications not supported in static R Markdown documents
LS0tDQp0aXRsZTogIlZhbHVhY2nDs24gZGUgY2FzYXMiDQphdXRob3I6ICJBbmRyw6lzIEdhcmPDrWFfQTAxMTk3NDExIg0KZGF0ZTogIjkvMTkvMjAyMyINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KICAgIHRoZW1lOiAic2ltcGxleCINCiAgICBoaWdobGlnaHQ6ICJweWdtZW50cyINCi0tLQ0KIyMgSW1wb3J0YXIgZGF0b3MNCmBgYHtyfQ0KDQpkZjwtIHJlYWQuY3N2KCJIb3VzZVByaWNlRGF0YS5jc3YiKQ0KDQpgYGANCg0KIyMgTGltcGlhciBiYXNlcyBkZSBkYXRvcyANCmBgYHtyfQ0KIyDCv0N1w6FudG9zIE5BIHRlbmdvIGVuIGxhIGJhc2UgZGUgZGF0b3M/DQpzdW0oaXMubmEoZGYpKQ0KDQojIMK/Q3VhbnRvcyBOQSB0ZW5nbyBwb3IgdmFyaWFibGU/DQpzYXBwbHkoZGYsIGZ1bmN0aW9uKHgpIHN1bShpcy5uYSh4KSkpDQoNCiMgRWxpbWluYXIgTkENCmRmPC0gbmEub21pdChkZikNCg0KI0VsaW1pbmFyIGVsIHJlZ2lzdHJvIGRlbCBwcmVjaW8gYXTDrXBpY28NCmRmPC0gZGZbZGYkSG91c2VfUHJpY2U8MTIwMDAwMDAsXQ0KDQojIGVsaW1pbmFyIGVsIHJlZ2lzdHJvIGRlIGxsdXZpYSBhdMOtcGljbyANCmRmPC0gZGZbZGYkUmFpbmZhbGw+PTAsXQ0KYGBgDQoNCmBgYHtyfQ0KIyBJbnN0YWxhIHkgY2FyZ2EgbGEgYmlibGlvdGVjYSBTaGlueQ0KbGlicmFyeShzaGlueSkNCg0KDQojIERlZmluZSBsYSBpbnRlcmZheiBkZSBsYSBhcGxpY2FjacOzbiBTaGlueQ0KdWkgPC0gZmx1aWRQYWdlKA0KICB0aXRsZVBhbmVsKCJWYWx1YWNpw7NuIGRlIENhc2FzIiksDQogIHNpZGViYXJMYXlvdXQoDQogICAgc2lkZWJhclBhbmVsKA0KICAgICAgc2xpZGVySW5wdXQoIkRpc3RfVGF4aSIsICJEaXN0YW5jaWEgYWwgVGF4aToiLCBtaW4gPSAwLCBtYXggPSAyMDAwMCwgdmFsdWUgPSA4Mjc4KSwNCiAgICAgIHNsaWRlcklucHV0KCJEaXN0X01hcmtldCIsICJEaXN0YW5jaWEgYWwgTWVyY2FkbzoiLCBtaW4gPSAwLCBtYXggPSAyMDAwMCwgdmFsdWUgPSAxNjI1MSksDQogICAgICBzbGlkZXJJbnB1dCgiRGlzdF9Ib3NwaXRhbCIsICJEaXN0YW5jaWEgYWwgSG9zcGl0YWw6IiwgbWluID0gMCwgbWF4ID0gMjAwMDAsIHZhbHVlID0gMTM4NTcpLA0KICAgICAgc2xpZGVySW5wdXQoIkNhcnBldCIsICLDgXJlYSBkZSBsYSBBbGZvbWJyYToiLCBtaW4gPSAwLCBtYXggPSA1MDAwLCB2YWx1ZSA9IDE0NTUpLA0KICAgICAgc2VsZWN0SW5wdXQoIlBhcmtpbmciLCAiVGlwbyBkZSBFc3RhY2lvbmFtaWVudG86IiwNCiAgICAgICAgICAgICAgICAgIGNob2ljZXMgPSB1bmlxdWUoZGYkUGFya2luZykpLA0KICAgICAgc2VsZWN0SW5wdXQoIkNpdHlfQ2F0ZWdvcnkiLCAiQ2F0ZWdvcsOtYSBkZSBsYSBDaXVkYWQ6IiwNCiAgICAgICAgICAgICAgICAgIGNob2ljZXMgPSB1bmlxdWUoZGYkQ2l0eV9DYXRlZ29yeSkpLA0KICAgICAgc2xpZGVySW5wdXQoIlJhaW5mYWxsIiwgIkxsdXZpYToiLCBtaW4gPSAwLCBtYXggPSA1MDAsIHZhbHVlID0gMzkwKSwNCiAgICAgIHNsaWRlcklucHV0KCJCdWlsdHVwIiwgIsOBcmVhIENvbnN0cnVpZGE6IiwgbWluID0gMCwgbWF4ID0gMTAwMDAsIHZhbHVlID0gMTc2NCksDQogICAgICBhY3Rpb25CdXR0b24oInN1Ym1pdEJ0biIsICJPYnRlbmVyIFByZWNpbyIpLA0KICAgICAgaHIoKQ0KICAgICksDQogICAgbWFpblBhbmVsKA0KICAgICAgdmVyYmF0aW1UZXh0T3V0cHV0KCJwcmVkaWN0aW9uVGV4dCIpDQogICAgKQ0KICApDQopDQoNCiMgRGVmaW5lIGxhIGZ1bmNpw7NuIGRlIHNlcnZpZG9yIHBhcmEgbGEgYXBsaWNhY2nDs24gU2hpbnkNCnNlcnZlciA8LSBmdW5jdGlvbihpbnB1dCwgb3V0cHV0KSB7DQogIG1vZGVsIDwtIE5VTEwNCiAgDQogIG9ic2VydmVFdmVudChpbnB1dCRzdWJtaXRCdG4sIHsNCiAgICBkYXRvcyA8LSBkYXRhLmZyYW1lKA0KICAgICAgRGlzdF9UYXhpID0gaW5wdXQkRGlzdF9UYXhpLA0KICAgICAgRGlzdF9NYXJrZXQgPSBpbnB1dCREaXN0X01hcmtldCwNCiAgICAgIERpc3RfSG9zcGl0YWwgPSBpbnB1dCREaXN0X0hvc3BpdGFsLA0KICAgICAgQ2FycGV0ID0gaW5wdXQkQ2FycGV0LA0KICAgICAgUGFya2luZyA9IGlucHV0JFBhcmtpbmcsDQogICAgICBDaXR5X0NhdGVnb3J5ID0gaW5wdXQkQ2l0eV9DYXRlZ29yeSwNCiAgICAgIFJhaW5mYWxsID0gaW5wdXQkUmFpbmZhbGwsDQogICAgICBCdWlsdHVwID0gaW5wdXQkQnVpbHR1cA0KICAgICkNCiAgICANCiAgICAjIEdlbmVyYXIgZWwgbW9kZWxvIGRlIHJlZ3Jlc2nDs24gbGluZWFsIGNvbiBsb3MgZGF0b3MgYWN0dWFsZXMNCiAgICBtb2RlbCA8LSBsbShIb3VzZV9QcmljZSB+IERpc3RfVGF4aSArIERpc3RfTWFya2V0ICsgRGlzdF9Ib3NwaXRhbCArDQogICAgICAgICAgICAgICAgQ2FycGV0ICsgUGFya2luZyArIENpdHlfQ2F0ZWdvcnkgKyBSYWluZmFsbCArIEJ1aWx0dXAsIGRhdGEgPSBkZikNCiAgICANCiAgICBwcmVkaWN0aW9uIDwtIHByZWRpY3QobW9kZWwsIGRhdG9zKQ0KICAgIG91dHB1dCRwcmVkaWN0aW9uVGV4dCA8LSByZW5kZXJUZXh0KHsNCiAgICAgIHBhc3RlKCJQcmVjaW8gZGUgbGEgQ2FzYSBFc3RpbWFkbzoiLCByb3VuZChwcmVkaWN0aW9uLCAyKSkNCiAgICB9KQ0KICB9KQ0KfQ0KDQojIENyZWEgbGEgYXBsaWNhY2nDs24gU2hpbnkNCnNoaW55QXBwKHVpLCBzZXJ2ZXIpDQoNCmBgYA0K