首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从SAS到R的PROC NLIN

从SAS到R的PROC NLIN
EN

Stack Overflow用户
提问于 2014-09-10 02:27:52
回答 2查看 2.2K关注 0票数 3

目前,我被分配了一项工作,需要将SAS代码翻译成R。我已经成功地完成了其中80%的工作,现在我被困在使用PROC NLIN的部分。根据我所读到的,PROC NLIN被用来拟合非线性模型,andI不确定代码是否真的在这样做,因此,在R中坚持如何做它,代码如下-

代码语言:javascript
运行
AI代码解释
复制
proc nlin data=ds1 outest=estout;
 parms ET= 0 f= 10.68;
  E= f- R*(1-ET*M); 
  L   = E*E;
  model.like = sqrt(E*E);
  by Name ; 
run;

样本数据如下-

代码语言:javascript
运行
AI代码解释
复制
Name    M           R
Anna    0.5456231   4.118197
Anna    0.5359164   4.240243
Anna    0.541881    3.943975
Anna    0.5436047   3.822222
Anna    0.5522962   3.58813
Anna    0.5561487   3.513195
Anna    0.5423374   3.666507
Anna    0.525836    3.715371
Anna    0.5209941   3.805572
Anna    0.5304675   3.750689
Anna    0.5232541   3.788292

当我在SAS帮助中浏览PROC NLIN的页面时,参数' model‘被用来指定方程,但是这里的代码没有模型方程。Model.like是指定似然函数(第4316页- https://support.sas.com/documentation/cdl/en/statugnlin/61811/PDF/default/statugnlin.pdf),那么这段代码在做什么?我完全糊涂了。我,最初觉得这可以用nls()在R中完成,我尝试了以下方法-

代码语言:javascript
运行
AI代码解释
复制
fit = nls(E~ f - R*(1-eta*M),sample, start=list(eta=0,phi=10.86)
      ,trace=T)

但我很快意识到这是错误的,因为即使经过5000次迭代,模型也没有收敛。这是因为,我的数据集中没有列'E‘。那么,SAS是怎么做到的呢?任何帮助都是非常感谢的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-10 07:31:21

