# 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)