我想模拟工厂接受x吨原材料的输入,然后进行处理。在第一步中,除去废料,并产生产品P1。对于"休息"对材料进行再次处理,然后创建另一个产品P2。
问题在于我想知道生产1吨产品P1需要多少原材料以及生产1吨P2需要多少原材料。
我知道原料的数量,成品P1和P2的数量,但仅此而已。
在我看来,这可以通过多元回归建模,使用P1和P2作为因变量,将总原料作为自变量,并找出每个成品的因子< 1。这看起来是对的吗?
另外,如何使用R实现这一目标?通过谷歌搜索,我发现了如何进行多变量回归,但没有在R中进行多 variate 回归。
提前致谢!
编辑:
尝试使用:
datas <- read.table("datass.csv",header = TRUE, sep=",")
rawMat <- matrix(datas[,1])
P1 <- matrix(datas[,2])
P2 <- matrix(datas[,3])
fit <- lm(formula = P1 ~ rawMat)
fit
fit2 <-lm(formula = P2~rawMat)
fit2
给了我一些肯定不符合现实的结果。例如,Fit2返回0,1381,其值应为0.8左右。我怎样才能考虑Y1?例如,Fit2或多或少给了我平均的P2 / RawMat,但是RawMat与用于生产两种产品的原材料相同,所以我希望有一些像0,8这样的因子用于P1,并且大约相同P2的因素。
R输出仅为:
Coefficients:
(Intercept) rawMat
-65.6702 0.1381
for fit2。为什么它不包括&#34; rawMat1&#34;,&#34; rawMat2&#34;如J.R。的解决方案?
EDIT2:datass.csv包含3列 - 第一列包含产生P1和P2所需的rawMaterial,第二列表示P1产生的吨数,最后一列表示P2的相同
答案 0 :(得分:2)
多变量多元回归可以由lm()
完成。这是非常详细的记录,但下面是一个小例子:
rawMat <- matrix(rnorm(200), ncol=2)
noise <- matrix(rnorm(200, 0, 0.2), ncol=2)
B <- matrix( 1:4, ncol=2)
P <- t( B %*% t(rawMat)) + noise
fit <- lm(P ~ rawMat)
summary( fit )
带摘要输出:
Response Y1 :
Call:
lm(formula = Y1 ~ rawMat)
Residuals:
Min 1Q Median 3Q Max
-0.50710 -0.14475 -0.02501 0.11955 0.51882
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.007812 0.019801 -0.395 0.694
rawMat1 1.002428 0.020141 49.770 <2e-16 ***
rawMat2 3.032761 0.020293 149.445 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.1978 on 97 degrees of freedom
Multiple R-squared: 0.9964, Adjusted R-squared: 0.9963
F-statistic: 1.335e+04 on 2 and 97 DF, p-value: < 2.2e-16
Response Y2 :
Call:
lm(formula = Y2 ~ rawMat)
Residuals:
Min 1Q Median 3Q Max
-0.60435 -0.11004 0.02105 0.11929 0.42539
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.02287 0.01930 1.185 0.239
rawMat1 2.05474 0.01964 104.638 <2e-16 ***
rawMat2 4.00162 0.01978 202.256 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.1929 on 97 degrees of freedom
Multiple R-squared: 0.9983, Adjusted R-squared: 0.9983
F-statistic: 2.852e+04 on 2 and 97 DF, p-value: < 2.2e-16
EDIT!:
对于名为data.frame
的{{1}},您可以执行以下操作:
datas
或者代替:
datas <- data.frame( y1 = P[,1], y2=P[,2], x1 = rawMat[,1], x2 = rawMat[,2])
fit <- lm( as.matrix(datas[ ,1:2]) ~ as.matrix(datas[,3:4]) )