m0_74193436 2024-05-31 15:35 采纳率: 54.5%
浏览 3

R语言代码的动态展示

要求:修改代码使其采用动态交互或动画形式展示


案例1:为研究高等院校人文社会科学研究中立项课题数会受哪些因素的影响,收集199931个省市自治区部分高校有关社科研究方面的数据(相关回归分析(高校科研研究).sav),研究立项课题数(当年)与投入的具有高级职称的人年数(上年)、发表的论文数(上年)之间的关系。
(1)    首先可绘制矩阵散点图进行初步分析。
(2)可通过计算pearson简单相关系数分析变量间线性相关性的强弱。
(3)这里被解释变量为立项课题数(X5),解释变量为投入人年数(X2),投入高级职称的人年数(X3),投入科研事业费(X4),专著数(X6),论文数(X7),获奖数(X8)。
a)    解释变量筛选策略先采用强制进入策略,并做多重共线性检测。
b)    重新建立回归方程,采用向后筛选策略完成解释变量的选择,观测每一步检验的变化情况。
案例2:商业协会收集了最近一年来20个城市的5项指数指标(20个城市的5项指数.xls),根据这些数据建立回归模型,用房屋、公用设施、交通运输和保健指数来预测生活日用品指数,对结果进行讨论,并指出显著和不显著的解释变量。
案例3:为研究居民家庭教育支出和消费性支出之间的关系,收集到1978年至2002年全国人均消费性支出和教育支出的数据。(数据文件:相关回归分析(年人均消费支出和教育.sav)
  (1)首先绘制教育支出和消费性支出的散点图,观察散点图发现两变量之间呈非线性关系,可尝试选择二次、三次曲线、复合函数和幂函数模型,利用曲线估计对1990年到2002年数据进行本质线性模型分析。其中,教育支出为被解释变量,消费性支出为解释变量。
  (2)利用1981年到2002年的数据绘制就餐费用和年份之间散点图和线图,对居民未来在外就餐费用的趋势进行分析和预测;尝试选择二次、三次曲线、复合函数和幂函数模型,利用曲线估计对年份和就餐费用进行本质线性模型分析。


install.packages("foreign")
install.packages("car")
install.packages("sandwich")

# 加载包
library(foreign)
library(car)
library(sandwich)
# 读取SPSS数据
data <- read.spss("C:\\Users\\ASUS\\Desktop\\南京理工大学\\R语言\\实验课\\实验四线性回归建模\\数据及代码\\相关回归分析(高校科研研究).sav", to.data.frame = TRUE)

# 查看数据摘要
summary(data)
data
# 绘制散点图矩阵
pairs(data[, c("X2", "X3", "X4", "X5", "X6", "X7", "X8")])

# 计算Pearson相关系数
cor_matrix <- cor(data[, c("X2", "X3", "X4", "X5", "X6", "X7", "X8")], method = "pearson")
cor_matrix
# 使用强制进入策略建立初始回归模型
full_model <- lm(X5 ~ X2 + X3 + X4 + X6 + X7 + X8, data = data)
summary(full_model)

# 检查多重共线性
vif(full_model)

step_model <- step(full_model, direction = "backward")
summary(step_model)

# 查看每一步的检验结果
coefficients(step_model, vcov = vcovHC(step_model, type = "HC1"))


#案例二
library(readxl)
data=read.csv(file = "C:\\Users\\ASUS\\Desktop\\南京理工大学\\R语言\\实验课\\实验四线性回归建模\\数据及代码\\CI (1).xlsx",header=TRUE,quote="\\",dec=".",fill=TRUE)
print(data)
# 建立线性回归模型
model <- lm(日用品~ 房.屋+公用设施+交通运输+保.健, data = data)

# 输出模型摘要
summary(model)

# 根据summary输出讨论显著性和不显著性的解释变量
# 通常,如果某个解释变量的p-value小于0.05,则可以认为它在统计上是显著的
significant_vars <- which(summary(model)$coefficients[, "Pr(>|t|)"] < 0.05)
not_significant_vars <- which(!significant_vars)

# 输出显著和不显著的变量
cat("显著的解释变量有:")
names(significant_vars)
cat("\n不显著的解释变量有:")
names(not_significant_vars)

#案例三
library(foreign)
library(ggplot2)

data=read.spss("C:\\Users\\ASUS\\Desktop\\南京理工大学\\R语言\\实验课\\实验四线性回归建模\\数据及代码\\相关回归分析(年人均消费支出和教育).sav",to.data.frame=TRUE)
data
data1 <- data[, c("NF", "X2", "X5")]
# 重命名列名
colnames(data1) <- c("年份", "消费性支出", "教育支出")
# 绘制散点图
ggplot(data1, aes(x = 消费性支出, y = 教育支出)) +
  geom_point() +
  labs(x = "consumption", y = "Education") +
  theme_minimal()
# 拟合二次曲线模型
model_quadratic <- lm(教育支出 ~ 消费性支出 + I(消费性支出^2), data = data1)
new_data <- data.frame(消费性支出 = seq(min(data1$消费性支出), max(data1$消费性支出), length.out = 100))
new_data$教育支出 <- predict(model_quadratic, newdata = new_data)

# 绘制散点图和拟合的二次曲线
ggplot(data1, aes(x = 消费性支出, y = 教育支出)) +
  geom_point() +
  geom_line(data = new_data, aes(x = 消费性支出, y = 教育支出), color = "red") +
  labs(x = "consumption", y = "Education") +
  theme_minimal()
# 提取所需的列(年份、就餐费用)
data2 <- data[data$NF >= 1981 & data$NF <= 2002, c("NF", "X4")]


# 重命名列名
colnames(data2) <- c("年份", "就餐费用")
# 绘制散点图
plot(data2$年份, data2$就餐费用, xlab = "Year", ylab = "Eat", main = "年份与就餐费用的关系", pch = 16)
# 拟合二次曲线模型
model_quadratic <- lm(就餐费用 ~ 年份 + I(年份^2), data = data2)
# 预测未来就餐费用
future_years <- seq(2003, 2030, by = 1)
predicted_data <- data.frame(年份 = future_years)
predicted_data$就餐费用 <- predict(model_quadratic, newdata = predicted_data)

# 绘制拟合的二次曲线
lines(predicted_data$年份, predicted_data$就餐费用, col = "red", lwd = 2)

# 输出拟合模型的系数
coefficients(model_quadratic)
  • 写回答

1条回答 默认 最新

  • 阿里嘎多学长 2024-05-31 15:37
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    要将R语言的静态代码转换为动态交互或动画形式的展示,你可以使用一些R包,如shiny, plotly, gganimate, 和 leaflet等。以下是一些指导和代码示例,帮助你实现动态展示:

    1. 案例1:高校科研研究数据的动态展示

    动态矩阵散点图

    使用ggplot2gganimate包来创建动态散点图。

    library(ggplot2)
    library(gganimate)
    
    # 假设data是你的数据框
    p <- ggplot(data, aes_string(x = "X2", y = "X3")) +
      geom_point() +
      transition_states(X2, transition_length = 2, state_length = 1)
    
    animate(p, nframes = 50, fps = 10)
    

    动态Pearson相关系数计算

    使用shiny包创建一个交互式应用,让用户选择变量并显示相关系数。

    library(shiny)
    
    ui <- fluidPage(
      selectInput("var1", "Select Variable 1:", names(data)),
      selectInput("var2", "Select Variable 2:", names(data)),
      textOutput("cor_result")
    )
    
    server <- function(input, output) {
      output$cor_result <- renderText({
        cor_value <- cor(data[[input$var1]], data[[input$var2]], method = "pearson")
        paste("Correlation:", round(cor_value, 2))
      })
    }
    
    shinyApp(ui, server)
    

    动态回归模型展示

    使用shiny展示回归模型的每一步。

    # 继续使用上面的shinyApp结构
    server <- function(input, output) {
      # ... 其他代码 ...
      output$model_summary <- renderPrint({
        step_model <- step(full_model, direction = "backward", scope = list(lower = ~1))
        summary(step_model)
      })
    }
    

    2. 案例2:20个城市5项指数指标的动态展示

    使用leafletshiny创建一个交互式地图和应用。

    library(leaflet)
    library(shiny)
    
    ui <- fluidPage(
      leafletOutput("map")
    )
    
    server <- function(input, output) {
      output$map <- renderLeaflet({
        leaflet() %>%
          addTiles() %>%
          addCircles(data = data, lng = ~Longitude, lat = ~Latitude, popup = ~City)
      })
    }
    
    shinyApp(ui, server)
    

    3. 案例3:居民家庭教育支出和消费性支出的动态展示

    使用plotly创建动态散点图和曲线。

    library(plotly)
    
    # 创建动态散点图
    p <- plot_ly(data1, x = ~消费性支出, y = ~教育支出, type = "scatter", mode = "markers") %>%
      animation_frame(年份)
    
    p
    

    对于曲线估计,你可以使用shiny让用户选择不同的模型,并动态更新图表。

    # 使用shinyApp结构
    server <- function(input, output) {
      output$plot <- renderPlotly({
        # 根据用户选择的模型动态生成plotly对象
      })
    }
    

    参考资料

    请注意,上述代码仅为示例,你需要根据你的具体数据和需求进行调整。动态展示的创建可能需要一定的学习和实验,但上述资源和示例代码应该能为你提供一个良好的起点。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月31日

悬赏问题

  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)
  • ¥15 船舶旋回实验matlab
  • ¥30 SQL 数组,游标,递归覆盖原值
  • ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
  • ¥20 gitlab 中文路径,无法下载
  • ¥15 用动态规划算法均分纸牌
  • ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据