R语言贝叶斯分层、层次(Hierarchical Bayesian)模型房价数据空间分析

原文链接:https://tecdat.cn/?p=38077

本文主要探讨了贝叶斯分层模型在分析区域数据方面的应用,以房价数据为例,详细阐述了如何帮助客户利用R进行模型拟合、分析及结果解读,展示了该方法在处理空间相关数据时的灵活性和有效性。点击文末“阅读原文”获取完整代码数据)。

一、贝叶斯分层模型概述

贝叶斯分层模型(Banerjee, Carlin, and Gelfand 2004)可用于分析区域数据,当结果变量汇总到构成研究区域划分的各个区域时会产生这类数据。模型可被设定用于描述响应变量的变异性,其作为一些已知会影响结果的协变量的函数,同时还有随机效应来对协变量未解释的剩余变异进行建模。这提供了一种灵活且稳健的方法,使我们能够评估解释变量的影响、适应空间自相关,并量化所获估计值的不确定性。

常用的空间模型之一是Besag-York-Mollié(BYM)模型(Besag, York, and Mollié 1991)。假设 (Y_i) 是区域 (i = 1, \cdots, n) 观测到的结果,可使用正态分布进行建模。BYM模型设定如下:

798a20b5ebd1933e4ddc152e64a79dc9.png