首先,让我们了解一下SAS代码正在做什么。PROC NLIN可以被骗到做各种最小化的问题,但设置有时是违反直觉的。您需要定义一个因变量($y$)和一个基于其他变量和一些参数($f(x,\beta$)的预测值,并且它将最小化$\sum_i y_i - f(x_i,\beta)^2$。

定义$y$和$f$的关键路线是

代码语言:javascript
运行
AI代码解释
复制
model.like = sqrt(E*E)

这相当于

代码语言:javascript
运行
AI代码解释
复制
model like = sqrt(E*E)

因此,这意味着$\sum类的- \sqrt{E\cdotE}^2$将被最小化。根据您链接的示例,我假设变量like是在前面定义的,并且它已经设置为常量0。这意味着$\sum 0- \sqrt{E\cdotE}^2 = \sum E^2$正在最小化。

E被定义为f- R*(1-ET*M),因此实际上最小化了$\sum f- R*(1-ET*M)^2$,其中fET是未知参数。我不知道这意味着什么,但事情就是这样。

将其重写为R确实可以使用nls,我们也可以使用相同的技巧:预测为零。

代码语言:javascript
运行
AI代码解释
复制
sample <- read.table(textConnection(
"Name    M           R
 Anna    0.5456231   4.118197
 Anna    0.5359164   4.240243
 Anna    0.541881    3.943975
 Anna    0.5436047   3.822222
 Anna    0.5522962   3.58813
 Anna    0.5561487   3.513195
 Anna    0.5423374   3.666507
 Anna    0.525836    3.715371
 Anna    0.5209941   3.805572
 Anna    0.5304675   3.750689
 Anna    0.5232541   3.788292"), header=TRUE)

nls(0 ~ f - R*(1-eta*M), data=sample, start=list(eta=0,f=10.86), trace=T)

带输出

代码语言:javascript
运行
AI代码解释
复制
546.5988 :   0.00 10.86
0.06273518 :  1.7259120 0.2731282
Nonlinear regression model
  model: 0 ~ f - R * (1 - eta * M)
   data: sample
   eta      f 
1.7259 0.2731 
 residual sum-of-squares: 0.06274

Number of iterations to convergence: 1 
Achieved convergence tolerance: 4.345e-07

请注意,SAS代码是运行by Name的,因此您必须确保R代码也适合每个名称的不同模型。

票数 5
EN

Stack Overflow用户

发布于 2017-07-03 15:47:56

潮汐法

代码语言:javascript
运行
AI代码解释
复制
library(tidyverse)
library(broom)

sample <- read.table(textConnection(
  "Name    M           R
  Anna    0.5456231   4.118197
  Anna    0.5359164   4.240243
  Anna    0.541881    3.943975
  Anna    0.5436047   3.822222
  Anna    0.5522962   3.58813
  Anna    0.5561487   3.513195
  Anna    0.5423374   3.666507
  Anna    0.525836    3.715371
  Anna    0.5209941   3.805572
  Anna    0.5304675   3.750689
  Anna    0.5232541   3.788292"), header=TRUE)


x <- sample %>%
  group_by(Name) %>%
  nest() %>%
  mutate(
    model = data %>% map(~nls(0 ~ f - R*(1-eta*M), data= . , start=list(eta=0,f=10.86), trace=T)),
    coef = map(model, tidy),
    quali = map(model, glance),
    resid = map(model, augment)
  )

unnest(select(x, coef))
# A tibble: 2 x 6
    Name  term  estimate std.error statistic      p.value
  <fctr> <chr>     <dbl>     <dbl>     <dbl>        <dbl>
1   Anna   eta 1.7259120 0.2260999 7.6334045 3.213398e-05
2   Anna     f 0.2731282 0.4645288 0.5879683 5.710103e-01

unnest(select(x, quali))
# A tibble: 1 x 8
       sigma isConv       finTol   logLik       AIC       BIC   deviance df.residual
       <dbl>  <lgl>        <dbl>    <dbl>     <dbl>     <dbl>      <dbl>       <int>
1 0.08348998   TRUE 4.345363e-07 12.80868 -19.61736 -18.42368 0.06273518           9
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25763070

复制
相关文章
SAS Proc transpose过程步
什么是转置?转置其实就是数据结构的转换,将横向的结构转成纵向的结构,或将纵向转向横向。 比如,在临床试验中,很多EDC系统在DataBase design时候将实验室检测那一块的实测值每一个检测项的实
Setup
2019/10/21
7.1K0
SAS Join(Proc sql) PK Merge(Data Step)
select distinct a.*,b.BIRTHDAT from ICF as a
Setup
2019/10/21
1.8K0
SAS  Join(Proc sql)  PK  Merge(Data Step)
「R」从 R 到 Rcpp
Rcpp 的主要目的在于使得开发 R 语言的 C++ 相关拓展变得更加容易、更少出错。
王诗翔呀
2022/01/21
1.1K0
「R」从 R 到 Rcpp
SAS数据处理:set,merge,proc transpose和output[返璞归真003]
不是不会动心,而是不敢动心,在感情上也小心翼翼追求腔调,不愿将就,又拒绝遭遇情伤的可能,生怕姿态低入尘埃里,迷失自己。——《装腔启示录》
归海刀刀
2023/09/27
5970
SAS数据处理:set,merge,proc transpose和output[返璞归真003]
R语言技巧:读取sas软件的sas格式文件
前面几期介绍了如下内容: 读取excel文件 对比方法 读取csv格式文件 对比方法read.csv 读取sav格式文件 读取spss 的sav格式文件 这期介绍读取sas软件的sas格式文件,代码如下: library(haven) dataset <- read_sas(NULL) View(dataset) 关于read_sas函数的具体用法,请参考其帮助文档。
努力在北京混出人样
2019/02/18
3.1K0
【学习】七天搞定SAS(七):常用统计模型
其实最后一天,反而是任务最繁重的。这一天,需要纵览SAS的各个常用的统计模块。BTW,在用惯了ggplot2之后,再也不认为有任何理由用其他软件画图了...所以SAS的图形模块自动被我无视(貌似很多SAS用户也一直在吐槽这东西着实不好使)。 SAS里面的概要统计:PROC MEANS 其实前几天也说过了PROC MEANS,不过这里稍稍补充一点置信区间的东西吧。其实它的参数真的挺多的: CLM:双侧置信区间 CSS:调整平方和 CV:变异系数 KURTOSIS:峰度 LCLM :单侧置信区间——左侧 M
小莹莹
2018/04/19
5.5K0
【学习】七天搞定SAS(七):常用统计模型
SAS or R:开源重要吗?
首先,咳咳,还是日常的开篇抱歉:由于最近大猫沉迷于Ingress无法自拔,所以原定于本期的data.table教程延后一期,咱们继续上次的系列《SAS or R:谁更适合你》,大猫来和小伙伴聊聊“开源”这件事。
用户7652506
2020/10/23
1.5K0
SAS or R:开源重要吗?
AI学的有点太快了吧【教ChatGPT学SAS 2 PROC MEANS】
上一篇文章,我们成功地教ChatGPT学会了用SAS来生成测试数据集。今天,继续让她学习SAS编程。
SAS编程未来
2023/02/28
9140
从SAS到NVMe,换个底盘就完儿事了?
从SAS过渡到NVMe,看起来很容易,是不是更换个底盘就完了?这里面其实挺复杂的。具体怎么个复杂法,笔者将以下面这款产品入手为您介绍。
用户6543014
2019/10/25
7000
从SAS到NVMe,换个底盘就完儿事了?
SAS进阶《深入解析SAS》之Base SAS基础、读取外部数据到SAS数据集
本文介绍了SAS进阶《深入解析SAS》之Base SAS基础、读取外部数据到SAS数据集,以及使用SAS/ACCESS接口引擎进行数据库访问和SQL查询的方法。
王小雷
2018/01/02
2.1K0
当我使用类比与AI对话【教ChatGPT学SAS 4 PROC FREQ】
已经成功和AI沟通过了生成测试数据集、连续型变量描述统计分析、连续型变量组间比较。
SAS编程未来
2023/03/03
4460
当我使用类比与AI对话【教ChatGPT学SAS 4 PROC FREQ】
SAS or R:谁更适合你?
大家好!新一期的大猫课堂又和大家见面啦。这次开篇先和大家说两件事:首先是感谢各位老板的打赏(好多天饭钱T_T)。大猫一开始只是对打赏这个功能很好奇,于是自己先打赏了自己一次,想看看微信后台是如何运行的。没想到后来竟然有好多老板跟着也打赏了大猫,大猫简直惊讶得合不拢嘴——只能在心里一遍遍感谢各位恩主……
用户7652506
2020/10/23
5600
SAS or R:谁更适合你?(二)
本期开始大猫将直奔主题,从“语法灵活性(Syntax)”、“性能与并行计算(Performance & Parallel Computation)”、“商业/社区支持(Support)”三个方面比较不同统计软件。本期主题是“语法灵活性(Syntax)”,首先总结我们平时做的研究具有I/O Intensive以及Interactive的特点,然后告诉大家什么样的语法才最适合具有这些特点的研究工作。
用户7652506
2020/10/23
8890
SAS or R:谁更适合你?(二)
SAS or R:谁更适合你?(三)
上一起和大家聊了SAS和R在语法上的区别,本期继续昨天的话题,从“性能与并行计算(Performance & Parallel Computation)”这个方面来比较SAS和R。性能一直是许多同学孜孜追求的目标之一,SAS和R为了实现高性能各有什么独门秘籍?易用性怎样?本期将为您揭晓
用户7652506
2020/10/23
1.3K0
SAS or R:谁更适合你?(三)
我该选择谁? | SAS R Python的比较
前几天(上周日),我在分答上回答了一个问题,问题是: Python,R,SPSS,SQL这类软件哪个最适合初学者入门以及进阶学习的顺序(以就业为导向) 语音中我从“职能方向”和“行业方向”聊了一下自己
数说君
2018/04/04
4.9K0
我该选择谁? | SAS R Python的比较
Python、 R 语言、SAS、SPSS 的优缺点比较
(致各位挚爱的数粉,因近期小编忙于处理其他急事,未能及时回复给大家资料链接,且微信公众号目前已经限制必须在48小时内回复,否则公众号后台消息发不出去,导致现在仍有很多朋友为收到资料下载链接,小编表示诚挚道歉——已按要求转发或点赞的朋友如果超过48小时以上未收到资料下载链接的,需要再次回复截图给小编,给大家带来不便敬请谅解,谢谢~) 互联网行业可能R语言是最为流行。因为R语言是开源的,所以互联网企业很多在手还有一些通迅行业的咨询公司,不过上手还是需要长期的学习; SPSS界面友好型,不过企业用正版也要很大一些
机器学习AI算法工程
2018/03/09
2.7K0
Python、 R 语言、SAS、SPSS 的优缺点比较
SAS or R:谁更适合你?(四)
上一期大猫从性能与并行计算讨论了SAS与R的区别。然而性能毕竟只是衡量一门语言的一个方面,而且对于初学者来说,面临的最大问题不是性能不够而是不知道应该从哪里开始学习。那么什么样的商业/社区支持才算是好的呢?小伙伴们继续往下看吧。
用户7652506
2020/10/23
8370
SAS or R:谁更适合你?(四)
【深度学习】从R-CNN到Mask R-CNN的思维跃迁
发现之前写R-CNN系列的文章,侧重于结构设计层面的,比较零散,我写一个侧重于从R-CNN到Mask R-CNN设计思路是如何演变的,对R-CNN、Fast R-CNN、Faster R-CNN和Mask R-CNN四篇巨作有一个宏观上的认知,R-CNN系列的思维跃迁堪称科研教科书,希望大家能从中得到一些如何做研究的启发。
黄博的机器学习圈子
2021/07/07
6360
【深度学习】从R-CNN到Mask R-CNN的思维跃迁
R语言从入门到精通:Day5
在正文内容开始之前,我先给大家推荐一个文档https://google.github.io/styleguide/Rguide.xml
用户6317549
2019/09/24
1.7K0
R语言从入门到精通:Day5
R语言从入门到精通:Day11
在上一次推文中,我们已经介绍了两组独立样本的t检验,今天我们来介绍用于常见实验设计的方差分析大全。
用户6317549
2019/09/24
1.7K0
R语言从入门到精通:Day11

相似问题

从SAS日志文件中取消PROC NLIN警告

020

如何使用SAS 9.3从nlin创建绘图?

112

将SAS GLM proc复制到R

10

用nls复制PROC NLIN输出

15

SAS NLIN中的不收敛记录

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档