楼主: zxbhappy
8307 7

求助:Stata非线性回归编程中的问题 [推广有奖]

  • 0关注
  • 0粉丝

大专生

85%

还不是VIP/贵宾

-

威望
0
论坛币
359 个
通用积分
1.7500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2571 点
帖子
11
精华
0
在线时间
118 小时
注册时间
2009-5-14
最后登录
2024-12-13

楼主
zxbhappy 发表于 2010-11-19 17:06:19 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
尝试编写stata的非线性函数定义程序对一元多次方程求解,但是调用时总是出现以下回复:

nlirr returned 198
verify that nlirr is a function evaluator program
r(198);

我把程序从头到尾检查一遍,所有应当设定的tempvar、tempname、local都没有遗漏,不知道问题出在哪里。
哪位高手遇到过这种问题,有什么解决方法呢?程序哪些地方还可能存在问题?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Stata 非线性回归 线性回归 tata 非线性 Stata 非线性回归

沙发
zxbhappy 发表于 2010-11-23 10:06:55
怎么没人回复
我是听了stata高级班后试着做的,水平有限,总是出差错。
以下是我的程序原文,麻烦哪位高手给指出错误的地方吧,感激万分啊。
cap program drop nlirr
program define nlirr
version 10.0
syntax varlist [if],at(name)
local y: word 1 of `varlist'
forvalues i=1(1)46 {
local x`i': word `i'+1 of `varlist'
}

tempname R
scalar `R'=`at'[1,1]
/*left side of the equation:sigma sum*/
forvalues j=1(1)40{
tempvar b`j'
gen double b`j'=1/(1+`R')^`j'
    }

/*right side of the equation*/
tempvar c1 c2 c3 c4 c5
gen double `c1'=((1+`R')^3-1)/`R'
gen double `c2'=((1+`R')^6-(1+`R')^3)/`R'
gen double `c3'=((1+`R')^4-1)/`R'
gen double `c4'=((1+`R')^7-(1+`R'^4))/`R'
gen double `c5'=((1+`R')^10-(1+`R')^7)/`R'
replace `y'=`x1'*`b1'+`x2'*`b2'+`x3'*`b3'+`x4'*`b4'+`x5'*`b5'+`x6'*`b6'+`x7'*`b7'+`x8'*`b8'+`x9'*`b9'+`x10'*`b10'///
+`x11'*`b11'+`x12'*`b12'+`x13'*`b13'+`x14'*`b14'+`x15'*`b15'+`x16'*`b16'+`x17'*`b17'+`x18'*`b18'+`x19'*`b19'+`x20'*`b20'///
+`x21'*`b21'+`x22'*`b22'+`x23'*`b23'+`x24'*`b24'+`x25'*`b25'+`x26'*`b26'+`x27'*`b27'+`x28'*`b28'+`x29'*`b29'+`x30'*`b30'///
+`x31'*`b31'+`x32'*`b32'+`x33'*`b33'+`x34'*`b34'+`x35'*`b35'+`x36'*`b36'+`x37'*`b37'+`x38'*`b38'+`x39'*`b39'+`x40'*`b40'///
-(`x41'*`c1'+`x42'*`c1'+`x43'*`c2'+`x44'*`c3'+`x45'*`c4'+`x46'*`c5'+1)
end

藤椅
zxbhappy 发表于 2010-11-24 16:50:06
细节决定成败,问题已解决

板凳
lqb1987 发表于 2011-3-26 14:10:04
3# zxbhappy
在哪儿听的高级班???我也想听……

报纸
pkjb110 在职认证  发表于 2012-5-8 09:49:26
生高速更

地板
primmxz 在职认证  发表于 2012-5-8 10:06:17
当然是连老师的高级班视频

7
lyj198396 发表于 2012-6-19 18:26:01
您好, 我是日本立命館亚洲太平洋大学的硕士研究生,我叫刘豫杰。

我现在正在用stata作非线性的回归分析。 可是我不知道如何使用 nl 指令输入我要非线性回归的公式。

我用的公式是逻辑斯蒂增长模型(Logistic growth model), 经转变后我把它简化为 y=b1* exp(b2*x).
我有了x和y, 希望通过非线性回归求得系数b1, b2.
请问如何用nl指令输入公式y=b1* exp(b2*x)来做非线性回归呢?


希望我的问题不会占用您太多时间,谢谢。期待着您的回复。





8
egypt2008 发表于 2015-8-13 16:50:00
哥们您好,能否帮我看看我这程序有啥错误,返回的时候跟您的出现了一样的问题,谢谢了!!
program aids
       version 13
       syntax varlist(min=8 max=8) if, at(name)
       tokenize `varlist'
       args w1 w2 w3 lnp1 lnp2 lnp3 lnp4 lnm
       tempname a1 a2 a3 a4
       scalar `a1' = `at'[1,1]
       scalar `a2' = `at'[1,2]
       scalar `a3' = `at'[1,3]
       scalar `a4' = 1 - `a1' - `a2' - `a3'
       tempname b1 b2 b3
       scalar `b1' = `at'[1,4]
       scalar `b2' = `at'[1,5]
       scalar `b3' = `at'[1,6]
       tempname g11 g12 g13 g14
       tempname g21 g22 g23 g24
       tempname g31 g32 g33 g34
       tempname g41 g42 g43 g44
           scalar `g11' = `at'[1,7]
       scalar `g12' = `at'[1,8]
       scalar `g13' = `at'[1,9]
       scalar `g14' = -`g11'-`g12'-`g13'
       scalar `g21' = `g12'
       scalar `g22' = `at'[1,10]
       scalar `g23' = `at'[1,11]
       scalar `g24' = -`g21'-`g22'-`g23'
       scalar `g31' = `g13'
       scalar `g32' = `g23'
       scalar `g33' = `at'[1,12]
       scalar `g34' = -`g31'-`g32'-`g33'
       scalar `g41' = `g14'
       scalar `g42' = `g24'
       scalar `g43' = `g34'
       scalar `g44' = -`g41'-`g42'-`g43'
quietly {
tempvar lnpindex
gen double `lnpindex' = 5 + `a1'*`lnp1' + `a2'*`lnp2' + ///
`a3'*`lnp3' + `a4'*`lnp4'
forvalues i = 1/4 {
forvalues j = 1/4 {
replace `lnpindex' = `lnpindex' + ///
0.5*`g`i'`j''*`lnp`i''*`lnp`j''
}
}
replace `w1' = `a1' + `g11'*`lnp1' + `g12'*`lnp2' + ///
`g13'*`lnp3' + `g14'*`lnp4' + ///
`b1'*(`lnm' - `lnpindex')
replace `w2' = `a2' + `g21'*`lnp1' + `g22'*`lnp2' + ///
`g23'*`lnp3' + `g24'*`lnp4' + ///
`b2'*(`lnm' - `lnpindex')
replace `w3' = `a3' + `g31'*`lnp1' + `g32'*`lnp2' + ///
`g33'*`lnp3' + `g34'*`lnp4' + ///
`b3'*(`lnm' - `lnpindex')
}
end

运行命令如下 nlsur aids @ w1 w2 w3 lnp1 lnp2 lnp3 lnp4 lnm, parameters(a1 a2 a3 b1 b2 b3 g11 g12 g13 g22 g23 g33) neq(3) ifgnls

返回时却出现错误:
nlsuraids returned 199
verify that nlsuraids is a function evaluator program

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-9 10:01