在此,固定效应 (z\_i\beta) 通过与区域 (i) 对应的截距和 (p) 个协变量的向量来表示,即 (z\_i=(1, z_{i1}, \cdots, z_{ip})),系数向量为 (\beta = (\beta\_0, \cdots, \beta\_p)')。

该模型包含一个空间随机效应 (u\_i),它用于解释结果之间的空间依赖性,表明彼此接近的区域可能具有相似的值,还有一个无结构可交换分量 (v\_i) 用于对不相关噪声进行建模。空间随机效应 (u_i) 可使用内在条件自回归模型(CAR)进行建模,该模型会根据特定的邻域结构对数据进行平滑处理。具体而言:

c5e571efec3e90961bf77f5a0c8d88be.png

其中,(\overline{u}_{\delta\_i} = n\_{\delta\_i}^{-1}\sum\_{j \in \delta\_i}u\_j),这里的 (\delta\_i) 和 (n\_{\delta\_i}) 分别表示区域 (i) 的邻居集合及其邻居数量。无结构分量 (v\_i) 被建模为独立同分布的正态变量,均值为零,方差为 (\sigma^2\_v),即 (v\_i \sim N(0, \sigma^2_v))。

(一)贝叶斯推断与INLA

贝叶斯分层模型可通过多种方法进行拟合,如集成嵌套拉普拉斯近似(INLA)(Rue, Martino, and Chopin 2009)和马尔可夫链蒙特卡罗(MCMC)方法(Gelman et al. 2000)。INLA是一种在潜在高斯模型中进行近似贝叶斯推断的计算方法,它涵盖了广泛的模型,如广义线性混合模型、空间和时空模型等。INLA通过结合解析近似和数值积分来获得参数的近似后验分布,与MCMC方法相比速度非常快。

二、房价的空间建模示例

(一)波士顿的房价数据

该数据集包含了506个波士顿人口普查区的住房数据,包括自有住房中位数价格(以1000美元为单位,变量名为MEDV)、人均犯罪率(CRIM)和每户平均房间数(RM)。我们创建一个名为vble的变量,其值为中位数价格的对数,并使用mapview对该变量进行地图绘制。该地图表明房价在西部较高,且房价与相邻区域的房价相关。

0d5f889b8a6afc999caea3705abb7888.png

我们将使用人均犯罪率(CRIM)和每户平均房间数(RM)作为协变量来对中位数价格的对数进行建模。图9.2展示了使用GGally包(Schloerke et al. 2021)的  `[ggpairs()](https://ggobi.github.io/ggally/reference/ggpairs.html "ggpairs()")` 函数可视化的变量对之间的关系。我们观察到房价对数与犯罪率之间呈负相关,与平均房间数之间呈正相关。


点击标题查阅往期内容

d6adb95998f19f3ed9ceab1fee7f2f46.jpeg

课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例

outside_default.png

左右滑动查看更多

outside_default.png

01

ad374f586f225e6b4de112aa89efd42e.png

02

f959d133c40bff17e5cd60103e8a01be.png

03

24609bfb89e815c993a1807ffa91df24.png

04

5ef344fa79197babdfe966f1062a7cab.png

library(GGally)
ggpairs(data = map, columns = c("vble", "CRIM", "RM"))

0a1f1257d8a93a27d03fd7a9c0175314.png

(二)模型设定

设 (Y\_i) 为区域 (i)((i = 1, \cdots, n))的房价对数。我们拟合一个BYM模型,将 (Y\_i) 作为响应变量,犯罪率和房间数作为协变量,模型如下:

22ad3089aa4ee4a518ffe71367996fae.png

在此,(\beta\_0) 是截距,(\beta\_1) 和 (\beta\_2) 分别代表协变量犯罪率和房间数的系数。(u\_i) 是使用CAR结构建模的空间结构化效应,(u\_i|u\_{-i} \sim N(\overline{u}_{\delta\_i}, \sigma^2\_u n_{\delta\_i}))。(v\_i) 是建模为 (v\_i \sim N(0, \sigma^2\_v)) 的无结构效应。

(三)邻域矩阵

在模型中,空间随机效应 (u_i) 需要使用邻域结构来指定。在此,我们假设如果两个区域共享公共边界则它们是邻居,并使用spdep包(Bivand 2022)的函数来创建邻域结构。首先,我们使用  `[poly2nb()](https://r-spatial.github.io/spdep/reference/poly2nb.html "poly2nb()")` 函数基于具有连续边界的区域创建一个邻居列表。列表 nb 的每个元素代表一个区域,并包含其邻居的索引。例如,nb[[1]] 包含区域1的邻居。

8af1b1a714b9a7a9278bba545a35dd4d.png

然后,我们使用  `[nb2INLA()](https://r-spatial.github.io/spdep/reference/nb2INLA.html "nb2INLA()")` 函数将 nb 列表转换为一个名为 map.adj 的文件,该文件包含了R-INLA所需的邻域矩阵表示形式。map.adj 文件保存在当前工作目录中,可通过  `[getwd()](https://rdrr.io/r/base/getwd.html "getwd()")` 函数获取。然后,我们使用R-INLA的  `[inla.read.graph()](https://rdrr.io/pkg/INLA/man/read.graph.html "inla.read.graph()")` 函数读取 map.adj 文件,并将其存储在对象 g 中,稍后我们将使用该对象通过R-INLA来指定空间模型。

(四)模型公式与 inla() 调用

我们通过包含响应变量、~ 符号以及固定效应和随机效应来指定模型公式。默认情况下有一个截距,所以我们不需要在公式中包含它。在公式中,随机效应通过  `[f()](https://rdrr.io/pkg/INLA/man/f.html "f()")` 函数来指定。该函数的第一个参数是一个索引向量,用于指定适用于每个观测值的随机效应元素,第二个参数是模型名称。对于空间随机效应 (u_i),我们使用 model = "besag" 并将邻域矩阵设为 g。选项 scale.model = TRUE 用于使具有不同CAR先验的模型的精度参数具有可比性(Freni-Sterrantino, Ventrucci, and Rue 2018)。对于无结构效应 (v_i),我们选择 model = "iid"。随机效应的索引向量分别为 re_u 和 re_v,它们是为 (u\_i) 和 (v\_i) 创建的,这些向量的值为 (1, \cdots, n),其中 (n) 是区域数量。

map$re_u <- 1:nrow(map)
map$re_v <- 1:nrow(map)
formula <- vble ~ CRIM + RM +  f(re\_u, model = "besag", graph = g, scale.model = TRUE) +  f(re\_v, model = "iid")

需要注意的是,在R-INLA中,BYM模型也可通过 model = "bym" 来指定,这将同时包含空间和无结构组件。或者,我们也可以使用BYM2模型(Simpson et al. 2017),它是BYM模型的一种新参数化形式,使用了缩放后的空间组件 (u^_) 和无结构组件 (v^_):

a8ff3150de3b05aa013d1b44b1af372c.png

在该模型中,精度参数 (\tau_b > 0) 控制着 (u^_) 和 (v^_) 加权和的边际方差贡献。混合参数 (0 \leq \phi \leq 1) 衡量了空间组件 (u^*) 所解释的边际方差比例。因此,当 (\phi = 1) 时,BYM2模型等同于仅含空间的模型,当 (\phi = 0) 时,等同于仅含无结构空间噪声的模型(Riebler et al. 2017)。使用BYM2组件的模型公式指定如下:

(五)结果分析

1. 模型拟合结果概述

通过调用 inla() 函数并传入相应的公式、分布族、数据以及使用 R-INLA 中的默认先验信息完成模型拟合后,得到的结果对象 res 包含了模型的拟合情况。

我们可以使用 summary(res) 函数来获取拟合模型的概要信息。其中,res$summary.fixed 包含了固定效应的概要内容,如下所示:

res$summary.fixed

其输出结果如下:

ffaee8a78059adaea192e8243ecfea5e.png

从上述结果中我们可以观察到,截距项  的估计值为 ,其  可信区间为 (, )。而对于协变量犯罪率(CRIM),其系数估计值  为 ,对应的  可信区间为 (, ),这表明犯罪率与房价之间存在显著的负相关关系。房间数(RM)的系数  为 , 可信区间为 (, ),这意味着房间数与房价之间存在显著的正相关关系。由此可见,犯罪率和房间数这两个因素在解释房价的空间分布模式方面都起着重要作用。

2. 响应变量后验分布概要

我们还可以通过输入 res$summary.fitted.values 来获取每个区域响应变量  的后验分布概要信息。其中,“mean” 列表示后验均值,“0.025quant” 列和 “0.975quant” 列分别表示  可信区间的下限和上限,它们代表了所获得估计值的不确定性程度。其输出结果如下:

summary(res$summary.fitted.values)

404465927a470a8668f3ad08da5fc776.png

基于上述结果,我们可以进一步创建包含后验均值(PM)以及  可信区间下限(LL)和上限(UL)的变量,具体代码如下:

# 后验均值和95%可信区间
map$PM <- res$summary.fitted.values\[, "mean"\]
map$LL <- res$summary.fitted.values\[, "0.025quant"\]
map$UL <- res$summary.fitted.values\[, "0.975quant"\]

3. 绘制相关变量地图

随后,我们使用 mapview 包来创建这些变量的地图。在创建地图过程中,我们为这三张地图指定了一个通用的图例,并使用一个弹出式表格,其中包含区域名称、房价对数、协变量以及后验均值和  可信区间等信息。同时,我们利用 leafsync 包中的 sync() 函数来绘制同步地图,具体步骤如下:

首先,设置通用图例的取值范围:

# 通用图例
at <- seq(min(c(map$PM, map$LL, map$UL)),
          max(c(map$PM, map$LL, map$UL)),
          length.out = 8)

然后,创建弹出式表格:

# 弹出式表格
popuptable <- leafpop::popupTable(dplyr::mutate_if(map,
                                                    is.numeric, round, digits = 2),
                                  zcol = c("TOWN", "vble", "CRIM", "RM", "PM", "LL", "UL"),
                                  row.numbers = FALSE, feature.id = FALSE)

接着,分别创建三张地图对象 m1m2 和 m3,分别对应后验均值、下限和上限的可视化:

m1 <- mapview(map, zcol = "PM", map.types = "CartoDB.Positron",
              at = at, popup = popuptable)
m2 <- mapview(map, zcol = "LL", map.types = "CartoDB.Positron",
              at = at, popup = popuptable)
m3 <- mapview(map, zcol = "UL", map.types = "CartoDB.Positron",
              at = at, popup = popuptable)

最后,将这三张地图进行同步绘制并展示:

其生成的地图可参考下图

9c1c4734a4bc5af651e133999ce1b8ec.png

4. 获取原始房价规模的估计值

为了得到原始房价规模的估计值,我们需要对房价对数的估计值进行转换。首先,使用 inla.tmarginal() 函数来获取价格的边际分布,通过 exp(log(price)) 的方式进行转换。然后,再利用 inla.zmarginal() 函数来获取这些边际分布的概要信息。最后,创建变量 PMoriginalLLoriginal 和 ULoriginal,它们分别对应原始房价后验分布的后验均值以及  可信区间的下限和上限,具体代码如下:

# 对第一个区域的边际分布进行转换(示例)
# inla.tmarginal(function(x) exp(x),
#                res$marginals.fitted.values\[\[1\]\])

# 对所有边际分布进行转换
marginals <- lapply(res$marginals.fitted.values,
                    FUN = function(marg){inla.tmarginal(function(x) exp(x), marg)})

# 获取边际分布的概要信息
marginals_summaries <- lapply(marginals,
                              FUN = function(marg){inla.zmarginal(marg)})

# 后验均值和95%可信区间
map$PMoriginal <- sapply(marginals_summaries, '\[\[', "mean") 
map$LLoriginal <- sapply(marginals_summaries, '\[\[', "quant0.025")
map$ULoriginal <- sapply(marginals_summaries, '\[\[', "quant0.975")

同样地,我们可以基于这些变量创建地图来展示原始房价估计值及其  可信区间,以便更好地理解波士顿房价的空间分布模式以及估计值的不确定性。具体创建地图的步骤与上述类似,只是这里使用的是 PMoriginalLLoriginal 和 ULoriginal 变量,生成的地图可参考下图

27b54183ea27baca3b0e7ba1dff3d250.png

通过上述一系列的分析和可视化操作,我们能够较为全面地了解基于贝叶斯分层模型对波士顿房价数据进行建模分析的结果,以及各因素对房价空间分布的影响和估计值的不确定性情况。

f083527d5ff71e036725e11adc116bc7.jpeg

本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群! 

644f8556b2431df51482e9684466a2d7.png


资料获取

在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。

e162c2c96f5846aa623f4dab2c74c8c8.jpeg

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《R语言基于贝叶斯分层、层次模型的房价数据空间分析》。

点击标题查阅往期内容

课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例

R语言Gibbs抽样的贝叶斯简单线性回归仿真分析

python贝叶斯随机过程:马尔可夫链Markov-Chain,MC和Metropolis-Hastings,MH采样算法可视化

Python贝叶斯推断Metropolis-Hastings(M-H)MCMC采样算法的实现

Metropolis Hastings采样和贝叶斯泊松回归Poisson模型

Matlab用BUGS马尔可夫区制转换Markov switching随机波动率模型、序列蒙特卡罗SMC、M H采样分析时间序列

R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据

R语言BUGS序列蒙特卡罗SMC、马尔可夫转换随机波动率SV模型、粒子滤波、Metropolis Hasting采样时间序列分析

R语言Metropolis Hastings采样和贝叶斯泊松回归Poisson模型

R语言贝叶斯MCMC:用rstan建立线性回归模型分析汽车数据和可视化诊断

R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例

R语言贝叶斯Poisson泊松-正态分布模型分析职业足球比赛进球数

R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数

R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病

R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据

R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归

Python贝叶斯回归分析住房负担能力数据集

R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析

Python用PyMC3实现贝叶斯线性回归模型

R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型

R语言Gibbs抽样的贝叶斯简单线性回归仿真分析

R语言和STAN,JAGS:用RSTAN,RJAG建立贝叶斯多元线性回归预测选举数据

R语言基于copula的贝叶斯分层混合模型的诊断准确性研究

R语言贝叶斯线性回归和多元线性回归构建工资预测模型

R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例

R语言stan进行基于贝叶斯推断的回归模型

R语言中RStan贝叶斯层次模型分析示例

R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化

R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型

WinBUGS对多元随机波动率模型:贝叶斯估计与模型比较

R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样

R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例

R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化

视频:R语言中的Stan概率编程MCMC采样的贝叶斯模型

R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计

547bb2bf936672084ce68c02a2a762a5.jpeg

588da3c4864da9c8e71b78580c573b54.png

473bcec96770c7257def759c3ef76f53.png

9b6d5b315684b40b0930aae670a83a1f.jpeg

5ea109c073c37a267667127c6b16bc97.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/908249.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

拉取git代码不适用ssh,使用用户名及密码

最近换了新电脑&#xff0c;拉取git代码&#xff0c;提示我需要配置ssh&#xff0c;但是着实是有点麻烦了&#xff0c;所以使用用户名和密码的方式可以直接拉取 首先登陆git后找到对应项目地址&#xff0c;有ssh 和http。但是这两种都不是我们要用的地址&#xff0c;使用用户名…

第三十一章 Vue之路由(VueRouter)

目录 一、引言 1.1. 路由介绍 二、VueRouter 三、VueRouter的使用 3.1. 使用步骤&#xff08;52&#xff09; 3.2. 完整代码 3.2.1. main.js 3.2.2. App.vue 3.2.3. Friend.vue 3.2.4. My.vue 3.2.5. Find.vue 一、引言 1.1. 路由介绍 Vue中路由就是路径和组件的映…

Windows转Mac过渡指南

最近由于工作原因开始使用mac电脑&#xff0c;说实话刚拿到手的时候&#xff0c;window党表示真的用不惯。坚持用一下午之后&#xff0c;发现真的yyds&#xff0c;这篇文章说说mac电脑的基本入门指南。 1. 不会使用mac的触摸板&#xff0c;接上鼠标发现滚轮和windows是反的。 …

408——计算机网络(持续更新)

文章目录 一、计算机网络概述1.1 计算机网络的概念1.2 计算机网络体系结构1.3 总结 二、物理层2.1 物理层的基本概念2.2 物理层的基本通信技术2.3 总结 一、计算机网络概述 1.1 计算机网络的概念 计算机网络的定义&#xff1a;将地理位置不同的具有独立功能的计算机通过网络线路…

Linux下安装MongoDB

1.版本选择 偶数版本为稳定版&#xff0c;个人为了学习&#xff0c;选择较低版本5.0.30 2.下载 1. 个人使用下载社区版本 2.进入community version中 3.推荐直接使用&#xff1a;推荐用直接下载tgz方式&#xff0c;但是主要为了方便&#xff0c;后续会说一下 个人下载了sev…

无人机避障——路径规划篇(一) JPS跳点搜索算法A*算法对比

JSP 跳点搜索算法与改进 A*算法对比 一、算法概述: 跳点搜索(Jump Point Search,JPS)算法:一种用于路径规划的启发式搜索算法。它主要用于在网格地图(如游戏地图、机器人运动规划地图等)中快速找到从起点到终点的最短路径。该算法在改进 A*算法的基础上进行了优化,通过跳过一…

【热门主题】000027 React:前端框架的强大力量

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【热…

win11安装最新rabbitmq

1、安装Erlang 注意&#xff1a;RabbitMQ需要Erlang支持&#xff0c;所以要先安装Erlang&#xff0c;安装RabbitMQ版本需要与之对应的Erlang版本才行查看对应的RabbitMQ对应的Erlang 版本下载Erlang 2、安装RabbitMQ 下载 RabbitMQ Erlang和RabbitMQ安装过程一直点下一步…

distrobox install in ubuntu 22.04 / 在 ubuntu 22.04 上安装 distrobox (***) OK

要点&#xff1a; 本测试实验&#xff0c;采用的是 podman distrobox 在沙盒 snap 中&#xff0c;安装 distrobox 需要使用 --devmode 开发模式&#xff1b;可以避开 distrobox 的版本检查&#xff1f; distrobox 官方文档显示&#xff0c; Installation https://distrobox.i…

leetcode203. Remove Linked List Elements

给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 Given the head of a linked list and an integer val, remove all the nodes of the linked list that has Node.val val, and return …

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-31

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-31 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-31目录1. Large Language Models for Manufacturing摘要创新点算法模型实验效果&#xff08;包含重要数据与结论&#xff09;推荐…

【AI工作流】FastGPT - 深入解析FastGPT工作流编排:从基础到高级应用的全面指南

文章目录 一、工作流编排概述二、FastGPT的节点类型1. 基础功能插件(1) 文本输出(2) 功能调用(3) 工具(4) 外部调用(5) 其他 2. 系统插件3. 团队插件 三、工作流中的流向结语 在当今快速发展的人工智能领域&#xff0c;工作流编排的能力已成为提升用户体验和应用效率的关键因素…

NVR批量管理软件/平台EasyNVR多个NVR同时管理支持对接阿里云、腾讯云、天翼云、亚马逊S3云存储

随着云计算技术的日益成熟&#xff0c;越来越多的企业开始将其业务迁移到云端&#xff0c;以享受更为灵活、高效且经济的服务模式。在视频监控领域&#xff0c;云存储因其强大的数据处理能力和弹性扩展性&#xff0c;成为视频数据存储的理想选择。NVR批量管理软件/平台EasyNVR&…

光通信——WDM/DWDM/CWDM

一、WDM 波分复用原理&#xff1a;将光纤的低损耗窗口可使用的光谱带宽分割为若干子带宽&#xff0c;然后将待传递的电信号调制到各个子带宽的中心波长光载波上同时传输&#xff0c;是一种能在一根光纤中同时实现多波长信道传输的扩容技术。 WDM复用系统可以分为单向和双向两种…

优化EDM邮件营销,送达率与用户体验双赢

EDM邮件营销需选对平台&#xff0c;优化邮件列表&#xff0c;确保内容优质&#xff0c;进行邮件测试&#xff0c;关注用户反馈调整频率&#xff0c;以保高送达率&#xff0c;提升营销效果。 1. 了解电子邮件送达率的重要性 在开始优化邮件送达率之前&#xff0c;首先需要理解电…

TypeScript起航篇·何为TypeScript?

你好&#xff0c;我是安然无虞。 文章目录 什么是 TypeScriptTypeScript 的特性类型系统TypeScript 是静态类型TypeScript 是弱类型总结: 什么是 TypeScript Hello TypeScript 什么是 TypeScript Typed JavaScript At Any Scale. 添加了类型系统的JavaScript&#xff0c;适用…

鸿蒙系统的优势 不足以及兼容性与未来发展前景分析

2024 年 10 月 22 日&#xff1a;华为正式发布原生鸿蒙操作系统 HarmonyOS next&#xff0c;并正式命名为 HarmonyOS 5&#xff0c;这是鸿蒙系统史上最大的升级&#xff0c;实现了国产操作系统从底层架构到应用生态的全面自主可控。 鸿蒙系统与安卓、iOS 相比&#xff0c;具有…

基于凌鸥LKS32MC037鱼缸用FOC潜水泵控制器

随着老百姓生活水平的提高&#xff0c;室内养殖观赏型鱼类的人越来越多&#xff0c;这就催生了鱼缸内小型潜水泵的市场发展。 早期鱼缸潜水泵都采用的方波驱动的控制器。随着技术的进步和芯片成本的下降&#xff0c;本文介绍的基于无感FOC算法潜水泵控制器已经成熟应用并且大批…

WMV怎么转MP4?五个简单好用的视频格式转换方法!

WMV格式&#xff0c;全称为Windows Media Video&#xff0c;是由微软公司开发的一种视频文件格式。采用先进的视频压缩技术&#xff0c;能够在保持较高视觉质量的同时&#xff0c;显著减小文件体积&#xff0c;经常被用于在网络环境下即时观看或收听高质量的音视频内容。同时&a…

unity搭建场景学习

unity搭建场景学习 创建场景创建gameobject创建材质&#xff0c;用于给gameobject上色拖拽材质球上色上色原理设置多个材质方式设置贴图的方式 效果设置光滑度一些预览设置菜单渲染模型与碰撞模型网格渲染参数1. materials(材质)2. lighting(光照)3. reflection probes(反射探针…